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


26

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

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

如果有所不同,我在Ubuntu 10.04的Gnome Terminal中使用vimfrom bash

Answers:


27

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

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

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


需要澄清的是,我对140k行文件的“实验”是在标准插件和文件类型补充的全vim模式下进行的。我可以看到您可能已经断定我曾经使用过的结论,-u NONE但是我们仍然缺少操作人员的确认。
msw

哇!有一阵子有点刺激,但我从未想过。现在很合理。Esc OA确实像向上箭头一样工作。
维塔利·库什纳

2
:set noesckeys可能不是您想要的-设置它,然后在插入模式下按箭头键,即使您不打算使用它们,也不想他们这样做!noesckeys也不会在插入模式之外加快速度。 ttimeoutlen绝对是要走的路
JonnyRaa
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.