開発したアプリなど一覧

bash と zsh のプロンプトに git の branch 名を表示するアレやってみた。

アフィリエイトリンクを含む場合があります

プロンプトに 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

Sponsored Link

コメント

タイトルとURLをコピーしました