Vim - 如何使您自己的映射可重复?

Hot*_*hke 5 vim vim-plugin

我在我的vimrc中有以下映射:

nmap <Leader>h1 yyp<c-v>$r=
nmap <Leader>h2 yyp<c-v>$r-
Run Code Online (Sandbox Code Playgroud)

我想重复<Leader>h1/2 使用.

Tim Pope 存在repeat.vim插件,具有以下用法

silent! call repeat#set("\<Plug>MyWonderFulMap", v:count)
Run Code Online (Sandbox Code Playgroud)

我尝试以下列方式使用它:

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

这是行不通的.

我知道这不是一个严重的并发症,但是,我有兴趣使用repeat.vim进行自己的映射.

Ing*_*kat 7

repeat#set()调用必须映射后进行调用映射后,不只是一次定义.有了:normal,你必须用它包装:execute以便能够附加:call,但实际上你的映射根本不需要使用:normal:

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