fzf とは
fzf は Junegunn Choi が Go で書いた汎用のコマンドラインファジーファインダーです。ファイル、コマンド履歴、プロセス、ホスト名、ブックマーク、git のコミットなど、一覧になるものなら何でも対話的に絞り込めます。GitHub スターは 7 万 2,000 を超え、コマンドラインの生産性に欠かせない道具になりました。
⚡ fzf の主な機能
📦 持ち運べて速い
圧倒的に速い単一バイナリで配布されます。最適化された Go 実装により、数百万件を一瞬で処理します。
🛠️ 使い道がとても広い
イベントとアクションの結び付けにより、隅々までカスタマイズできます。ファイル、プロセス、コマンドなど、一覧になるものなら何でも扱えます。
🔋 シェル連携
bash、zsh、fish との連携を内蔵。ファイル検索(Ctrl-T)、コマンド履歴(Ctrl-R)、ディレクトリ移動(Alt-C)のキーバインドが付きます。
🖼️ プレビューウィンドウ
ファイル、画像、内容をリアルタイムにプレビュー。シンタックスハイライト、画像表示、独自のプレビューコマンドに対応します。
🎨 自由度の高いカスタマイズ
複数の表示モード、配色、レイアウト、スタイルのプリセット。対話的に試せるテーマの遊び場も用意されています。
🔌 エディタ連携
Vim と Neovim のプラグインがあります。よく使われるエディタや開発ワークフローになめらかに溶け込みます。
apt upgrade を実行するだけで、常に最新版を使い続けられます。
📦 deb.griffo.io からインストールする
ステップ 1: リポジトリを追加する
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | sudo gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | sudo tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
sudo apt updateinstall -d -m 0755 /etc/apt/keyrings
curl -fsSL https://deb.griffo.io/EA0F721D231FDD3A0A17B9AC7808B4DD62C41256.asc | gpg --dearmor --yes -o /etc/apt/keyrings/deb.griffo.io.gpg
echo "deb [signed-by=/etc/apt/keyrings/deb.griffo.io.gpg] https://deb.griffo.io/apt $(lsb_release -sc 2>/dev/null) main" | tee /etc/apt/sources.list.d/deb.griffo.io.list > /dev/null
apt updatesudo apt install extrepo
sudo extrepo enable griffo
sudo apt update🆓 ずっと無料のミラーがあります。 deb-free.griffo.io は、アカウントもサブスクリプションもなしでパッケージをずっと無料で配布しています。上流より最大2か月遅れ、セキュリティ修正は即座に公開されます。現在収録しているのは cliamp、Ghostty、lazydocker、Oh My Posh と Zed です。fzf は含まれていないため、今日入手する方法は上のリポジトリだけですが、ご要望があれば追加できます。
🧩 extrepo オプションについて。 extrepo は外部リポジトリを扱う Debian 標準のツールです。署名済みメタデータと照合して鍵を検証したうえで、sources ファイルの作成と署名鍵のインストールを代わりに行います。このリポジトリは griffo、ずっと無料のミラーは griffo-free という名前で登録されているので、Debian(bookworm、trixie、forky、sid)では上のコマンドだけで設定は完了です。
extrepo が用意するのは sources ファイルと鍵だけなので、サブスクリプションの認証情報は引き続き /etc/apt/auth.conf.d/deb.griffo.io.conf に書きます。extrepo は Debian のスイート向けメタデータしか公開していないため Ubuntu は対象外です。Ubuntu では sudo または root のコマンドを使ってください。
ステップ 2: fzf をインストールする
# 最新の fzf をインストール
sudo apt install fzf
# インストールを確認
fzf --version# 最新の fzf をインストール
apt install fzf
# インストールを確認
fzf --versionステップ 3: シェル連携を設定する
# bash を使っている場合
echo 'eval "$(fzf --bash)"' >> ~/.bashrc
# zsh を使っている場合
echo 'source <(fzf --zsh)' >> ~/.zshrc
# fish を使っている場合
echo 'fzf --fish | source' >> ~/.config/fish/config.fish
# シェルを読み込み直す
source ~/.bashrc # または ~/.zshrc🎯 基本的な使い方
対話的なファイル検索:
# ファイルを探して編集
vim $(fzf)
# プレビュー付きでファイルを探す
fzf --preview 'cat {}'
# シンタックスハイライト付きでファイルを探す
fzf --preview 'bat --color=always {}'シェル連携のキーバインド:
# Ctrl-T: ファイルとディレクトリを検索
# 何かコマンドを打ってから Ctrl-T で選んだファイルを挿入
# Ctrl-R: コマンド履歴を検索
# Ctrl-R を押して、コマンド履歴を検索して選ぶ
# Alt-C: ディレクトリを移動
# Alt-C を押すと、あいまい検索でディレクトリに cd できます応用的な使い方:
# プロセスを検索して kill
ps aux | fzf | awk '{print $2}' | xargs kill
# git のコミットを検索
git log --oneline | fzf | awk '{print $1}' | xargs git show
# 対話的な ripgrep
rg --color=always --line-number . | fzf --ansi
# 複数選択モード
find . -type f | fzf -m🔧 ツール連携
fzf は、ほかの現代的な CLI ツールと相性抜群です:
- fd: .gitignore を尊重するファイル入力元として
- ripgrep: ライブリロード付きの対話 grep
- bat: シンタックスハイライト付きのファイルプレビュー
- eza: fzf のフィルタと組み合わせた強力なファイル一覧
- zoxide: あいまい検索付きの賢いディレクトリ移動
🚀 deb.griffo.io を選ぶ理由
- 公式 Debian: 提供はあるが、古いバージョンであることが多い
- 手動インストール: Go ツールチェインか、バイナリの手動管理が必要
- deb.griffo.io: 最新版を自動更新でお届け
- ✅ 最新の機能: fzf の新機能と改善を、すぐに使えます
- ✅ セットアップ不要: ビルド済みバイナリ、Go のコンパイルは不要
- ✅ 自動更新: 上流のリリースから数時間以内にパッケージを更新
- ✅ 全部入り: シェル連携スクリプトとドキュメントを同梱
- ✅ マルチディストリビューション: Bookworm、Trixie、Sid で動作
- ✅ 手間のかからない運用: 更新は通常の apt コマンドだけ
📦 パッケージのビルドリポジトリ
Debian パッケージは、この GitHub リポジトリで自動的にビルド・管理されています:
- 🔍 fzf-debian - 最新リリースのビルド
🔗 関連パッケージ
deb.griffo.io では、こちらも配布しています:
- eza - モダンな ls の代替(fzf と好相性)
- Yazi ファイルマネージャ - fzf と連携してファイル検索
- zoxide - 賢い cd コマンド(fzf と併用できます)