lv と GNU screen の相性 (terminfo?)
これも何年も疑問だったんだが... uxterm または mlterm を立ち上げた中で,
$ echo -e 'a\nb\nc' > abc.txt $ date 2011年 3月 6日 日曜日 09:42:09 JST $ less abc.txt $ lv abc.txt $ screen $ date 2011年 3月 6日 日曜日 09:42:23 JST $ less abc.txt $ lv abc.txt
終了後の画面の状態が明らかに違うよね.lv は vi のように画面を埋め尽し,末尾に ~
を並べるスタイルなんだが,GNU screen 内で使うと終了後に実行前まで見えてた行が復帰してこないので不便.GNU screen 内で(普段が TERM=screen
なのを) export TERM=xterm
に変えても駄目だった.
こういうのってどうやって調べるのが効率よいのか... ncurses の resetty(3)
に関係ありそうな気がしてる.script(1)
で記録してみたが,(当然予想されるように)エスケープ・シーケンス読むのはめんどいですね...
以下のようにセットアップするとシェルのコマンドプロンプトがシンプルになって typescript
ファイルを解析しやすい:
$ echo 'PS1=$' > /tmp/dot.profile $ clear; ENV=/tmp/dot.profile script -c dash $ mv typescript typescript.mlterm.plain $ clear; ENV=/tmp/dot.profile script -c "screen -s dash -c /dev/null" $ mv typescript typescript.mlterm.screen
あー,GNU screen でなく tmux だと,ちゃんと復帰しますね... (script -c "tmux -c dash -f /dev/null"
) しかし tmux は,使える環境がまだ比較的少ないからな...