ottijp blog

zsh+fzfで実行可能なコマンドをあいまい検索する

半年くらい前から,こちらの記事を参考にzsh+fzfライフになりました.

おい、peco もいいけど fzf 使えよ - Qiita

前々から$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できます

ottijp
都内でアプリケーションエンジニアをしています
© 2026, ottijp