我的vimrc中有以下几行:
noremap g b
vnoremap g b
这些的目标非常明确:每当按下g时,向左移动一个单词。
我的问题是在vim执行移动之前有大约1/2秒的延迟。好像vim正在等我输入一个加法命令。
我知道vim在期待更多信息时会做这种事情。但是,这是我唯一一个涉及g的重映射的情况,因此不太可能出现这种情况。
其他人似乎遇到了类似的问题:Eliminating lag when remapping 'd' key in VIM
但还没有人提供解决方案。
有什么想法吗?
答案 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
开头的常规模式键绑定,例如(gg
,gd
,gf
,gq
,...)和当然vim必须等到它知道你开始输入的内容。
这是一种在不破坏其他映射的情况下无法真正解决的问题。