15

当我按下dvim 时,我的状态栏说d并无限等待进一步的指示。

当我按下我的领导者(,为我)时,它会等待输入一段时间然后超时。

如何禁用此功能,并让它无限期地等待进一步的说明?

4

1 回答 1

17

来自:help ttimeout

'timeout', 'to', 'notimeout', 'noto'
boolean (default on)
global
                               
'ttimeout', 'nottimeout'                                               
boolean (default off)
global
{not in Vi}

这两个选项共同决定了在接收到部分映射键序列或键盘代码时的行为:

暂停 超时 行动
离开 离开 不要超时
开或关 超时:映射和关键代码
离开 关键代码超时

如果这两个选项都关闭,Vim 将等待直到接收到完整的映射或键序列,或者很明显没有接收到的字符的映射或键序列。例如:如果你已经映射了 "vl" 并且 Vim 已经收到了 'v',需要下一个字符来查看 'v' 后面是否跟着一个 'l'。当其中一个选项打开时,Vim 将等待大约 1 秒以等待下一个字符到达。之后,已经接收到的字符被解释为单个字符。可以使用“timeoutlen”选项更改等待时间。

在慢速终端或非常繁忙的系统上超时可能会导致光标键出现故障。如果两个选项都关闭,如果有以 . 开头的键码,Vim 会在输入后永远等待。您将不得不输入两次。如果您对键码没有问题,但希望 :mapped 键序列不会在 1 秒内超时,请设置 'ttimeout' 选项并重置 'timeout' 选项。

注意:当设置 'compatible' 时,'ttimeout' 会被重置。

从评论:

基本上,ESC 是箭头和其他控制序列的“领导者”,因此您可能必须按 ESC 两次而不是一次。——@安东·科瓦连科

运行set notimeoutset ttimeout解决了我的问题。– @nightcracker

于 2014-10-30T15:37:40.977 回答