为什么每当我使用“O”命令(在上面打开一个新行并插入)时 vim 都会延迟一秒钟?

为什么每当我使用“O”命令(在上面打开一个新行并插入)时 vim 都会延迟一秒钟?

当我使用大多数命令时,它们都会立即生效。O但是,当我使用该命令时,我看到“O”替换当前字符约一秒钟,然后当前字符返回,并插入并打开一个新行。

我没有遇到这样的问题,使用o命令(打开一个新行以下并插入)。

如果有什么不同的话,我在 Ubuntu 10.04 上的 Gnome 终端中vim使用。bash

答案1

如果之前按下的键是 ESC,这是因为有些键可以生成以 ESC O 开头的转义序列。例如,根据光标键模式,向上箭头键可能会生成转义序列 ESC O A。

如果 vim 发现部分转义序列,它会等待一小段时间,看看是否收到另一个与终端类型定义的转义序列之一匹配的字符。如果没有,它会将字符视为单独的按键。您可以在等待行打开时输入大写字母 A 来测试这一点,看看它是否将其视为向上箭头。

有一些 vim 设置可用于控制这一点。 :set ttimeoutlen=100将把转义序列超时时间改为 100 毫秒。 :set noesckeys将完全禁用在插入模式下发送转义序列的键识别。此外,vi 兼容模式不会出现此问题,因为 esckeys 在该模式下处于关闭状态 - 这就是vim -u NONE工作原理。

相关内容