TeratermでFreeBSD 9.1/9.2のscreenコマンドを使うと画面が80桁になってしまいました。調べると以下のサイト
screenで画面サイズが勝手に変わってしまう事象の対策(メモ)
http://blog.goo.ne.jp/sohgoh/e/362865b122f5151f78ea7c7f16267659
で回避方法が書かれており、そのように設定をすると現象は出なくなりました。
設定は、.screenrcに以下を追加するというものです。
termcapinfo xterm 'is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;4;6l'
これは端末起動時の初期化エスケープシーケンスを設定するものです。
意味を以下を参考に調べてみました。
対応制御シーケンス
http://ttssh2.sourceforge.jp/manual/ja/about/ctrlseq.html
\E[ :
CSI r:
CSI Ps1 ; Ps2 r | DECSTBM | 上下マージン(スクロールリージョン)を設定する。
Ps1 上マージンの行位置。省略時は 1。
Ps2 下マージンの行位置。省略時は画面下端。
|
CSI m:
CSI Pm m | SGR | 文字属性を設定する。省略時の Pm の値は 0。(文字属性を参照) |
CSI 2J:
CSI Ps J | ED | 画面消去。Ps の省略時の値は 0。
Ps = 0 カーソル位置から画面末尾までを消去する。
= 1 画面先頭からカーソル位置までを消去する。
= 2 画面全体を消去する。
|
CSI H:
CSI Ps1 ; Ps2 H | CUP | カーソルを Ps1 行目の Ps2 桁目に移動する。Ps1, Ps2 の省略時の値は 1。 |
CSI ?7h
CSI ?1;4;6l
これで画面サイズが変更されないのは謎ですが、もともとのxtermの初期化制御シーケンス「is=\E[!p\E[?3;4l\E[4l\E> 」を入れ替えているようです。