PROMPTにbranch名を表示させたいなーと思って調べていて辿り着いたのが、
Git だろうと Mercurial だろうと、ブランチ名をzshのプロンプトにスマートに表示する方法 - mollifier delta blog
で、vcs_infoというのが便利そうだ、と思い、使ってみようとしたら、どうも使えないっぽい。
vcs_info: function definition file not found - 写経日記
4.3.6くらいから入った機能らしい。なるほど、自分のMacBookに標準で入っていた/bin/zshは4.3.4だ。
% /bin/zsh --version zsh 4.3.4 (i386-apple-darwin9.0)
zshのinstall
ということは新しいzshを入れないといけないっぽい。どうやらMac Portsからで大丈夫そう。
% port variants zsh-devel zsh-devel has the variants: darwin_8: Platform variant, do not select manually mp_completion: Install port(1) completion file pcre: Add regular expressions support in builtin functions through PCRE doc: Install extra documentation examples: Install configuration examples universal: Build for multiple architectures % sudo port install zsh-devel +mp_completion +doc +example ... % /opt/local/bin/zsh --version zsh 4.3.10 (i386-apple-darwin9.8.0)
とやってみた。今回調べていて"port variants"で追加機能を調べられるというのを初めて知った。。
諸設定
で、こいつを標準のshellに設定しようとchshで変更しようとしてもエラーになる、と…。
zshをMacPortsでアップデートする - はてブロ@ama-ch
このへんを参考に、/etc/shellsを編集
% cat /etc/shells # List of acceptable shells for chpass(1). # Ftpd will not allow users to connect who are not using # one of these shells. /bin/bash /bin/csh /bin/ksh /bin/sh /bin/tcsh /bin/zsh /opt/local/bin/zsh
とリストに入れてやってからchshでShellに"/opt/local/bin/zsh"を設定。
あと自分は~/.zshrcのPATH設定が微妙に狂っていたので少し修正
... export PATH=/opt/local/bin:/opt/local/sbin:/usr/local/bin:$PATH export MANPATH=/opt/local/share/man:$MANPATH ...
と。
これで今までと同じように普通に新しいzshが使えるっぽい。
改めて.zshrcを変更
再びGit だろうと Mercurial だろうと、ブランチ名をzshのプロンプトにスマートに表示する方法 - mollifier delta blogを参考にしつつ、.zshrcを書き換える。
今回PROMPTに関して変更したのは以下の部分。
autoload -U colors colors autoload -Uz vcs_info zstyle ':vcs_info:*' enable git svn zstyle ':vcs_info:*' formats '%{'${fg[red]}'%}[%s %b] %{'$reset_color'%}' setopt prompt_subst precmd () { LANG=en_US.UTF-8 vcs_info LOADAVG=$(sysctl -n vm.loadavg | perl -anpe '$_=$F[1]') PROMPT='${vcs_info_msg_0_}%{${fg[yellow]}%}%* ($LOADAVG) %%%{$reset_color%} ' } RPROMPT='%{${fg[green]}%}%/%{$reset_color%}'
gitのbranchが存在する場合は赤でPROMPTの左端に表示するようにしてみた。
実行イメージは以下のようなカンジ。
まぁレイアウトはあとで使いながら調整するとして、とりあえず表示させることができるようになった!わーい