Vim - How to make your own mapping repeatable?

不羁岁月 提交于 2019-12-04 03:28:22

问题


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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!