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