在“ O”打开新行之前延迟?


82

我注意到,有时,当我使用O(大写字母'o')创建新行并进入插入模式时,发生任何事情之前都会有短暂的延迟。

这很常见吗?有什么办法可以改变吗?

双方:map O:imap O显示“没有找到映射”,所以我不认为这是一个奇怪的映射。


同意superuser.com:也许这是由于语法突出显示了重新计算格式?
monojohnny

4
请不要使用“超级用户的物品”之类的标签。这些标签并非旨在表达您的意见,请参阅meta.stackexchange.com/questions/36819/…。如果您认为它属于SU,请投票将其移至SU。

我已经改正了。我不再使用这些标签。我仍然认为这个很好的问题是属于SU的问题,希望在那里找到它。
jjclarkson

是的,对不起-你是对的。这应该在SU上。我可以使用快速便捷的按钮来迁移它(以及答案吗?)
David Wolever 2010年

Answers:


91

这是因为该'esckeys'选项已启用(nocompatible我刚刚发现的结果)。当您按下时^[O,会稍有延迟,因为它会指出您是使用箭头键还是功能键,或者只是按顺序表示这两个键。

一种解决方案是禁用该选项,并在插入模式下放弃箭头键。
另一种方法是将其设置'timeoutlen'为小于1000,也许为100(但要注意慢速连接)。
另一种是使用^C而不是^[离开插入模式。


太好了,谢谢!另外,对于可能正在阅读此内容的其他任何人:在将其关闭之前,请查看帮助页面以了解'esckeys'-这是允许您使用的内容,例如,插入模式下的箭头键。设置'timeoutlen'对我来说很好。
David Wolever,2010年

3
ttimeoutlen可以只为键码设置超时。参见vim:help ttimeoutlen
k107 2012年

1
我还有即使在延迟:set noesckeys:set timeout timeoutlen=1000 ttimeoutlen=100...任何想法?(Cygwin,VIM摘自源代码)
Yichuan Wang

1
:set timeout timeoutlen = 3000 ttimeoutlen = 100(在vim帮助中建议),对我来说工作正常。仅将timeoutlen设置为一个很小的值是一个坏主意-一些映射停止工作。
jkff

我不明白 当'esckeys'启用时,为什么我不能输入序列<esc>[A插入模式下移动光标吗?
2016年

3

如果在退出键后立即按“ O”,会发生这种情况,对吗?我一直以为这是因为终端驱动程序在等待一点时间来查看您是否要完成转义序列。


0

我怀疑这是您必须将交换文件写入磁盘的时候。确保在具有快速磁盘访问权限的计算机上运行vim;如果您必须使用共享文件系统,则可以尝试使用以下命令移动交换文件

:set directory=/path/to/local/dir

我第二个要说的是-在工作中,我们的主目录是NFS挂载的,我看到这种延迟很多。
卡斯卡贝尔

...当然,如果仅用于O,而不是用于O,则肯定是转义键序列,就像jleedev所说!
卡斯卡贝尔

1
好吧,即使这个答案不能直接解决OP问题,我仍然认为它仍然有意义。无法同意投票否决的人。
杰弗里·何塞

这不是解决OP问题的答案,而是一个很好的理论和有益的解释。谢谢!
supervacuo 2012年
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.