强制GNU屏幕在重新连接时回流到当前端子宽度?


32

重新连接会话时,我想强制将GNU屏幕重排到现有的终端宽度。在我看来,在将机器升级到CentOS 6之前,这可以正常工作,但是我不知道如何还原它。(TERM=xterm

每当我重新连接会话时,无论断开会话时处于什么状态,它都会在80列处启动,并同时调整终端的大小(在本例中为Puty)。

我要启动并重新连接:

screen -aA -R <session>

我的.screenrc仅包含以下内容以及一些无关的键绑定:

term xterm

defscrollback 10000

# status line at the bottom
hardstatus on
hardstatus alwayslastline
hardstatus string "${-}%{.0c}%-w%{.y0}%f%n %t%{-}%+w %=%{..G}[%H] %{..Y} %D %M %d, %Y %c | Load: %l"
caption splitonly "%{.yK}%3n t"
caption string "%{.c0}%3n %t"

vbell off

# Fix fullscreen programs
altscreen on

您可能会有更好的运气tmux,我可以动态调整终端窗口的大小,然后跟随其中的tmux。
number5

Answers:


38

重新连接后,ctrl-a F运行“ fit”命令调整当前窗口的大小。如果使用该-A选项重新连接,则重新连接时应调整所有窗口的大小。附加时,屏幕会话上还有其他附加内容吗?例如,您是否必须使用-x而不是-r重新附加?当您重新连接“ screen -D -r”而不是“ screen -x”时,您可以分离其他人,并且我希望它可以自动调整Windows。


我正在与一起启动-a -A,但没有其他人加入。
迈克尔

1
通过Ubuntu 14.04使用屏幕仍然存在问题。适合不起作用。断开连接并重新连接。屏幕4.2.1可从可信赖的反向端口获得。有关从backports存储库启用和使用软件包的信息,请参阅用户backports文档
格雷格·贝尔

1
即使这样做,我也必须调整终端窗口的大小,以发送screen实际进行调整所需的任何信号。
krs013

这些问题对我不起作用,可能是因为我使用的是其他终端(在Mac上为iTerm2)。Fit无效,因此我使用分离并重新连接screen -D -r,甚至尝试调整窗口的大小,但保持不变。在Vim中,可以看到将columns其设置为204
haridsv

屏幕-D -r在尝试了所有其他选项后为​​我工作,正如您所说的“炖煮”-当我运行屏幕-ls时,我的屏幕仍显示为连接状态
Hayden Crocker

8

请注意,此答案仅适用于腻子。我也不得不使用我不想使用的操作系统,由于系统上的其他限制,PuTTY是唯一的选择。我遇到了同样的问题,在启动或连接到现有的屏幕会话后,我的屏幕将调整大小。我尝试了无济于事的答案(通过MSI安装了PuTTY 0.67的Windows 10)。这些答案可能适用于标准的UN * X终端,但不适用于PuTTY,这是另一种野兽。

我去挖掘这些选项,然后在“终端->功能”下看到一个选项,标有“禁用远程控制终端大小调整”。选中复选框,应用设置,然后再次尝试屏幕。我想您会发现问题已解决。


KiTTY是您必须使用的OS上PuTTY的更好的替代品...
Anubioz

5

尝试将其(从/ etc / screenrc)添加到〜/ .screenrc中:

# Change the xterm initialization string from is2=\E[!p\E[?3;4l\E[4l\E>
# (This fixes the "Aborted because of window size change" konsole symptoms found
#  in bug #134198)
termcapinfo xterm* 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'

https://superuser.com/a/217281/6593


1
MPutty中,这可以彻底解决腻子问题,而不是填满整个页面,而是打开得太小
Thomas8
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.