fzf の概要
fzf は、コマンドライン用の無料でオープンソースのあいまい検索ツールです。ファイル、コマンド履歴、Git のブランチ、実行中のプロセスなど、どんなリストでも渡して数文字入力するだけで、文字が離れていても近い候補をすぐに表示し、選んだものを返します。数百万件の項目を数ミリ秒で処理できる、小さな 1 つのプログラムです。fzf は Junegunn Choi が開発し、MIT ライセンスで公開されています。
fzf は Apple シリコン搭載 Mac と Intel Mac のターミナルで動作し、Homebrew(brew install fzf)でインストールできます。Zsh、Bash、Fish との連携機能を使うと、便利なショートカットが 3 つ追加されます。Control-T でファイルを挿入、Control-R でコマンド履歴を検索、Option-C(Alt-C)でフォルダに移動です。Vim と Neovim のプラグインもあります。
主な機能
fzf は、ターミナルに出力できるどんなリストにも使えます。
- あいまい検索:文字が続いていなくても、順番どおりに数文字入力するだけで項目を見つけられます。
- 高速:数百万件の項目を数ミリ秒で処理します。
- 単体のプログラム:依存関係のない小さなファイル 1 つだけです。
- シェルのショートカット:Control-T でファイル、Control-R で履歴、Alt-C でフォルダの移動。
- あいまい補完:** と入力して Tab キーを押すと、パスなどを補完できます。
- プレビューウインドウ:リストの横に、ファイルの内容などの詳細を表示します。
- Vim と Neovim:エディタ内でファイルやバッファなどを検索するプラグイン。
- 高いカスタマイズ性:キー割り当て、レイアウト、色、アクションを変更できます。
バージョン 0.74.5 の新機能
fzf 0.74.5 では、いくつかの不具合が修正されました。
- tmux 3.8 以降で、ズーム中のペインの上に --popup を開くとウインドウのズームが解除される問題を修正
- --gap-line で行末の文字のまとまりが途中で切れる問題を修正
- 認識できないエスケープシーケンスが検索語に入り込む問題を修正
- エスケープシーケンスと同時に届いたキー入力が失われる問題を修正
- 再読み込み後に focus イベントが発生しない問題を修正
fzf のよくある質問
fzf は無料ですか?
はい。fzf は無料のオープンソースソフトで、MIT ライセンスで公開されています。
Mac に fzf をインストールするには?
Homebrew を使っているなら、ターミナルで brew install fzf を実行します。Apple シリコン搭載 Mac 用と Intel Mac 用のビルド済みプログラムも GitHub のリリースページにあります。
Zsh で fzf のキーボードショートカットを有効にするには?
~/.zshrc ファイルに source <(fzf --zsh) という行を追加し、新しいターミナルウインドウを開きます。Bash なら ~/.bashrc に eval "$(fzf --bash)"、Fish なら fzf --fish | source を使います。
Control-T、Control-R、Alt-C は何をするのですか?
Control-T は選んだファイルやフォルダをコマンドラインに挿入し、Control-R はコマンド履歴を検索し、Alt-C は選んだフォルダに移動します。Mac では Alt は option キーです。
あいまい検索とは何ですか?
あいまい検索は、入力した文字を同じ順番で含む項目を、間にほかの文字があっても見つける方法です。たとえば dlrp と入力すると download-report.txt が見つかります。
fzf でファイルのプレビューを表示できますか?
はい。--preview オプションを使うと、リストを移動しながら、その横にファイルの内容や任意のコマンドの出力を表示できます。
fzf を Vim や Neovim の中で使えますか?
はい。fzf には基本的な Vim プラグインが付属しており、別のプラグイン fzf.vim を入れると、ファイル、バッファ、行などを検索するコマンドが追加されます。
fzf はファイル以外も検索できますか?
はい。fzf は渡されたどんなリストにも使えます。Git のブランチ、実行中のプロセス、コマンド履歴などです。リストをパイプで fzf に渡すと、選んだものが返されます。
fzf のファイル検索に fd や ripgrep を使えますか?
はい。FZF_DEFAULT_COMMAND か FZF_CTRL_T_COMMAND に fd や ripgrep のコマンドを設定すると、fzf はそのファイル一覧を使います。.gitignore も尊重されます。
fzf.FULLMAC.app の fzf のダウンロードはどこから提供されていますか?
ダウンロードボタンは、インストール手順とリリースが載っている fzf の公式 GitHub ページ https://github.com/junegunn/fzf につながっています。fzf.FULLMAC.app がツールを改変したり再パッケージしたりすることはありません。
似ているアプリ
- tmuxtmux は、無料でオープンソースのターミナルマルチプレクサです。1 つのターミナルの中で複数のプログラムを、ウインドウや横に並んだペインに分けて動かし、キーボードで切り替えられます。いちばん便利なのはセッションです。セッションからデタッチしても中身はすべて動き続け、ターミナルを閉じたり SSH 接続が切れたりしても大丈夫です。あとでアタッチし直せば、中断したところから続けられます。tmux は Nicholas Marriott とコントリビュータが開発し、ISC ライセンスで公開されています。開発ツール
VigilVigil は、コーディングエージェントをチームとして動かすための、無料でオープンソースの Mac ネイティブターミナルです。複数のエージェントのウィンドウ間で自分でメッセージをコピーする代わりに、ルートのマネージャーエージェントにタスクを渡すと、マネージャーが自分のワーカーエージェントやサブマネージャーを起動します。詳細はツリーを下へ流れ、結果は要約としてマネージャーへ戻るので、マネージャーのコンテキストは軽く保たれます。ライブのノードツリーでチーム全体を一度に見渡せ、各ノードはエージェント自身のターミナル画面をそのまま保つため、どのノードでも開いて直接操作を引き継げます。開発ツール
SwitchShuttleSwitchShuttle は、よく使うターミナルコマンドをワンクリックやキーボードショートカットで実行できる Mac のメニューバーアプリです。コマンドを階層化したサブメニューに整理し、それぞれにグローバルホットキーと絵文字アイコンを割り当てれば、ターミナルを開いて入力しなくても、どこからでも実行できます。iTerm、Terminal、Warp、Alacritty、Hyper などのターミナルに対応し、各コマンドは現在のウィンドウ、新しいタブ、新しいウィンドウのいずれかで実行できます。開発ツール
tty7tty7 は Rust で書かれた GPU レンダリングのターミナルで、Zed の gpui と Alacritty のターミナルコアをもとに作られています。シェルとペインを持つのはウィンドウではなくバックグラウンドのサーバーなので、アプリを終了してもシェルは tmux なしで動き続けます。再起動後は、レイアウト、画面、対応エージェントの会話が元に戻ります。開発ツール
TabbyTabby(旧称 Terminus)は、SSH、Telnet、シリアル通信のクライアントとしても使える、細かく設定できるターミナルエミュレータです。タブと分割ペインを備えたローカルのターミナル、サーバーの接続マネージャ、ルーターやマイコンなどの機器向けのシリアルターミナルを、1 つのアプリでまかなえます。SSH のパスワードや鍵は暗号化されたボルトに保管でき、SSH 経由でファイルを転送でき、テーマやプラグインで見た目や機能を変えられます。Tabby は Eugene Pankov が開発しており、Mac、Windows、Linux で動作します。開発ツール
kittykitty は、GPU でテキストを描画する高速で高機能なターミナルエミュレータです。スクロールや大量の出力もなめらかに表示されます。タブと分割ウインドウを備え、複数のレイアウトが組み込まれているほか、トゥルーカラー、合字、絵文字に対応し、ターミナルの中に直接画像を表示する独自のグラフィックスプロトコルも持っています。スクリプトやコマンドラインから操作でき、kitten と呼ばれる小さなプログラムで機能を拡張できます。設定を引き継いだ SSH、ファイルの左右比較、Unicode 文字の入力などに使えます。kitty は calibre の開発者でもある Kovid Goyal が作っています。開発ツール
FULLMAC.app はこのアプリをホストしていません。ダウンロードボタンは開発元のページにリンクしています。