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
結構便利だと思う。