有时,终端屏幕会混乱,当我们使用man ls阅读联机帮助页时,或者按UP箭头转到历史记录中的先前命令时,屏幕将显示不正确的字符。 (例如,将屏幕的末端视为屏幕中间的某个位置)。一种有效的方法是注销或关闭窗口,然后先调整窗口大小,然后执行reset(或关闭该选项卡,然后调整窗口大小,然后打开新的选项卡以获取新的外壳)。 >
但是这样,我们将失去以前所做的任何事情,例如启动虚拟机控制台等。因此,如果不关闭外壳,是否有办法解决此问题?

(这是在Fedora内部发生的,也发生在将Macbook ssh放入RHEL 5.4盒中的情况)。 ,并做了一个FreeVM以使用虚拟机(外壳)的控制台。我认为它的尺寸为80 x 25,然后过了一会儿,我将终端的大小调整为大约130 x 50,然后(VM的“内壳”开始表现得很奇怪)。

评论

您正在使用哪种终端仿真器?如果重设无法解决问题,声音会中断。

Fedora中的任何终端程序...以及Mac OS X Lion上的默认终端程序。

请参阅上面的更新以了解Fedora中的情况

神奇的咒语是^ Jreset ^ J,其中^ J表示按下ctrl-J。或者(在图形终端上),您可以尝试重置按钮。另外,某些程序只是不准备为改变其下面的终端大小而准备(是的,古老的软件还活着而且可以踢),或者只是在终端变得太小时表现不佳。

我的问题源于bash错误地计算了提示的长度,因为其中包含颜色代码。我缺少转义字符\ [和\]-请参见unix.stackexchange.com/questions/105958/…

#1 楼

如果您正在使用bash,请使用

shopt | grep checkwinsize
检查会话中是否激活了“ checkwinsize”选项。

然后用

checkwinsize    on
激活它
bash文档说“ checkwinsize”属性为: “如果设置,Bash将在每个命令之后检查窗口大小,并且如果必要,将更新LINES和COLUMNS的值。”


如果您喜欢此设置,则可以激活checkwinsize中的~/.bashrc


要激活:shopt -s checkwinsize

要停用:shopt -u checkwinsize



评论


不能解决我的问题,但这是一个很好的一般答案,因此无论如何+1。我认为我的问题与SSH放入Linux服务器时的Windows仿真(?)有关。

–geneorama
15年3月19日在15:21



最初,当我使用向上箭头查看历史记录时,它似乎没有任何作用,但是在执行完第一个命令后,它修复了所有问题。在我的情况下使用终止符。谢谢+1

–kstenger
16年2月9日在17:53

这对我有用,但是只能通过关闭checkwinsize来实现。由于某些原因,即使我的窗口(包含picocom会话)高了很多,在每个命令之后都设置了LINES = 24。

–迈克尔
17年8月9日,0:59

zsh:找不到命令:shopt。 ??

– Noah J. Standerson
20/11/15在7:40

如@ NoahJ.Standerson所述,这是用于bash,而不是zsh

–Arcadien
20/11/15在18:01



#2 楼

您可以尝试按Ctrl + L。它会根据程序清除和/或重绘终端屏幕。

评论


但这并不能永久解决问题...

–nonopolarity
13年1月17日在7:37

我想我的意思是,如果您按CTRL L,则此行暂时可以,但如果再次编辑该行(或在您键入的下一个命令行中),则问题仍然存在

–nonopolarity
16 Dec 16'在10:29

#3 楼

我遇到了同样的问题,上述方法对我都不起作用,因为我认为我的bash从来没有收到SIGWINCH信号,该信号被其父进程捕获。我已添加到我的.bashrc中:用于PROMPT_COMMAND的改进。

评论


我个人将使用export PROMPT_COMMAND =“ resize&> / dev / null; $ PROMPT_COMMAND”,以便保留旧的提示符命令,无论它是什么

– UKMonkey
17年11月23日在10:34

我只在需要时手动运行调整大小。向控制台询问大小可能很慢。每个命令似乎都做起来很麻烦,通常您知道何时调整了大小。

–康拉德·迈耶(Conrad Meyer)
18-09-22在0:07



#4 楼

将这些选项添加到docker exec似乎可以解决我的问题

-e COLUMNS=$COLUMNS -e LINES=$LINES -e TERM=$TERM


评论


您是5年前问这个问题的人吗?

–炼金术士
18 Mar 15 '18在8:16

我可以告诉你,他不是:“ docker”与“ 5年前”并不完全匹配。 Docker尚未于2013年1月发布;-)

– jplandrain
18年8月22日在9:44

最终可能会中断:#不建议使用选项-e,并且可能在更高版本的gnome-terminal中将其删除。

–佐伊
20年6月3日,18:32



#5 楼

我不时在macOS上使用zsh遇到相同的问题。简单调用reset命令即可将终端设置为我喜欢的方式。

评论


因此,OP提到重置对他们不起作用,而这实际上是问题的重点...。

–斯蒂芬·劳赫(Stephen Rauch)
17年4月4日在4:00

OP曾提到它无法在Linux上运行。我在MacOS Sierra上遇到了问题,因此在这种情况下可以重设。我添加了此答案,以帮助在MacOS上遇到相同问题并且不了解reset命令的任何人。

– nonocut
17年4月6日在10:29

在Ubuntu 16.04的Windows Putty上进行reset即可!

– Musbach
17年7月5日在18:36

重置在Ubuntu 16.04 zsh上工作

–万
18年7月9日在21:52

是的,这是一种方法。如果没有,echo -e \\ 033c是另一种选择。

–Pryftan
19年12月13日在16:14

#6 楼

我只想添加Arcadien已经提到的内容。 checkwinsize启用确实可以解决问题,但是对我来说,需要重置窗口的大小以使其正常工作。我猜该checkwinsize旨在消除这种情况,但仍然值得一试。只需尝试更改窗口的大小或在此选项后取消最大化和最大化窗口即可。

评论


信不信由你,这就是我的固定工作所要做的全部。有趣,因为我先尝试了其他所有内容。

– Taranaki
18年11月30日在18:28

#7 楼

我遇到了与您相同的问题,这就是我所做的事情:
我的用户中安装了.profile,因此我可以进行所有更改。

有一个名为xterm的软件包,可以通过apt-get获得,我不知道yum。但是由于没有安装权限,因此我从源代码进行了本地安装。链接:http://invisible-island.net/xterm/#download

./configure --prefix=/the/path/you/want/to/install/to
make
make install


我在个人资料中导出了路径,并在同一位置调用了它

export PATH=$PATH:/the/path/you/want/to/install/to
resize


所以现在每次我登录时,终端大小都会通过resize进行相应设置。

#8 楼

好吧,这是一个常见问题,应该有一个简单的解决方案。

如果其他方法(例如Ctrl + A Ctrl + L)不起作用,请尝试使用stty

< br Ctrl + T:使用本地外壳打开一个新选项卡。
或:退出屏幕(Ctrl + AD断开连接)并退出SSH会话。行和列的数量。
示例:stty -a | grep rows

返回到远程选项卡或登录并重新连接屏幕。 speed 38400 baud; rows 33; columns 133; line = 0;的输出应该是不同的。 />

如果使用终结者,则可以跳过前三步,因为它在顶部显示了列数和行数。

您无需调整大小您的终端窗口会碰到这个。管理员通常从不同的计算机登录,并且当连接的监视器的大小(分辨率)不同时,最大化的窗口在每台计算机上的大小都会不同。实际上,很难经常遇到这个问题。

结果不仅是某些手册页没有正确显示。几乎所有使用寻呼机的东西-例如前几行经常会丢失。而且,甚至不要考虑在未对齐的终端中使用VIM。您想突出显示第3行(V)以便替换它,但是当您这样做时,突出显示的文本就是另一行的文本。

评论


CentOS似乎没有调整大小-使用“ stty row 66”来解决问题。

–俄罗斯
19-10-24在13:25

谢啦!我在gnu屏幕上使用的任何ncruses程序都遇到了一个讨厌的问题。技巧性的行33 stty列133解决了我的问题!

– Serafin Rusu
20-04-27在21:43

#9 楼

尝试stty sane。它应该可以满足您的需求。

评论


在某些情况下这是有帮助的。尽管有时它并不能解决所有情况。它将顺便打开回声,就像您进行了stty echo一样。

–Pryftan
19年12月13日在16:13

这弄乱了emcs的键绑定

–警报
20年7月17日在14:48