当我在vim中按下d键时,我的状态行会显示d
字母并无限等待进一步的指令。
当我按下我的leader键(对我来说是,),它会等待一段时间后超时。
我该如何禁用这个功能,并使其无限期地等待进一步的指令?
当我在vim中按下d键时,我的状态行会显示d
字母并无限等待进一步的指令。
当我按下我的leader键(对我来说是,),它会等待一段时间后超时。
我该如何禁用这个功能,并使其无限期地等待进一步的指令?
来自:help ttimeout
:
'timeout', 'to', 'notimeout', 'noto'
boolean (default on)
global
'ttimeout', 'nottimeout'
boolean (default off)
global
{not in Vi}
这两个选项一起确定了当接收到映射键序列或键盘代码的一部分时的行为:
超时 | ttimeout | 操作 |
---|---|---|
关闭 | 关闭 | 不超时 |
开启 | 开启或关闭 | 在:mappings和键代码上超时 |
关闭 | 开启 | 在键码上超时 |
如果两个选项都关闭,Vim将等待直到完整的映射或键序列已被接收,或者清楚地知道没有映射或键序列与接收到的字符匹配。例如:如果您已经映射了"vl"并且Vim已经接收到'v',则需要下一个字符来判断'v'后面是否跟着'l'。
当其中一个选项开启时,Vim将等待约1秒钟以等待下一个字符到达。此后,已经接收到的字符将被解释为单个字符。等待时间可以通过'timeoutlen'选项更改。
在速度较慢的终端或非常繁忙的系统中,超时可能会导致光标键失灵。如果两个选项都关闭,则Vim在输入后永久等待,如果有以<Esc>开头的键码,则必须键入<Esc><Esc>。如果您没有与键码相关的问题,但希望:mapped键序列不在1秒内超时,请设置'ttimeout'选项并重置'timeout'选项。
注意:当设置了“compatible”时,“ttimeout”会被重置。
来自注释:
基本上,<Esc>是箭头和其他控制序列的“前导符号”,因此您可能需要按两次<Esc>而不是一次。- @Anton Kovalenko
运行
set notimeout
和set ttimeout
解决了我的问题。- @nightcracker
:help 'ttimeout'
可以很有用。 - Anton Kovalenkotimeout
和ttimeout
之间的区别也不太清楚。 - orlpset notimeout
和set ttimeout
解决了我的问题,如果你把这个作为答案添加进去,你将会得到+1并且被接受的答案。 - orlp,x
和,xy
,因为 Vim 不会区分,x
+y
或者,xy
,所以它会变得非常烦人。但是我不建议以这种方式使用映射。你也可以考虑设置一个较高的超时时间。 - Daan Bakker