在装有 Gnome 3.18 的 Arch Linux 上,我遇到了终端行为异常的问题,当我调整终端窗口大小并输入一些命令(例如ls
或mpv
),然后通过使用鼠标光标拖动窗口边框再次调整大小时。
当我按下↑以返回历史记录时,如果行很长,则不会创建新行(或换行符),但会从左到右覆盖同一行。当我按住↑键盘时,提示符会移动到顶部并“吞噬”上面的终端输出。我尝试过,可以在 gnome-terminal、lxterminal 和 xterm 中看到类似的行为,所有这些都是从 gnome 会话启动的。
以下截屏演示了这种奇怪的行为:https://vimeo.com/147162618
这可能是什么?我可以在哪里查找这种行为的原因?
答案1
bash
通常这是由于处理窗口调整大小事件的方式存在问题:它能捕获SIGWINCH
,以便它知道如何更新其用于编辑命令行的屏幕宽度概念。
要查看的位置是checkwinsize
选项:
checkwinsize
如果设置,Bash 会在执行每个命令后检查窗口大小,并在必要时更新
LINES
和COLUMNS
。
整个功能都存在问题:
但一般来说,如果尚未设置,则给出的建议是设置该选项:
shopt -s checkwinsize
进一步阅读:
- 如何解决终端屏幕混乱的问题?(通常在调整大小后)
- 4.3.2 Shopt 内置(Bash 参考手册)