pecoからfzfに乗り換える
- shell
動機
- 公式で Vim に対応している
- 「対応している」という言い方が正しいかは分からないが、そもそもが実行ファイルと Vim Plugin のセットみたいな状態で配布されている
- カスタマイズ項目が多い
- 自分が思っていたより fuzzy matcher をよく使う人間であるということが分かったので、peco より自由度が高い fzf へ移行していく
作業
やっていくぞ。
fzf のリポジトリを見ると、GitHub Releases で実行ファイルが配布されている。つまり zplug チャンスである。
.zshrc に以下を追記する。
# fzf
zplug "junegunn/fzf", \
from:gh-r, \
as:command, \
rename-to:fzf
シェルを再起動する。
$ which fzf
/home/zoshigayan/.zplug/bin/fzf
入った。zplug すごい。
ということで、早速 ghq 管理下のディレクトリに移動するエイリアスを置き換えてみる。
- alias g='cd $(ghq root)/$(ghq list | peco)'
+ alias g='cd $(ghq root)/$(ghq list | fzf --reverse)'
動いた。fzf すごい。
vim や ripgrep との連携は後でやることになっているので、とりあえず history 検索を実装してみた。
incremental_search_history() {
selected=`history -E 1 | fzf | cut -b 26-`
BUFFER=`[ ${#selected} -gt 0 ] && echo $selected || echo $BUFFER`
CURSOR=${#BUFFER}
zle redisplay
}
zle -N incremental_search_history
bindkey "^R" incremental_search_history
これで ctrl
+ r
で history に対して fzf によるファジー検索をして、選択した履歴をバッファに呼び出す…というのができるようになった。便利!