zsh にはデフォルトで ^R による履歴検索機能がありますが、これを↓のような fzf を使った fuzzy 検索に置き換えてみましょう。
手順
~/.zshrc に以下を追記します。
~/.zshrc
# replace ctrl-r with fzf
fzfhistory() {
local result
result="$(history -n 1 | fzf --reverse --tac +s --query "$BUFFER")" || return
BUFFER="$result"
CURSOR=${#BUFFER}
zle redisplay
}
zle -N fzfhistory
bindkey '^R' fzfhistory
完成!
使い方
-
$ <^R>で履歴検索の fzf を展開 -
$ <^R> foo <Enter>として、 foo でヒットしたコマンドをコマンドラインに展開 -
$ foo <^R>とすれば最初から foo が fzf のクエリに挿入される -
$ foo <^R> <^C>として途中で fzf を中止してもコマンドラインに foo が残る
