ZSH プロンプトに rbenv version を表示する

rbenv version を使用して表示させていたけど、若干動作が重かったので書き換えた。.ruby-version が存在する場合は、そのバージョンを表示します。またそのバージョンがインストールされていない場合は {?} を表示します。

f:id:superbrothers:20130618010701p:plain

以下のスクリプトを ~/.zsh.d 以下など適当な場所に置いて、.zshrcsource ~/.zsh.d/rbenv.rb のように読み込んでください。

# Allow for functions in the prompt.
setopt PROMPT_SUBST

autoload -U colors && colors

if `which rbenv >/dev/null 2>&1` && [ -z "$RBENV_ROOT" ]; then
    export RBENV_ROOT=`rbenv root`
fi

rbenv_version() {
    if [ -n "$RBENV_ROOT" ]; then
        VERSION=''
        NOTFOUND=''
        if [ -r .ruby-version ]; then
            VERSION=`cat .ruby-version`
            ls "${RBENV_ROOT}/versions" | egrep "^$VERSION$" >/dev/null 2>&1 || NOTFOUND='{?}'
        else
            VERSION=`cat "${RBENV_ROOT}/version"`
        fi
        echo "%{$fg[red]%}[$VERSION]$NOTFOUND%{$reset_color%}"
    fi
}

R?RROMPT で使います

RPROMPT="$(rbenv_version)"