<zsh> ホスト名ごとにプロンプトの色を変える。
ホスト名hostname
によってプロンプトprompt
の色color
を変える。
case ${HOSTNAME} in r*) local HOSTCOLOR=$'\e[30;48;5;183m' ;; N*) local HOSTCOLOR=$'\e[36;48;5;081m' ;; esac local COLOR_FG=$'\e[38;5;034m' local COLOR_BG=$'\e[30;48;5;082m' local COLOR_RESET=$'\e[0m' # PROMPT="${COLOR_FG}[%h:%n@${COLOR_RESET}${HOSTCOLOR}%m${COLOR_RESET}${COLOR_FG}:%c]>${COLOR_RESET}" PROMPT="%{${COLOR_FG}%}[%h:%n@%{${COLOR_RESET}%}%{${HOSTCOLOR}%}%m%{${COLOR_RESET}%}%{${COLOR_FG}%}:%c]>%{${COLOR_RESET}%}"
参考にさせてもらったところでは、下記のようにでホスト名ごとに自動で色を決めていたが、
それだとちと暗すぎる色があったので、case文で分けることにした。
local HOSTCOLOR=$'\e[30;48;5;'"$(printf "%d\n" 0x$(hostname|md5sum|cut -c1-2))"'m'
ちとトリッキーだったのが、
1..
背景色の設定時の文字の色。これは、どうも、\e[30;
の30
の1桁目の0
の数字で色を決めてるっぽい。
2..
どうも、参考にさせてもらったところと書式が微妙に違う。
うちだと、先頭のエスケープ文字は、\e[
でよかった。でも一番最初に$
が必要。
3.. 16/4/7 追加。
色の指定の部分${COLOR_FG}
は%{...%}
で囲わないおと、タブ補完時にカーソル位置が変なとこにいってしまう。
あと、色を並べるスクリプト。
function pcolor(){ for ((f = 0; f < 255; f++)); do printf "\e[38;5;%dm%3d#\e[m" $f $f if [[ $f%8 -eq 7 ]] then printf "\n" fi done echo }
勉強させてもらったところ。