我有两台运行 Ubuntu 18.04 的不同机器(家庭和工作)。昨晚vim
在家里冻僵了。我处于插入模式并输入并保存(esc :w
),但什么也没发生。状态栏仍显示-- INSERT --
,光标仍在原处闪烁。我卡住了。我找不到出路。我不能打字(我打字时什么也没发生),我不能四处走动(向上和向下箭头什么也没做)。它卡在插入模式中,光标在它所在的位置闪烁。
我肯定是在处理多项任务,并且可能在那里按下了其他一些键,但我不知道是什么键。不过已经很晚了,所以我关闭了终端窗口并再次尝试(我正在输入 git commit 消息)。它在我打字的中途再次git commit -m "don't need an editor for this"
发生,所以我改用了。然后我关闭了我的电脑并停止工作。
我想我只是累了,但是今天我在另一台笔记本电脑上工作时发生了这种情况。再次,我是多任务处理,不能发誓我没有输入任何奇怪的键序列,但如果我这样做是偶然的。并且同一终端中的其他选项卡不会被冻结。
visual
我习惯于在 vim 中陷入模式。这是我学到的一个技巧。但卡在插入模式?关于我可能做了什么以及如何摆脱它的任何想法?
根据我尝试查看的评论建议,.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
而且仍然没有超过一个根拥有的文件。
我经常错误地胖手指的一个关键是CtrlS;停止所有终端输出,直到CtrlQ输入 a 。
这就是
XON/XOFF
默认启用的控制流,并且^S
和^Q
分别是默认值VSTART
和VSTOP
键——请参见手册页stty(1)
和termios(3)
手册页。您可以使用以下方法禁用它:
vim
不会在更改终端设置的过程中重新启用它。vim 被冻结;KNOPPIX 8.6 上的 vim 版本 81;
它经常发生,我已经找到了我的情况的原因;
即使我没有忘记将选项更改为“noincsearch”,vim 也会开始搜索并忙 10 到 20 个小时。因为我正在编辑的文件非常大。
这可能是由拼写错误或“正常”向后搜索很少文本引起的。
问题是,在这种状态下 vim 是不可中断的。
CTRL-C 不起作用。没有其他按键序列或鼠标事件可以停止 vim。
我通过“writevt”发送到 vim 或 shell bash 的任何命令都没有效果。
至少 vim 应该对一个 SIGNAL 负责,例如 USR1。但 Vim 没有反应。
此外,vim 没有以任何方式显示 vim 很忙并且它正在搜索,这很糟糕。
操作系统的实用程序仅显示该进程正在运行。我可以发送信号 SIGSTOP 和 SIGCONT。但这些都无济于事。
最好的问候 [email protected]
如果您已安装 CoC,请尝试等待几分钟。
我偶尔会出现 Vim 死机。刚才在寻找答案的时候,它自己解冻了,弹出了一个CoC错误。
一旦(或如果)我找到问题的真正根源,我将更新这篇文章,并提供更多详细信息,但现在,只需等待几分钟,然后再取消会话。