zaw.zshでzshを分かりやすく使う方法

The couple in Kup, Kup Land今回は、zaw.zshの使い方を少し分かりやすく説明してみます。
photo credit: Kup Kup Land



zaw.zsh



zaw.zshとは、zshにvimでいうunite.vimのようなインターフェイスを提供する拡張ツールです。端末操作になれていない人には、分かりやすくて便利なものだと思います。



cd && git clone https://github.com/zsh-users/zaw.git



zaw.zshの使い方


~/.zshrcに設定を追記すべく、以下のコマンドを実行します。

echo "source ~/zaw/zaw.zsh" >> ~/.zshrc && source ~/.zshrc



基本的には、 このブログを読んでくれている方は、C-gを押した後、 C-x;で使用できます。ちなみに、終了は、 C-gC-cです。




zaw.zshのカスタマイズ


しかし、初期設定では、 zaw.zsh本来の機能を発揮しませんので、カスタマイズの一例を紹介しておきます。


bindkey '^h' zaw-history



このようにすることで、 C-g, C-hで履歴の一覧表示、検索ができるようになります。なお、デフォルトで設定できる項目は以下の様になってます。
# https://github.com/zsh-users/zaw
zaw-ack
zaw-applications
zaw-bookmark
zaw-git-files
zaw-history
zaw-open-file
zaw-perldoc
zaw-screens
zaw-tmux


また、例えば、 gitリポジトリ内の移動を簡単にしたい場合は、以下のようにします。


#
# zaw-src-gitdir
# http://d.hatena.ne.jp/syohex/20120624/1340550154
# zaw source for git command
#

function zaw-src-gitdir () {
_dir=$(git rev-parse --show-cdup 2>/dev/null)
if [ $? -eq 0 ]
then
candidates=( $(git ls-files ${_dir} | perl -MFile::Basename -nle \
'$a{dirname $_}++; END{delete $a{"."}; print for sort keys %a}') )
fi

actions=("zaw-src-gitdir-cd")
act_descriptions=("change directory in git repos")
}

function zaw-src-gitdir-cd () {
BUFFER="cd $1"
zle accept-line
}

zaw-register-src -n gitdir zaw-src-gitdir


bindkey '^@' zaw-gitdir


これで、 C-g, C-@を押せば、 gitdirが発動し、gitリポジトリ内の移動が簡単になります。