我运行 Ubuntu 16.04,终端使用gnome-terminal
和bash
作为 shell。
有时,我的一个终端变得没有响应:当我在终端聚焦的情况下按下键盘上的键时,终端上什么也没有发生,但系统的其余部分工作正常(其他程序响应正确,系统范围的快捷方式如Ctrl+Shift+T打开新终端工作等......)
大多数情况下,这种情况发生在我使用 编辑文件时vi
,也许它实际上链接到vi
和 而不是gnome-terminal
或bash
,但我也看到(虽然很少见)我的一些终端卡在 bash 命令行上。
我不知道如何调试这个问题。
问题 :
- 调试:如何查看哪个进程具有当前焦点窗口?以及查看它对哪些事件作出反应?
- Ubuntu / gnome 使用:是否有人知道某些键盘快捷键或某些相当标准的程序,它们会以某种方式将键盘输入重定向到未显示的内容?
我目前的盲目猜测是:存在某种快捷方式,也许在输入vi
命令时更容易触发,从而启动某些重定向我输入的东西。
答案1
这听起来就像您不小心按了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
。请注意,可能会有副作用!