防止 gnu 屏幕调整显示大小

bla*_*ing 23 gnu-screen

每次启动 screen (screen -A) 或尝试连接到已经运行的 screen 会话 (screen -Ax) 时,我的终端都会调整为 80 列。我想防止屏幕调整我的终端大小。

我在 Snow Leopard 上使用 iTerm,我的屏幕会话在 Centos 机器上(我使用 bash 作为我的 shell)。

Den*_*son 36

尝试将此(来自/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'
Run Code Online (Sandbox Code Playgroud)

您可能需要更改“xterm”以匹配您的$TERM.

termcapinfo行将is名称以“xterm”开头的任何终端的(初始化字符串)设置为一系列转义码。\E代表escape和代码如下:

\E[r       - set scrolling region to default (full size of window)
\E[m       - reset all resources (keyboard) to their initial values
\E[2J      - Erase in Display (ED). 2 -> Erase All.
\E[H       - set cursor position to default (1, 1)
\E[?7h     - DEC Private Mode Set. 7 -> Wraparound Mode
\E[?1;4;6l - DEC Private Mode Reset. 1 -> Normal Cursor Keys; 4  -> Jump (Fast) Scroll; 6 -> Normal Cursor Mode
Run Code Online (Sandbox Code Playgroud)

被替换的行有这些代码:

\E[!p      - Soft terminal reset
\E[?3;4l   - DEC Private Mode Reset. 3 -> 80 Column Mode; 4 -> Jump (Fast) Scroll
\E[4l      - Reset Mode. 4 -> Replace Mode
\E>        - Normal keypad
Run Code Online (Sandbox Code Playgroud)

(来源:XTerm 控制序列

  • @Huckle:我添加了对转义码的解释。 (3认同)