vimrc交换分号和冒号但在其他<map> s </map>中保持冒号不变

时间:2012-03-31 00:47:41

标签: vim

我有

noremap ; :
noremap : ;

设置为尝试让我使用较短的击键来获取冒号。然而,这使得我的其他映射不起作用,因为它现在放了一个分号而不是冒号。

map ,c :cd ~/code<CR>例如变为map ,c ;cd ~/code<CR>因此无效。我怎样才能解决这个问题? 谢谢!

1 个答案:

答案 0 :(得分:8)

:map系列的命令允许在中使用映射 新映射的定义(包括其自身)。它使递归和 必要时可以嵌套映射。这就是冒号映射的原因 应用于具有冒号字符的其他映射,如

:map ,c :cd ~/code<cr>

要避免此行为,请使用:noremap系列命令 不解释映射右侧的任何映射 定义(见:help :no):

:noremap ,c :cd ~/code<cr>

在大多数情况下,干扰其他映射是一个不受欢迎的方面 影响。根据经验,我建议一个人去 引入映射时遵循约定:使用:noremap 功能,除非有明确的理由不这样做。