fzf入門:zshのhistory検索・ファイル検索を強化する設定
fzfとは
fzf(fuzzy finder)はコマンドラインのインタラクティブなファジー検索ツールです。インストールするだけで Ctrl+R のhistory検索がインクリメンタルになり、ファイル選択やディレクトリ移動も格段に速くなります。

インストール
macOS(Homebrew)
brew install fzf
Linux(apt)
sudo apt install fzf
mise
mise use --global fzf
zshへの組み込み
インストール後、.zshrc に以下を追加します。
# ~/.zshrc eval "$(fzf --zsh)"
source ~/.zshrc で反映します。
source ~/.zshrc
これだけで Ctrl+R・Ctrl+T・Alt+C の3つのキーバインドが有効になります。
主要な機能
Ctrl+R:historyをインクリメンタル検索
ターミナルで Ctrl+R を押すと過去のコマンド履歴をリアルタイムで絞り込めます。
> git commit git commit -m "fix bug" git commit --amend git commit -m "update README"
文字を打つたびに候補が絞り込まれ、Enter で実行、Ctrl+C でキャンセルします。
デフォルトの Ctrl+R(履歴を1件ずつ遡るだけ)と比べて圧倒的に使いやすくなります。
Ctrl+T:ファイルをfuzzy検索して挿入
Ctrl+T で現在のディレクトリ以下のファイルを検索してコマンドラインに挿入できます。
vim <Ctrl+T> # ファイルを検索してvimで開く cp <Ctrl+T> # コピー元ファイルをfuzzy選択
Alt+C:ディレクトリをfuzzy選択してcd
Alt+C(macOSでは Esc+C)でディレクトリを検索してそのまま移動できます。
> src/components src/components/ src/components/ui/ src/hooks/
カスタマイズ
.zshrc に FZF_DEFAULT_OPTS を設定するとUIと動作を変更できます。
# ~/.zshrc
export FZF_DEFAULT_OPTS='
--height 40%
--layout=reverse
--border
--preview "cat {}"
'
| オプション | 説明 |
|---|---|
--height 40% |
ウィンドウの高さ(全画面ではなく部分表示) |
--layout=reverse |
入力欄を上、候補を下に表示 |
--border |
枠線を表示 |
--preview "cat {}" |
選択中のファイルをプレビュー |
プレビューをシンタックスハイライトする
bat をインストールするとプレビューがカラー表示になります。
brew install bat
export FZF_DEFAULT_OPTS='
--height 40%
--layout=reverse
--border
--preview "bat --color=always --style=numbers {}"
'
fd と組み合わせる
デフォルトでは find を使いますが、fd を使うと高速になり .gitignore を自動で除外します。
brew install fd
# ~/.zshrc export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git' export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
まとめ
| キーバインド | 動作 |
|---|---|
Ctrl+R |
historyをfuzzy検索 |
Ctrl+T |
ファイルをfuzzy検索してコマンドラインに挿入 |
Alt+C |
ディレクトリをfuzzy選択してcd |
# ~/.zshrc に追加する最小構成 eval "$(fzf --zsh)"
eval "$(fzf --zsh)"を.zshrcに追加するだけで3つのキーバインドが有効になるFZF_DEFAULT_OPTSでプレビューや表示位置をカスタマイズできるfdと組み合わせると検索が高速になり.gitignoreを自動除外できる
!! や !$ を使った履歴展開と組み合わせるとさらに効率が上がります。「シェルの履歴展開入門:!! や !$ で直前のコマンドを使い回す」も参照してください。