screenでhardstatusとかcaptionで%wとかするときになぜか表示が変わらないのをどうにか対処した

最近.screenrcを弄ってみてscreenの神髄を垣間見た気がするわけですが、screenのhardstatusで実行中の何かとかを下の方に表示したいのにずっとzshのままでなにこれ使えないと思ってたけどなんとか設定できるようになりました。

.screenrcは普通に設定します。

hardstatus alwayslastline %w

こんな感じで。人によってもっとかっこよくしたりすると思うけど単純なやつを抜き出して書いただけです。

で、.zshrcにこんな感じに書きます。

if [ $TERM = "screen" ]; then
    precmd () {
        screen -X title $(basename $(print -P “%~”))
    }
    preexec () {
        screen -X eval “title ‘$1′”
    }
fi

もう分かりますね。 precmdとpreexecはzshの組み込み関数らしいけど詳しい動きはググってください。たぶん関数名で分かりますね。

screen -X title hogefuga

とやると下の文字列書き換えられるらしいです。それをディレクトリとか実行してるプログラム名になるようにzshで楽しいことをしているだけですね。zsh+screenすばらしいですね。

ところでこういうのって普通?zshでなにも設定せずにみんなscreenのhardstatusの表示変わるのかなあ。今ずっとMacBookばっかり使ってて他の環境のことがよくわかりんせん。