为什么 vim 被冻结了?

为什么 vim 被冻结了?

我有两台不同的机器(家庭和工作)运行 Ubuntu 18.04。昨晚vim家里冻僵了。我处于插入模式并输入内容并保存(esc :w),但什么也没发生。状态栏仍然显示-- INSERT --,光标仍然在原来的位置闪烁。我卡住了。我找不到出路。我无法打字(打字时没有任何反应),我无法四处移动(向上和向下箭头没有任何反应)。它卡在插入模式下,光标在原来的位置闪烁。

我确实在同时处理多项任务,并且可能按下了其他一些键,但我不知道是什么键。不过,已经晚了,所以我关闭了终端窗口并再次尝试(我正在输入 git commit 消息)。它发生了再次在我打字的过程中,所以我改用了git commit -m "don't need an editor for this"。然后我关闭电脑并停止工作。

我以为我只是累了,但今天我在另一台笔记本电脑上工作时却发生了这种情况。我再次同时处理多项任务,不能发誓我没有输入任何奇怪的按键序列,但如果我这样做了,那也是偶然的。并且同一终端中的其他选项卡不会冻结。

我已经习惯了陷入visualvim 模式中。这是我学到的一个技巧。但陷入插入模式?关于我可能做了什么以及如何摆脱它有什么想法吗?

根据我尝试查看的评论建议,.viminfo但我看到的唯一内容.viminfo是由以下内容独家拥有的root,并且似乎仅显示我将编辑的内容sudo

# Input Line History (newest to oldest):

# Debug Line History (newest to oldest):

# Registers:

# File marks:
'0  1  0  /etc/neomuttrc
|4,48,1,0,1531789956,"/etc/neomuttrc"
'1  1  66  /etc/apt/sources.list.d/signal-bionic.list
|4,49,1,66,1530816565,"/etc/apt/sources.list.d/signal-bionic.list"
'2  51  0  /etc/apt/sources.list
|4,50,51,0,1530816531,"/etc/apt/sources.list"

# Jumplist (newest first):
-'  1  0  /etc/neomuttrc
|4,39,1,0,1531789956,"/etc/neomuttrc"
-'  1  66  /etc/apt/sources.list.d/signal-bionic.list
|4,39,1,66,1530816565,"/etc/apt/sources.list.d/signal-bionic.list"
-'  1  66  /etc/apt/sources.list.d/signal-bionic.list
|4,39,1,66,1530816565,"/etc/apt/sources.list.d/signal-bionic.list"
-'  51  0  /etc/apt/sources.list
|4,39,51,0,1530816531,"/etc/apt/sources.list"
-'  51  0  /etc/apt/sources.list
|4,39,51,0,1530816531,"/etc/apt/sources.list"
-'  51  0  /etc/apt/sources.list
|4,39,51,0,1530816531,"/etc/apt/sources.list"
-'  51  0  /etc/apt/sources.list
|4,39,51,0,1530816531,"/etc/apt/sources.list"
-'  1  0  /etc/apt/sources.list
|4,39,1,0,1530816447,"/etc/apt/sources.list"
-'  1  0  /etc/apt/sources.list
|4,39,1,0,1530816447,"/etc/apt/sources.list"
-'  1  0  /etc/apt/sources.list
|4,39,1,0,1530816447,"/etc/apt/sources.list"
-'  1  0  /etc/apt/sources.list
|4,39,1,0,1530816447,"/etc/apt/sources.list"

# History of marks within files (newest to oldest):

> /etc/neomuttrc
    *   1531789952  0
    "   1   0

> /etc/apt/sources.list.d/signal-bionic.list
    *   1530816564  0
    "   1   66
    ^   1   67
    .   1   66
    +   1   66

> /etc/apt/sources.list
    *   1530816454  0
    "   51  0

这似乎很奇怪,我没有一个非特权的文件.viminfo,但我确实有sudo udpatedb,而且locate .viminfo仍然没有显示出超过一个根拥有的文件。

答案1

我经常错误地使用的一个键是CtrlS;停止所有终端输出,直到CtrlQ键入 a。

这就是XON/XOFF控制流,默认情况下启用, 和^S分别^Q是默认值VSTARTVSTOP键 - 请参阅stty(1)termios(3)联机帮助页。

您可以通过以下方式禁用它:

stty -ixon

vim作为更改终端设置的一部分,不会重新启用它。

答案2

如果您正在运行vimgnome-terminal请右键单击终端并确保在出现的上下文菜单中未选中“只读”选项可能会有所帮助。

当我运行时vimgnome-terminal我有一个上下文菜单,可以通过右键单击或点击键盘上的菜单按钮来弹出。弹出的上下文菜单包含“只读”复选框。有时,当我不小心按下键盘上的特殊菜单按钮(按右 Ctrl 键按下)时,我会意外地切换只读开关。这可以防止击键到达终端,从而到达 vim。右键单击终端并确保它不是“只读”可能会有所帮助。

答案3

如果您安装了 CoC,请尝试等待几分钟。

我偶尔会遇到 Vim 死机的情况。刚才在寻找答案时,它自行解冻并弹出 CoC 错误。

一旦(或者​​如果)我找到了问题的实际根源,我将用更多详细信息更新这篇文章,但现在,只需等待几分钟,然后再破坏您的会话。

相关内容