为什么Vim延迟这个重映射的密钥?我该如何解决?

时间:2014-10-16 03:04:31

标签: vim

我的vimrc中有以下几行:

noremap g b vnoremap g b

这些的目标非常明确:每当按下g时,向左移动一个单词。

我的问题是在vim执行移动之前有大约1/2秒的延迟。好像vim正在等我输入一个加法命令。

我知道vim在期待更多信息时会做这种事情。但是,这是我唯一一个涉及g的重映射的情况,因此不太可能出现这种情况。

其他人似乎遇到了类似的问题:Eliminating lag when remapping 'd' key in VIM

但还没有人提供解决方案。

有什么想法吗?

2 个答案:

答案 0 :(得分:7)

如果我这样做并使用vim -u NONE -N启动vim,我无法复制该行为。进一步看,这似乎是由netrw插件引起的,该插件映射gx键以及映射g%的matchit插件。 (您可以使用:verbose :map g进行检查,看看是否存在可能导致此问题的其他不明确的g映射以及定义它们的位置(通过使用:verbose)。

因此,为了防止这种情况,您应该取消映射这些映射,然后g无延迟地工作。但正如progo已经说过的那样,你丢失了所有那些漂亮的内置g<x>命令,因此我不建议将g映射到

另请注意,最近的vims具有<nowait>修饰符,因此您可以执行noremap <nowait> g b并且不会发生延迟。

答案 1 :(得分:3)

但是vim 期待更多信息。有许多以g开头的常规模式键绑定,例如(gggdgfgq,...)和当然vim必须等到它知道你开始输入的内容。

这是一种在不破坏其他映射的情况下无法真正解决的问题。