Zshでcdrをpecoにかませると便利ですね。
http://qiita.com/syui/items/f2fe51d00378210d10b1
僕はこの方のスクリプトを使わさせてもらっています。
ところで、僕は作業するときにgitのルートディレクトリへ移動してから何をするかを考えるので、cdrと組み合わせてそれを実行させたいと思います。
$ cdr -l | awk '{ print "\\ls -d " $2 "/.git" " 2>/dev/null" }' | sh \
| sed -e "s;^$HOME;~;" | sed -e "s|/\.git$||" | peco
これを関数にしてbindkeyして使っています
function peco-git-cd() {
local selected_dir=$(cdr -l | awk '{ print "\\ls -d " $2 "/.git" " 2>/dev/null" }' | sh \
| sed -e "s;^$HOME;~;" | sed -e "s|/\.git$||" | peco )
if [ -n "$selected_dir" ]; then
BUFFER="cd ${selected_dir}"
zle accept-line
fi
zle clear-screen
}
zle -N peco-git-cd
bindkey '^@' peco-git-cd
ちょっと実行に時間が掛かるのでシェルの効率化やキャッシュやら作ったほうがいいんでしょうけど、まずは許容範囲という感じです。