ターミナルは、毎日向き合うものです。
そのターミナルが味気ないものであると、毎日も味気なくなります。
ということで、ターミナルを可愛くしましょう。
zshのプロンプト変数について
zshには、PROMPT
とRPROMPT
という2つのプロンプト変数を持っています。
PROMPTが左、RPROMPTが右のプロンプトの内容を定義するものです。
$ PROMPT="人の金で焼き肉が食べたい!! "
こうコマンドを打とうものなら、ターミナルが欲望に溢れたものとなります。
もうなにがなんだか、わかりません。
色・状態変数
プロンプト変数の中では、表示される時の色を指定できる特殊な記法があります。
文字色の場合は%F{}
の中に、背景色の場合は%K{}
の中にカラーネームを入力します。
色のリセットをしたい場合は、%k
、%f
を使います。
また、%~
を使うことで、カレントディレクトリのパスを取得できます。
以下のようにコマンドを打ちます。
$ PROMPT="%K{black}%F{red}人の%F{yellow}金で%F{orange}焼き%F{blue}肉が%F{white}食べ%F{green}たい!! %~ "
こうなります。
RPROMPTについて
RPROMPTは、右側のプロンプトです。文字をRPROMPTにぶつかるまで入力し続けると、自動で消える便利な性質があります。
また、最新の行にしか表示されません。
$ PROMPT="%K{black}%F{red}人の%F{yellow}金で%F{orange}焼き%F{blue}肉が %~ "
$ RPROMPT="%F{black}%K{white}食%K{yellow}べ%K{green}た%K{red}い%K{blue}!!"
SSHしているときに表示
以下をzshrcに追記します。
if [[ -n "${REMOTEHOST}${SSH_CONNECTION}" ]];then
ISSSH="%K{yellow}%F{black}SSH %k%f"
fi
PROMPT="%K{black}${ISSSH}%F{red}人の%F{yellow}金で%F{orange}焼き%F{blue}肉が %~ "
RPROMPT="%F{black}%K{white}食%K{yellow}べ%K{green}た%K{red}い%K{blue}!!"
rootのときに表示
if [ ${UID} -eq 0 ]; then
ISROOT="%K{red}%F{black}ROOT %k%f"
fi
PROMPT="%K{black}${ISROOT}%F{red}人の%F{yellow}金で%F{orange}焼き%F{blue}肉が %~ "
RPROMPT="%F{black}%K{white}食%K{yellow}べ%K{green}た%K{red}い%K{blue}!!"
gitブランチを表示させる
zshrcに以下のように追記します。
( http://d.hatena.ne.jp/holidays-l/20100323/p1 を参考)
preexec() {
_pre="$1"
}
precmd(){
_r=$?
case "${_pre}" in
cd*|git*|vi*|:)
vcs_info
;;
esac
_pre=""
return ${_r}
}
setopt prompt_subst
zstyle ':vcs_info:*' enable git
zstyle ':vcs_info:git:*' check-for-changes true
zstyle ':vcs_info:git:*' stagedstr "%K{yellow}"
zstyle ':vcs_info:git:*' unstagedstr "%K{red}"
zstyle ':vcs_info:*' formats "%K{green}%F{white}%c%u[%b]%f"
zstyle ':vcs_info:*' actionformats '[%b|%a]'
vcs_info
PROMPT="%K{black}${ISROOT}%F{red}人の%F{yellow}金で%F{orange}焼き%F{blue}肉が %~ "
RPROMPT="%f%b%k${vcs_info_msg_0_}%F{black}%K{white}食%K{yellow}べ%K{green}た%K{red}い%K{blue}!!"
初回と、gitコマンドの実行直後、cdの実行後、vi実行後のみ、現在のブランチ名とファイルの状態を更新・取得します。
赤がステージングに編集したファイルが残っている場合は赤、git addすると黄色、git commitすると緑になります。
可愛くする
以下のように、「うー」、と「にゃー」の顔文字を色付きで追加します。
# 略
zstyle ':vcs_info:git:*' stagedstr "%K{white}%F{yellow}" # %c
zstyle ':vcs_info:git:*' unstagedstr "%K{white}%F{red}" # %u
zstyle ':vcs_info:*' formats "%K{black}%F{white}%F{green}%K{white}%c%u[%b]%f"
# 略
UUU="%K{white}%F{black}(」・ω・)」うー"
NYA="\(・ω・\)にゃー!"
PROMPT="${UUU} %K{blue}%F{white} %F{black}%~ %k%F{blue}%f "
RPROMPT='%f%b%k${vcs_info_msg_0_}%F{black}%K{white}%F{white}%K{black} ${NYA} %f'
これが普段の僕のプロンプトです。
最後に
ニャル子さんかわいい!!!!!!!