2013-01-31 42 views
4

假设我想在vim中创建一个将调用ex命令作为其工作一部分的映射。假设ex命令将一个寄存器名称作为输入。将映射中的寄存器名称传递给ex命令

这里是一个玩具例如:

nmap <leader>p :put x 

问题存在这样的“x”寄存器将总是被使用。 但是打字的时候,我希望能写:

"a<leader>p 

要使用的 'a' 登记,或:

"b<leader>p 

使用 'B' 注册。

有没有一种方法可以将'当前正常模式寄存器'传递给'ex'命令?

回答

6

啊,我明白了。

诀窍是在映射中使用<expr>

所以,我的例子中,答案是:

nnoremap <expr> <leader>p ':put ' . v:register . '<CR>' 

检查:h map-expression:h v:register获取更多信息。

+0

[Use'nnoremap'。](http://learnvimscriptthehardway.stevelosh.com/chapters/05.html) – ZyX

+0

@ZyX:好点;更新 – jwd