Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Vim - How to make your own mapping repeatable?

Tags:

vim

vim-plugin

I have following mappings in my vimrc:

nmap <Leader>h1 yyp<c-v>$r=
nmap <Leader>h2 yyp<c-v>$r-

I'd like to repeat <Leader>h1/2 with .

There exist the repeat.vim plugin by Tim Pope with following usage line

silent! call repeat#set("\<Plug>MyWonderFulMap", v:count)

I tried using it in the following way:

nnoremap <silent> <Plug>MyWonderfulMap :normal yyp<c-v>$r=
silent! call repeat#set("\<Plug>MyWonderfulMap", v:count)
nmap <Leader>h1 <Plug>MyWonderfulMap

It does not work.

I know it is not a serious complication, however, I am interested to use the repeat.vim for own mappings.

like image 784
Hotschke Avatar asked Jun 18 '13 09:06

Hotschke


1 Answers

The repeat#set() invocation must be done after the mapping invocation, not just once after the mapping definition. With :normal, you'd have to wrap this with :execute to be able to append the :call, but actually your mapping doesn't need to use :normal at all:

:nnoremap <silent> <Plug>MyWonderfulMap yyp<c-v>$r=:silent! call repeat#set("\<Plug>MyWonderfulMap", v:count)<CR>
:nmap <Leader>h1 <Plug>MyWonderfulMap
like image 141
Ingo Karkat Avatar answered Sep 18 '22 12:09

Ingo Karkat