zsh+fzfで実行可能なコマンドをあいまい検索する
半年くらい前から,こちらの記事を参考にzsh+fzfライフになりました.
前々から$PATHやシェル関数をインタラクティブフィルタできると嬉しいなあと思っていたのですが,公式のwikiでは見つけられなかった(もしかしたらあるのかも)ので,自分で作ってみました.
シェル関数とキーバインドの追加
.zshrc
# search commands and shell functions
fzf-cmd() {
local selected
selected=`(for p in ${(@s/:/)PATH}; do
find $p -depth 1 -perm +111 -type f -or -type l 2>/dev/null
done;
print -l ${(ok)functions} | grep '^[^_]') |\
sed 's|.*/||' | fzf --query="$LBUFFER"`
if [ -n "$selected" ]; then
LBUFFER="$selected "
fi
zle reset-prompt
}
zle -N fzf-cmd
bindkey '^[' fzf-cmd- fzfのインストールなどはされている前提です
$PATHにある実行可能ファイルと,シェル関数のリストからコマンド名だけにしてfzfに渡しています- シェル関数は
_で始まるものは除いています
実行イメージ

- コマンドの一部など曖昧な場合に,キーワードだけ入れて
^[すればfzfできます