我运行 Ubuntu 16.04,终端使用gnome-terminal
和bash
shell。
有时,我的一个终端变得无响应:当我在终端聚焦时按下键盘上的键时,它没有任何反应,但系统的其余部分工作正常(其他程序正确响应,系统范围的快捷方式就像Ctrl+Shift+T打开一个新终端工作等...)
大多数情况下,当我使用 编辑文件时会发生这种情况vi
,也许它实际上链接到vi
而不是gnome-terminal
or bash
,但我也看到(虽然很少见)我的一些终端卡在 bash 命令行上。
我不知道如何调试这个问题。
问题 :
- 调试:如何查看哪个进程具有当前焦点窗口?也许查看它对什么事件做出反应?
- Ubuntu / gnome 用法:是否有人知道某些键盘快捷键或某些相当标准的程序,它们会以某种方式将键盘输入重定向到未显示的内容?
我目前的盲目猜测是:有一些捷径,可能在键入vi
命令时更容易触发,它启动了一些重定向我输入的东西。
这听起来好像你不小心撞到了Ctrl- S。这会冻结/停止终端。按Ctrl-Q让它再次运行。
警告:当您点击时Ctrl-Q您在终端冻结时输入的所有内容都将被处理。例如,启动 vi 并开始插入
Hello
,然后按Ctrl-S并继续输入World
。击中Ctrl-后没有任何反应S。现在点击Ctrl-将打印Q文本。World
顺便说一句:这不是 Vi/Vim 的特性,而是终端或底层终端驱动程序的特性。
更新:
这似乎被称为“XON/XOFF 流控制”,它可以通过在当前终端中执行来禁用
stty -ixon
。如果您现在启动 vi 并开始插入文本,然后意外点击Ctrl-S它只会插入^S
并继续。要使其永久化,
stty -ixon
必须在每个终端中执行该命令(例如从您的.bashrc
)。注意,可能会有副作用!