【エフゼットエフ】

fzf(ファジーファインダー) とは?

最終更新:
💡 候補の一覧を、飛び飛びの文字で絞って選ぶ

ターミナルで候補の一覧をあいまい検索し、項目を選べるコマンドラインツール。ファイル名やコマンド履歴などを入力に応じて絞り込み、選んだ項目を他の処理へ渡せる。

📌 このページのポイント
fzf:候補を絞り、選んだ行を返す 入力:idx文字の順序を保ち、間を飛ばす候補の一覧README.mdsrc/index.tssrc/utils.tstest/index.test.ts一致した候補src/index.tstest/index.test.tsEnterで選択 → 選んだ行を出力その後の実行・切り替えは連携側の処理
ファイル名を候補にした例です。通常のファジー検索は入力順を保ち、ファイル本文の検索や選択後の操作は別の処理と組み合わせます。
ひよこ ひよこ
パスを全部打たずにファイルを探せる?
ペンギン先生 ペンギン先生
候補に入っていれば、短い文字列で絞り込めるよ。たとえば main.ts は mnts で一致する。fzfはファイル名を候補にしたり、別のコマンドから受け取った一覧を候補にしたりできるんだ。
ひよこ ひよこ
あいまいなら、文字の順番も自由?
ペンギン先生 ペンギン先生
通常のファジー検索では順番は保つよ。main.ts の m→n→t→s のように、間の文字を飛ばして一致させる。入力の並べ替えや任意の誤字を直す仕組みではないんだ。完全一致や除外など、別の検索条件も指定できるよ。
ひよこ ひよこ
コマンド履歴も検索できるの?
ペンギン先生 ペンギン先生
対応するシェル連携を設定すると、Ctrl+Rで履歴から候補を選べるよ。インストールしただけで全てのシェルの設定が変わるとは限らない。選んだコマンドは入力欄へ戻るので、内容を確認してから実行しよう。
ひよこ ひよこ
他のコマンドとつなぐと何が起きる?
ペンギン先生 ペンギン先生
たとえば git branch | fzf なら、ブランチの一覧を絞って一行を選べる。通常は選んだ行を出力するだけで、ブランチの切り替えまではしないよ。その後の処理は、組み合わせるコマンドや設定で決めるんだ。
ひよこ ひよこ
ファイルの中の文章も探せる?
ペンギン先生 ペンギン先生
ファイル名の一覧だけでは、本文までは検索しないよ。本文検索にはripgrepなどを使い、その結果をfzfで選ぶ組み合わせがある。Vimとの連携も、専用のプラグインや設定を通して使えるんだ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「fzf」って出てきたら「ターミナルであいまい検索ができるツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「fuzzy finder」 = あいまい検索ツール
💬 fuzzyは「ぼやけた・あいまいな」、finderは「見つけるもの」。完全一致じゃなくてもヒットするからfuzzyなんだよ

参考資料

← 用語集にもどる