Vim在启动时丢弃输入字符

时间:2017-06-13 20:52:19

标签: vim

多年来,由于Vim丢掉输入字符的行为,我已经疯了多年。我这样开始vim:

$ vim file.c

然后立即开始输入命令。但是,Vim会丢弃其中的一些字符,从而导致错误的操作。

我们可以在.vimrc中解决此问题吗?

Vim应该能够在不刷新缓冲输入的情况下将TTY更改为原始模式。

更新:由于以下调查方法,问题的特征更为准确。我创建了一个名为delayvim的脚本,其中包含:

#!/bin/sh
sleep 2.0
vim "$@"

现在在这两秒钟的暂停期间,我可以键入类似iabc<ESC>的内容,然后当Vim出现时,一切都很酷:处理命令,插入abc并且Vim弹回命令模式,将光标备份在c上。 因此,它不仅仅是刷新TTY输入缓冲区

但是,如果我在此延迟期间继续输入,例如iabcdefghijk... 有时会丢失一个或两个字母输入的字母在sleep终止并且编辑器启动的时候。例如,这是我刚刚进行的一次试验的结果:

abcdefghilmn_
~
~

jk在哪里,哎呀?我确定我输入了它们。我的打字速度不是很快;我的节奏大约是每秒4-5次,但连续两次事件消失了。

基本上,它可能试图询问终端,并在此过程中丢弃在响应中混淆的输入。或者它可能是读取一些先前输入,然后刷新输入缓冲区并丢失其余输入的组合。

1 个答案:

答案 0 :(得分:0)

可能有帮助的2点:

1)你确定首先点击i进入输入模式,这样你之后键入的所有字符都应该继续显示在缓冲区中(在屏幕上?)。否则,您键入的字母将被处理为命令,这通常不会执行任何操作,尤其是在您启动空文件时。

请注意,ao是告诉vim您即将开始插入文本的其他常用命令。

2)如果你的系统上的原因与速度有关,你可以寻找改变启动时发生的事情的选项。例如,如果将其放在.vimrc文件中

  

autocmd VimEnter *:sleep 5

然后在处理完其他启动文件之后,vim或gvim在屏幕上显示文件之前将在5秒内完成任何操作。在我的系统上,我能够在这5秒内输入iabcdef,当时间到了,我确实看到abcdef输入了我的文本文件。

如果您的文件不是空的,请注意,(根据您的设置)您的vim安装可能会将您返回到您在文件中编辑的最后一个位置,并且您将在那里插入文本,而不是一开始。

如果这不起作用,你可以尝试找到vim可以做的其他事情(在网上,或使用:vim中的帮助),并使用autocmd对其进行编程,以便在启动时发生,看它是否有帮助。