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

Mat*_*hew 28 bash vim gnome-terminal

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

我对o命令没有这样的问题(在下面打开一个新行并插入)。

如果它有所不同,我将在 Ubuntu 10.04 的 Gnome 终端中使用vimfrom bash

mar*_*k4o 29

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

如果它看到部分转义序列,vim 将等待短暂的超时以查看是否接收到与为您的终端类型定义的转义序列之一匹配的另一个字符。如果不是,它会将字符视为单独的击键。您可以通过在等待行打开的同时输入大写字母 A 来测试它是否将其视为向上箭头。

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

  • `:set noesckeys` 可能不是你想要的 - 设置它然后在插入模式下按箭头键,即使你不打算使用它们,你也不希望他们这样做!noesckeys 也不会在插入模式之外加快速度。`ttimeoutlen` 绝对是要走的路 (2认同)