<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
}

勉強させてもらったところ。

blog.manaten.net

auewe.hatenablog.com

bash:tip_colors_and_formatting - FLOZz' MISC