zshプロンプト
奥が深い….
各種ページを参考にしつつ、下記のような状態。
## prompt
# 色を名称で指定
setopt prompt_subst
autoload -U colors
colors
load_average_color () {
case $(uptime | sed 's/.*: \([0-9]\.[0-9]*\).*/\1/') in
0.[0-4]*)
echo $fg[green]
;;
0.[5-9]*)
echo $fg[blue]
;;
1.*)
echo $fg[yellow]
;;
2.*)
echo $fg[red]
;;
*)
echo $fg_bold[red]
;;
esac
}
PROMPT="%{$fg[red]%} %%%{$reset_color%} "
PROMPT2="%{$fg[red]%}%_%%%{$reset_color%} "
SPROMPT="%{$fg_bold[red]%}%r is correct? [n,y,a,e]: %{$reset_color%}"
RPROMPT='%{$(load_average_color)%}%~ `date +"%m%d %H%M"`%{$reset_color%}'
[ -n "${WINDOW}" ] &&
PROMPT="%{$fg[red]%}[$WINDOW]${PROMPT}"
[ -n "${REMOTEHOST}${SSH_CONNECTION}" ] &&
PROMPT="%{$fg_bold[blue]%}${HOST%%.*}${PROMPT}"
ちょっと泥臭い部分もあるが、まぁいいかなぁと。
ポイントは、setopt prompt_subst、autoload -U colors、colorsの3行とRPROMPTがシングルクォーテーション。
prompt_substによりRPROMPT中の変数がうまいこと処理される。
autoload -U colors、colorsにより「%{^[[31m%}」のような指定ではなく「%{$fg[red]%}」と比較的わかりやすい指定が可能に。
シングルクォーテーションで囲っていることにより、load_avg_colorとdateが毎回呼び出され動的な値が反映される。
といった感じ。
load_average_color ()は殆ど他の方のコピペ ![]()
ただ、MacでもLinuxでも動くよう若干調整。
参考にさせて頂いたページ
- これやってみました: zshをいじってみる
http://cgod-kei.blogspot.com/2007/06/zsh.html - 青木日記 2002-05-24
http://www.loveruby.net/d/20020524.html - zshのある暮らし2 - LoadAverageColor
http://wiki.fdiary.net/zsh/?LoadAverageColor
