プロンプトに git のブランチ名表示するやつ、やろうやろうと思っていてやってなかったのだけど、ちょっとやる気出して設定してみたら結構便利だったのでメモ。
CentOS+Bash と Ubuntu+Zsh という二つの環境で設定した。
CentOS + Bash
よくあるサーバな環境。
bash-completion のインストールが必要だった。
$ sudo yum install bash-completion
$ vim ~/.bashrc
# 以下の文言を追加する。
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
if [ -f $BASH_COMPLETION_DIR/git ]; then
export PS1='\[\033[01;32m\]\u@\h\[\033[01;33m\] \w$(__git_ps1) \[\033[01;34m\]\$\[\033[00m\] '
else
export PS1='\[\033[01;32m\]\u@\h\[\033[01;33m\] \w \[\033[01;34m\]\$\[\033[00m\] '
fi
こんな感じ。
ryomatsu@vps ~/project/twitgaa (master) $ git branch
* master
Ubuntu + Zsh
自分のクライアントマシンは vm にいれた Ubuntu. こっちがメイン。zshでは特に追加で何かをインストールする必要は無いみたいだけど、古いzshだと動かなかった。。原因は気が向いたら調べる。
Zsh は左右別々にプロンプトを表示できるのだけどとりあえず右側に表示してみた。
autoload -U colors; colors
autoload -Uz VCS_INFO_get_data_git; VCS_INFO_get_data_git 2> /dev/null
compinit -u
# End of lines added by compinstall
PROMPT='[%n@%m] %(!.#.$) '
RPROMPT='[%~]'
function rprompt-git-current-branch {
local name st color gitdir action
if [[ "$PWD" =~ '/\.git(/.*)?$' ]]; then
return
fi
name=`git rev-parse --abbrev-ref=loose HEAD 2> /dev/null`
if [[ -z $name ]]; then
return
fi
gitdir=`git rev-parse --git-dir 2> /dev/null`
action=`VCS_INFO_git_getaction "$gitdir"` && action="($action)"
st=`git status 2> /dev/null`
if [[ "$st" =~ "(?m)^nothing to" ]]; then
color=%F{green}
elif [[ "$st" =~ "(?m)^nothing added" ]]; then
color=%F{yellow}
elif [[ "$st" =~ "(?m)^# Untracked" ]]; then
color=%B%F{red}
else
color=%F{red}
fi
echo "$color$name$action%f%b "
}
# PCRE 互換の正規表現を使う
setopt re_match_pcre
# プロンプトが表示されるたびにプロンプト文字列を評価、置換する
setopt prompt_subst
RPROMPT='[`rprompt-git-current-branch`%~]'
表示はこんな感じ。
[ryomatsu@ubuntu.vbox] $ git branch [master ~/project/twitgaa]
* master
ブランチ行ったり来たりよくするので便利だ。
参考URL
- git のブランチ名 *と作業状態* を zsh の右プロンプトに表示+ status に応じて色もつけてみた - ヤルキデナイズドだった
- Gitブランチ名を__git_ps1でbashプロンプトに表示 - 130単位