Gnu画面の表示サイズのサイズ変更を防ぐ


21

画面を起動するたびに(画面-A)、または既に実行中の画面セッションに接続しようとするたびに(画面-Ax)、端末のサイズが80列に変更されます。画面が端末のサイズを変更しないようにします。

Snow LeopardでiTermを使用しており、画面セッションはcentosマシン上で使用しています(シェルとしてbashを使用しています)。

回答:


31

これを(から/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'

に合わせて「xterm」を変更する必要がある場合があります$TERM

termcapinfoラインセットisエスケープコードの配列に「のxterm」で始まる名前を持つ任意の端末のための(ininitialization列)。\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

置き換えられた行には次のコードがありました。

\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

(ソース:XTermコントロールシーケンス



termcapinfo行をデコードしてもよろしいですか?
ハックル

2
@Huckle:エスケープコードの説明を追加しました。
追って通知があるまで一時停止します。

1

xterm初期化文字列の説明(および推奨される同等物)は完全に正確ではありません。

xtermの端末記述からの文字列で始まる:

is2=\E[!p\E[?3;4l\E[4l\E>

我々は持っています

CSI ! p   Soft terminal reset (DECSTR).
CSI ? Pm l
      DEC Private Mode Reset (DECRST).
...
        Ps = 3  -> 80 Column Mode (DECCOLM).
        Ps = 4  -> Jump (Fast) Scroll (DECSCLM).
CSI Pm l  Reset Mode (RM).
...
        Ps = 4  -> Replace Mode (IRM).
ESC >     Normal Keypad (DECKPNM).

ただしDECSTR、置換には見つからないいくつかの項目をリセットします。

  • カーソルの形状と外観
  • 文字セット
  • アプリケーションに関連する他のキーボードモード/ノーマルモード(DECCKMKAMDECKPAM
  • ラップアラウンド(および逆ラップアラウンド)
  • 原点モード

また、画面はクリアされません。

使用する理由DECSTR1997年は)維持することですtermcapには、 termcapのの1024バイトの制限に適合するように十分に小さいのサイズ。

の設定screenはDebianパッケージからのものです。コメントで言及されているバグレポートはDebian#134198です—画面: 2002年以降、irssiとkonsoleで最も顕著な何らかの奇妙なエミュレーションの問題がありますscreenそのシーケンスを認識しません。 でKDE#134892、内と同時にその開発者の状態KDE#145977彼らは異なる使用しないことを好むということTERMよりも価値をxterm。一部のユーザーはkonsoleの機能に一致する端末の説明を必要とする場合があるため、ncursesにはkonsole、たとえば

is2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8

is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l

スプリアスクリアスクリーンを削除すると、スクリーンのカスタマイズの関連部分は

is2=\E[r\E[m\E[?7h\E[?1;4;6l

除外されたのは(を除くDECCOLM\E[4lでした。

初期化文字列の\E7および\E8は、スクロールマージンを調整するときにカーソル位置を保存/復元します。挿入モードと同様に、一部のユーザーはこの機能がないことに気付くでしょう。

カスタマイズのポイントはDECCOLM(80/132列)の切り替えを抑制することであり、画面のカットダウンやかなり古いカスタマイズからの作業は、端末用に記述された端末記述からの適応と同様に機能しない場合あります。

参考文献:

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.