Edited at

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

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

$ echo "apple\nbanana\nchocolate" | peco

apple-banana-chocolate.gif

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

$ git ls-files | peco

ls-file.gif

さらに、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


peco-vim.gif

結構便利だと思う。


参考