GNU屏幕:导致屏幕滚动的输出在窗口底部留下垃圾

时间:2013-09-18 19:51:09

标签: gnu-screen

我正在cygwin环境中配置GNU屏幕。实际上重新配置 - 它总是在以前工作,当我升级到cygwin-64时,相同的配置文件会给我带来意想不到的行为。

当我在终端溢出全屏时做某事时,终端不会滚动。相反,每个新行“覆盖”窗口底行的最后一行。即使过程完成,如果我按CTRL + l,终端的最后三行还有一堆垃圾。此外,当我使用占据整个屏幕的程序时,例如vim或irssi,“标题”行会消失。

我怀疑我的xterm设置和屏幕的'term'设置之间存在一些差异,但是我在这里有点茫然,正如我所说,所有相同的配置文件都运行正常(并且在其他机器上工作正常 - 还有cygwin和原生linux)。任何人都可以推荐一种让我心爱的屏幕再次出现的方法吗?

这是我的.screenrc:

shell /bin/bash

screen -t bash 0

select 0

escape ^Zz # Instead of Control-a, make the escape/command character be Control-z

autodetach on # Autodetach session on hangup instead of terminating screen completely

startup_message off # Turn off the splash screen

defscrollback 30000 # Use a 30000-line scrollback buffer

nethack on

# Misc h4x to make scrollback work
terminfo * te@:ti@
termcapinfo xterm|xterms|xs|rxvt ti=\E7\E[?47l

# Bells are annoying
bell_msg ''
vbell off

caption always '%{= kG}[ %{G}%H %{g}][%= %{= kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B} %d/%m %{W}%c %{g}]'

4 个答案:

答案 0 :(得分:3)

您正在screen下运行xterm(我自己一直在做的事情)。 screen进程“知道”终端有多大,但该信息可能与现实不同步。当我从另一个窗口运行screen -dr时,我发现这种情况发生了很多。

调整xterm窗口的大小会使其向其下运行的进程发送SIGWINCH信号,这通常会导致该进程重新查询tty设置。

单击最大化按钮两次。如果您已经最大化,那么它将恢复到正常窗口,然后重新最大化它;如果它还没有达到最大化,它将做相反的事情。在任何一种情况下,它都应该导致screen重新计算窗口大小。

答案 1 :(得分:1)

我今天遇到了同样的问题。感谢所有人的单挑。我发现的最终解决方案是将精简术语类型设置为:vt220。对于" xterm"一定有些不对的东西。在那之后,一切都很好。

答案 2 :(得分:0)

我在这里回答我自己的问题,因为虽然@Keith Thompson的答案确实解决了问题的症状,但它并没有阻止症状的发生。他确实让我走上正确的道路,即在cygwin-64中安装xterm软件包。这似乎解决了这个问题。

答案 3 :(得分:0)

我将屏幕版本降级到屏幕版本4.02.01(GNU)28-Apr-14并且它有效。