半年くらい前から,こちらの記事を参考に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できます