问题
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.
回答1:
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
来源:https://stackoverflow.com/questions/17165805/vim-how-to-make-your-own-mapping-repeatable