上記画像のように、zshのプロンプトのパス部分で今いる場所に下線を引きます。
この記事は こちら の記事の内容を参考にさせていただきました。
上記参考記事をみて、これは便利そうと思いはじめ丸写ししようと思ったのですが、 上記記事のやり方だと /home/repo/hoge/repo でrepoがレポジトリ名の場合に両方に下線を引いてしまいそうであったので、 内容を理解しながら自分で改良してみました。
autoload -Uz vcs_info
zstyle ':vcs_info:*' max-exports 3
zstyle ':vcs_info:*' formats '%s:%b ' '%r' '%R'
precmd () {
LANG=en_US.UTF-8 vcs_info
psvar=()
[[ -n ${vcs_info_msg_0_} ]] && psvar[1]="$vcs_info_msg_0_"
if [[ -z ${vcs_info_msg_1_} ]] || [[ -z ${vcs_info_msg_2_} ]]; then
psvar[2]=$PWD
else
psvar[2]=`echo $vcs_info_msg_2_|sed -e "s#$vcs_info_msg_1_\\$##g"`
psvar[3]="$vcs_info_msg_1_"
psvar[4]=`echo $PWD|sed -e "s#^$vcs_info_msg_2_##g"`
fi
}
PROMPT="%{${fg[green]}%}%1(v|%1v|)%{${fg[yellow]}%}%2v%U%3v%u%4v%{${reset_color}%}"
- vcs_info のformatsで指定したものは $vcs_info_msg_0_ などの変数に連番ではいります。(この時、max-exportsで指定した分だけはいらないことをはじめ知らなくて、結構つまった)
- それを、psvarによしなに加工して詰めてあげます。
- psvarの各要素の値はPROMPTの文字列中で、%1v などのようにして添字で参照できるため、あとは見栄えを整えてあげるだけです(%U...%u で下線を引く)。
僕の.zshrcなどはgithubにもあります。
