zshで、Gitリポジトリ内のファイルをfuzzy searchして、Vimで開く


peco を使うと、標準入力から受け取ったテキストデータをあいまい検索して、選択した行を標準出力に返す事ができる。

$ echo "apple\nbanana\nchocolate" | peco

これを利用して、あるリポジトリ内にあるファイル一覧を出力し、pecoに渡すと、ファイル名のfuzzy search(あいまい検索)をすることが出来る。

$ git ls-files | peco

さらに、fuzzy searchの出力結果をvimに渡してやるというような処理を peco-vim というfunctionとして定義し、 Ctrl-[ にマッピングしてやる。

このソースは参考記事にある peco-src を改変したものだ。

.zshrc
bindkey '^[' peco-vim

function peco-vim() {
    local src=$(git ls-files | peco --query "$LBUFFER" --prompt "vim>")
    if [ -n "$src" ]; then
        BUFFER="vim $src"
        zle accept-line
    fi
    zle -R -c
}
zle -N peco-vim

結構便利だと思う。

参考