まったりいんふぉまてぃくすめもらんだむ

主にプログラミング関係のメモに使うかもしれないしそうでないかもしれない

zshのプロンプトを設定する

gitのブランチ名が表示される研究室サーバの設定を中心に、他のサイトに載ってたのも参考にしつつ一生懸命書きました。こんな感じ。

autoload colors
colors
function precmd() {
    PROMPT="                                                                       
%{${fg[yellow]}%}%~%{${reset_color}%}"
    st=`git status 2>/dev/null`
    if  -n `echo "$st" | grep "^nothing to"` ; then
        color=${fg[cyan]}
    elif  -n `echo "$st" | grep "^nothing added"` ; then
        color=${fg[blue]}
    elif  -n `echo "$st" | grep "^# Untracked"` ; then
        color=${fg_bold[red]}
    else
        color=${fg[red]}
    fi
    PROMPT+=" %{$color%}$(git branch --no-color 2> /dev/null | sed -e '/^[^*]/d' -\
e 's/* \(.*\)/\1 /')%b%{${reset_color}%}                                           
[%n@%m]%(!.#.$) "
}

上から順番にメモ。

autoload colors
colors

まずこれを書いてないと色が出なかった。

実際に表示されるのはPROMPT=の後の""で囲まれた部分。
""の中での改行はそのまま反映されるらしいので、まず改行した後プロンプトが表示される。

%{${fg[color]}%}hogehoge%{${reset_color}%}

で、hogehogeが指定した色になる。
%~でワーキングディレクトリのパスを表示してくれる。

続くif文で、gitの状態を取得して状態に応じてブランチ名を色分けしてくれてるんだと思う。git周りの部分はよく分からないけど、取りあえず動くらしい(
そんでPROMPTにgitの情報を追加して、改行した後[%n@%m]でユーザ名@マシン名を表示、
続く%(!.#.$)で最後の$を表示。なんでこう書くのかは謎。エスケープしてるだけ?


……といった具合。
この言語読みにくすぎて気分悪い。