<Esc> O上的减速块(插入法线以在光标上方插入新行)


16

通常,当我处于“插入”模式时,我会Esc按一下进入“普通”模式,然后立即按一下O以在光标上方开始新行并进入“插入”模式。

但是,当我这样做时,在击中O之前有1秒钟的延迟,然后才出现任何可见的响应。此外,如果我开始是1秒的延迟期间键入新的文本,如果新的文字与任何特定的字符集的开始(例如jkmno),我在我没有一些其他的操作中结束了打算,经常弄得一团糟,在这一点上,我必须停下来,用撤消和重做摸索,直到我有把握地确定自己没有破坏为止。

为了避免这种不愉快,我养成了每次输入后都要暂停一秒钟的习惯O。但这会使我放慢速度,并阻止我成为原本应该成为Vim的速度恶魔。

是什么原因造成的?是否有修复程序或解决方法?

Answers:


15

这仅发生在终端中,而不发生在GVIM中,对吗?其原因是,Vim可以不是个别类型的密钥和开始用相同的键(即,ANSI转义序列之间进行区分^[O...<Esc>然后O在你的情况)。

您可以在:help 'timeout'(及其后的选项)处了解所有潜在的复杂性。您还可以在其中找到建议的配置来缓解此问题:

:set timeout timeoutlen=1000 ttimeoutlen=100

3
你也可以使用set noesckeys; 这样做的副作用是在“插入”模式下禁用了箭头键(也许还有其他一些键?),因此可能并不适合所有人。
马丁·图尔诺伊

2
@Carpetsmoker关于“ set noesckeys” ...起作用,但仅在插入模式下有效。我知道我说过我处于插入模式。但是,我也经常从普通模式开始执行<Esc> O(主要是当我不确定100%是从插入模式还是普通模式开始时),因此我也希望在这种情况下也能使用。
唐·哈奇

1
@DonHatch您可以使用:nnoremap ^[O O^[通过按来输入,其中也<C-v><Esc>可能显示为<1b>
马丁·图尔诺伊

5

作为解决方法ESCO,请使用Control+ 代替 OO。在Control+ O让你在正常模式下一个命令,然后返回到时它完成插入模式。


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.