有时,终端屏幕很混乱,当我们用来man ls
阅读手册页或按向上箭头转到历史记录中的上一个命令时,屏幕将显示不正确位置的字符。 (例如,将屏幕末端视为屏幕中间的某个位置)。
该命令reset
已尝试,但不起作用。一种可行的方法是注销或关闭窗口,然后先调整窗口大小,然后执行ssh
(或关闭该选项卡,调整窗口大小,然后打开一个新选项卡以获取新外壳)。
但这样一来,我们就会丢失之前所做的任何事情,比如启动虚拟机控制台等。那么如果我们不关闭shell,有没有办法解决这个问题呢?
(这种情况之前发生在 Fedora 内部,也发生ssh
在 RHEL 5.4 盒子中的 Macbook 上)。
更新:我现在记得它是如何在 Fedora 中发生的:我打开一个终端,并创建一个 FreeVM 来使用虚拟机的控制台(一个 shell)。我认为它的大小为 80 x 25,然后过了一会儿,我将终端大小调整为大约 130 x 50,然后(虚拟机的)“内壳”开始表现得很奇怪)。
答案1
如果您使用的是 bash,请检查“checkwinsize”选项是否在您的会话中激活
shopt | grep checkwinsize
如果你没有得到
checkwinsize on
然后激活它
shopt -s checkwinsize
Bash 文档对于“checkwinsize”属性的说明:
“如果设置,Bash 会在每个命令后检查窗口大小,并在必要时更新 LINES 和 COLUMNS 的值。”
如果您喜欢该设置,您可以checkwinsize
在您的~/.bashrc
.
- 激活:
shopt -s checkwinsize
- 停用:
shopt -u checkwinsize
答案2
你可以尝试Ctrl+ L。它根据程序清除和/或重绘终端屏幕。
答案3
我遇到了同样的问题,并且上述方法都不适合我,因为我相信我的 bash 永远不会收到信号SIGWINCH
,这些信号被其父进程捕获。
我终于找到了解决办法。我添加到我的.bashrc
:
export PROMPT_COMMAND="resize &>/dev/null ; $PROMPT_COMMAND"
现在,每当我收到新的提示时,我的窗口就会重新调整。
谢谢英国猴子用于 PROMPT_COMMAND 改进。
答案4
将这些选项添加到 docker exec 似乎解决了我的问题
-e COLUMNS=$COLUMNS -e LINES=$LINES -e TERM=$TERM