繁体   English   中英

如何在 Vim 的普通模式映射中交换分号和冒号键?

[英]How to swap the semicolon and colon keys in Normal-mode mappings in Vim?

为了让自己使用较短的按键来获得冒号,我在.vimrc文件中定义了以下映射:

noremap ; :
noremap : ;

但是,这破坏了我的其他一些映射,因为现在它将冒号解释为分号。 例如,映射

map ,c :cd ~/code<CR>

变成

map ,c ;cd ~/code<CR>

我怎样才能解决这个问题?

:map系列的命令解释映射定义中的字符,就好像它们是由用户键入的一样,以便像往常一样触发当前定义的任何映射(包括正在定义的映射)。 这就是在必要时可以定义递归或嵌套映射的原因。 这也是为什么冒号映射被应用于通过:map定义的其他映射,就像你的例子中的那个:

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

要避免这种行为,请使用:noremap命令系列,它们不会解释映射定义右侧的任何映射(请参阅:help :nore ):

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

在大多数情况下,这种对其他映射的干扰是一种不良的副作用。 根据经验,我建议在定义新映射时遵循以下约定:

始终使用:noremap命令系列,除非有明确的理由不这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM