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

but*_*bat 9 vim

我有

noremap ; :
noremap : ;
Run Code Online (Sandbox Code Playgroud)

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

map ,c :cd ~/code<CR>例如变得map ,c ;cd ~/code<CR>如此不起作用.我怎样才能解决这个问题?谢谢!

ib.*_*ib. 8

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

:map ,c :cd ~/code<cr>
Run Code Online (Sandbox Code Playgroud)

要避免此行为,请使用:noremap命令族,这些命令不解释映射定义右侧的任何映射(请参阅参考资料:help :no):

:noremap ,c :cd ~/code<cr>
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,干扰其他映射是不希望的副作用.根据经验,我建议在引入映射时遵循以下约定::noremap 除非有明确的理由,否则请使用函数.