2005年5月21日

zsh のプロンプトでカレントディレクトリを短縮表示

追記: 翌日のエントリの方法の方がよいです。

かなりしょうもないけど、 zsh のプロンプトの設定を次のように変えてみた。 ~/.zshrc の設定:

case "$TERM" in
    xterm*|kterm*|rxvt*)
    function precmd () {
        # Shorten the path of pwd
        pwd=`pwd | \
             perl -pe 's!$ENV{"HOME"}!~!;s!^(.{10,}?/)(.+)(/.{15,})$!$1...$3!'`
        PROMPT=$(print "%B%{\e[34m%}%m:${pwd}%{\e[33m%}%# %b")
        PROMPT=$(print "%{\e]2;%n@%m: %~^G%}$PROMPT")  # title bar
    }
    ;;
esac

このおまじないにしか見えないコードでは、/ を区切りにして短縮しているので、this-is-very-very-long-long-directory-name のような長いサブディレクトリがあるとうまくいきません。

カレントディレクトリの表示は $PROMPT の中で %~ を使えばできるのですが、ディレクトリがやたら深い場合に邪魔になる場合があるので、上のように設定しました。下のスクリーンショットでは上の行が使用前、下が使用後です。

zsh.png