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 ばっかり使ってて他の環境のことがよくわかりんせん。