您的问题似乎与'timeout'
选项及其朋友'timeoutlen'
, 'ttimeout'
, 'ttimeoutlen'
.
尝试这个命令:
:set timeout timeoutlen=3000 ttimeoutlen=100
它取自:h 'ttm
:
仅当“timeout”和“ttimeout”选项时才会发生超时
这么说吧。一个有用的设置是:set timeout timeoutlen=3000
ttimeoutlen=100(三秒后映射超时,超时
十分之一秒后的按键代码)。
就我个人而言,我使用这些设置:
set timeout
set ttimeout
set timeoutlen=3000
set ttimeoutlen=50
前 2 个命令分别启用映射和键码超时。
第三条命令set timeoutlen=3000
告诉 Vim 等待3s
让我完成映射左侧的输入。
第四条命令set ttimeoutlen=50
告诉 Vim 只需要等待50ms
完成一系列键码。例如,在我的机器上,F1
产生键码序列Escape O P
(通过输入确认C-v F1
在插入模式下,显示^[OP
; ^[
代表Escape
).
您最初的问题可能来自于您的价值这一事实'ttimeoutlen'
选项太高,因此一系列键码的超时不会很快发生,这使得 Vim 有时会将您键入的一系列击键解释为由您未按下的其他键产生的。通过降低其值,您可以防止这种情况发生。
如果即使您在中设置了之前的选项,问题仍然存在vimrc
,之后插件可能会更改它们。
在这种情况下,当您的问题再次出现时,请键入以下命令:
:verb set timeout?
:verb set ttimeout?
:verb set timeoutlen?
:verb set ttimeoutlen?
它们中的每一个都会告诉您选项的当前值,但更重要的是它会告诉您更改该值的最后一个文件的名称。