特定ディレクトリ以下にいる時にシェルのプロンプトを変える
普段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を多用する人はぜひどうぞ.