yaotti's diary

Software is Eating the World

特定ディレクトリ以下にいる時にシェルのプロンプトを変える

普段Macfusionを使ってリモートにあるファイルをローカルファイルのように編集したりコピーしたりしている.
Macfusionは便利なんだけれどもローカル/リモート透過性が高すぎて,ローカルファイルのつもりでリモートファイルを編集してしまったりして危険なのでリモートの時はプロンプトを変えることにした.
以下を~/.zshrcに貼ると,/Volumes以下にいる時は行頭の$が赤くなる.

function precmd() {
    PROMPT="%{${fg[green]}%}[%n@${HOST}] %{${reset_color}%}
%{${fg[cyan]}%}"
    PROMPT+="%B$(git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1 /')%b%{${reset_color}%}" # gitのブランチをcyan, boldで表示
    case ${PWD} in
        /Volumes*) PROMPT+="%{${fg[red]}%}%(!.#.$) %{${reset_color}%}";;
        *) PROMPT+="%{${fg[green]}%}%(!.#.$) %{${reset_color}%}";;
    esac
}

パターンマッチによっていろいろやりたいときは,case $string in ...を使うと綺麗に書けるみたい.
ちなみに$(git branch -- ...)とかの行は,gitレポジトリにいるときに現在のブランチを表示する設定.%Bと%bで挟んでbold表示している.


Macfusionを多用する人はぜひどうぞ.