假设我想在vim中创建一个地图,它将调用ex命令作为其工作的一部分.并假设ex命令将寄存器名称作为输入.
这是一个玩具示例:
nmap <leader>p :put x
Run Code Online (Sandbox Code Playgroud)
问题是总是会使用'x'寄存器.但在打字时,我希望能够写:
"a<leader>p
Run Code Online (Sandbox Code Playgroud)
要使用'a'寄存器,或者:
"b<leader>p
Run Code Online (Sandbox Code Playgroud)
使用'b'寄存器.
有没有办法可以将'当前正常模式寄存器'传递给'ex'命令?
啊,我明白了.
诀窍是<expr>在映射中使用.
所以,对于我的例子,答案是:
nnoremap <expr> <leader>p ':put ' . v:register . '<CR>'
Run Code Online (Sandbox Code Playgroud)
检查:h map-expression并:h v:register获取更多信息.