CLIツール
junegunn/fzf avatar
junegunn/fzf

fzf: 標準入出力を対話操作へ変えるファジーファインダー

fzf は、ファイル、コマンド履歴、プロセス、その他のテキスト ストリームをフィルター処理する対話型のコマンド ライン ファジー ファインダーです。

スター 82,995フォーク 2,877GoMIT

ひと目でわかる

これは何?
junegunn/fzfは単一バイナリで動く端末向けファジーファインダーです。検索構文、シェル統合、reloadやpreviewを、実際のコマンドと制約から読み解きます。
誰に向いている?
fzfは、候補を標準入力から渡し、選択結果をシェルやエディタへ返す操作を短く組み立てたい人に向きます。GUIのファイル管理や、候補生成まで自動で保証される製品を求める場合は役割が違います。
商用利用できる?
できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。最後のコミットは 2 日前です。
何の言語で書かれている?
主に Go です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

コアループ: 標準入力から標準出力へ

fzf は汎用コマンドラインのファジーファインダーであり、インタラクティブなターミナルツールキットです。最も単純な使い方では、対話型ファインダーを起動し、標準入力からリストを読み、選択した項目を標準出力に書き出します。README では `find * -type f | fzf > selected` と示されています。標準入力がパイプでない場合、fzf は現在のディレクトリ配下のファイルシステムを走査してリストを表示します。例として `vim $(fzf)` が挙げられています。README は、ファイル、コマンド履歴、データのプレビューのいずれを入力にする場合でも、シェルスクリプトをよりリッチなターミナルアプリケーションにするための部品として fzf を位置づけています。

インストールとシングルバイナリ配布

README のハイライトでは、fzf はシングルバイナリとして配布されるため移植性が高く、数百万件のアイテムをミリ秒単位で処理できるよう最適化されているため高速だと述べられています。インストール方法は Homebrew、mise、記載のある Linux パッケージマネージャー(APK、APT、Conda、DNF、Nix、Pacman、pkg、pkgin、pkg_add、Portage、Spack、XBPS、Zypper)、Windows パッケージマネージャー(Chocolatey、Scoop、Winget、MSYS2)、GitHub のバイナリリリースです。リポジトリをクローンして `install` スクリプトを実行すると、シェル設定に `$PATH` を変更しシェル統合を設定する行が追加されます。README はバージョン番号や、パッケージマネージャーの表以外の最低 OS バージョンには触れていません。

シェル統合、キーバインド、エディタプラグイン

シェル統合は生成されたスクリプトを読み込んで設定します。bash では `eval "$(fzf --bash)"`、zsh では `source <(fzf --zsh)`、fish では `fzf --fish | source` です。Nushell はパイプを `source` に渡せないため、autoload ディレクトリにファイルを書き出します。これらのフラグは最近のバージョンでのみ利用可能で、README は古いバージョンでは `/shell` ディレクトリの個別スクリプトを読み込むよう案内しています。統合を有効にすると、`CTRL-T` で選択したファイルとディレクトリを貼り付け、`CTRL-R` でコマンド履歴を貼り付け、`ALT-C` で選択したディレクトリに移動できます。各バインドは、読み込み前に対応する `*_COMMAND` 変数を空文字列に設定することで無効にできます。Vim と Neovim では、`junegunn/fzf` が基本ライブラリ関数を提供し、`junegunn/fzf.vim` はコマンドを提供する別プロジェクトです。

検索構文、表示モード、デフォルト設定

fzf はデフォルトで拡張検索モードになり、スペース区切りの複数の語句がフィルタとして組み合わされます。README には `^music` が前方一致、`.mp3$` が後方一致、`!fire` が否定、単一のバーが OR 演算子として示されています。`-e` または `--exact` オプションでファジーマッチを無効にでき、引用符付きの語句は正確一致になります。表示はデフォルトで全画面ですが、`--height HEIGHT[%]` を使うとカーソルの下に高さ制限付きで開き、`--popup` を使うとポップアップウィンドウで開きます。後者は tmux 3.3+ または Zellij 0.44+ が必要で、それ以外では静かに無視されます。`--style` で `default`、`full`、`minimal` のスタイルプリセットを選べます。デフォルト動作は `FZF_DEFAULT_COMMAND`、`FZF_DEFAULT_OPTS`、`FZF_DEFAULT_OPTS_FILE` で変更できます。全オプションは man page にあります。

外部プログラム、リロード、プレビューウィンドウ

キーバインドから fzf を離れずに外部プロセスを実行できます。`execute` または `execute-silent` を使い、例として `fzf --bind 'f1:execute(less -f {}),ctrl-y:execute-silent(echo {} | pbcopy)+abort'` が示されています。`become(...)` アクションは fzf を別のプロセスに置き換えるため、`fzf --bind 'enter:become(vim {})'` で直接 Vim を開け、fzf をキャンセルしても空のファイルが作られません。`reload` アクションは候補リストをコマンドから再構築でき、README では `change` イベントと `{q}` プレースホルダを使ってキー入力のたびに ripgrep を再起動する例が紹介されています。プレビューウィンドウは `$SHELL -c COMMAND` で現在の行を表示し、ANSI カラーに対応し、Kitty、iTerm2、Sixel の各プロトコルで画像を表示できます。README は fzf が汎用テキストフィルタでありファイルファインダーではないため、`--preview` を `$FZF_DEFAULT_OPTS` に入れないよう警告しています。

パフォーマンスの注意点とライセンス

README は fzf が高速で、ほとんどの使用場面でパフォーマンスは問題にならないと述べたうえで、スキャンを遅くしうるオプションとして `--ansi`、`--nth`、正規表現の `--delimiter`、`--with-nth` を挙げています。また、入力タイプに合わせて `--scheme=default`、`--scheme=path`、`--scheme=history` を提供しています。このプロジェクトは MIT ライセンスで、著作権は 2013-2026 Junegunn Choi に帰属します。ライセンスは使用、複製、変更、統合、公開、配布、再ライセンス、販売を許可し、保証と責任を否認しています。リポジトリのメタデータでは言語が Go、スター 82,323、フォーク 2,840、オープンイシュー 328 とされています。README はベンチマーク、セキュリティ保証、サポート約束を確立していません。

編集部の結論

fzfは、候補を標準入力から渡し、選択結果をシェルやエディタへ返す操作を短く組み立てたい人に向きます。GUIのファイル管理や、候補生成まで自動で保証される製品を求める場合は役割が違います。最初に `printf '%s\n' alpha beta | fzf --exact` を実行し、続けて使用シェルの `--bash`、`--zsh`、`--fish` 統合と `--preview` の実行境界を確認してください。

公式情報源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
コミュニティノート

コミュニティノート