Vim在vimrc中重映射时执行代码

时间:2011-11-02 14:15:38

标签: vim

我在 vimrc 文件中创建了以下映射:

noremap <C-p> ! firefox -new-tab http://php.net/<cword><C-m>

问题是它会继续删除光标下的行。

如何使此映射正常工作?

2 个答案:

答案 0 :(得分:2)

如果我明白你要做什么,以下应该有效:

nmap <c-p> :!firefox  -new-tab http://php.net/<c-r>=expand('<cword>')<CR><CR>

有关详细信息,请参阅docs

答案 1 :(得分:2)

您正在使用noremap,这意味着它会触发:

  • 在正常模式下
  • 在视觉模式下
  • 处于运营商待定模式。

您应该使用nnoremapxnoremap代替。另请注意,!:.!在正常模式下(对当前行有效)和:'<,'>!在可视模式下的快捷方式(对当前可视选择的行进行操作)。如果您不想要:

nnoremap <c-p> :!firefox ... 
xnoremap <c-p> :<c-u>!firefox ...