fzf (fuzzy finder) 完全ガイド
Google Gemini に解説してもらった sunone.icon fzf とは?
* fzf は Go言語で書かれた汎用的なコマンドライン・ファジーファインダー。 * 標準入力から受け取ったリストをインタラクティブに絞り込み、選択した結果を標準出力に返す。
インストールと初期設定
code:bash
brew install fzf
# キーバインドと補完スクリプトを生成
$(brew --prefix)/opt/fzf/install
code:bash
sudo apt update && sudo apt install fzf
環境構成:30_fzf_zoxide.bash
* 管理者の設計思想(脱・ロードガード)に基づき、以下のように定義する。
code:30_fzf_zoxide.bash
## File ~/.bash/30_fzf_zoxide.bash if command -v fzf >/dev/null 2>&1; then
# --- Basic Setup ---
# インストール経路に応じたキーバインドのロード
# Ubuntu: /usr/share/doc/fzf/examples/key-bindings.bash
# Homebrew: $(brew --prefix fzf)/shell/key-bindings.bash
# ここでは一般的なパスを指定
# --- Default Options ---
# プレビュー表示を基本とし、レイアウトを reverse (上から下) に固定
export FZF_DEFAULT_OPTS="--height 40% --layout=reverse --border --inline-info --preview 'bat --color=always --style=header,grid --line-range :100 {}'"
# --- Engine Switch (fd) ---
if command -v fd >/dev/null 2>&1; then
export FZF_DEFAULT_COMMAND='fd --type f --strip-cwd-prefix --hidden --follow --exclude .git'
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
fi
# --- Zoxide Integration ---
if command -v zoxide >/dev/null 2>&1; then
eval "$(zoxide init bash)"
fi
fi
基本操作(ショートカット)
* Ctrl + t : ファイル検索。パスを入力行に挿入。 * cd **[Tab] : ディレクトリ候補のみを表示。
* kill -9 **[Tab] : プロセスリストを fzf で表示。
* ssh **[Tab] : ホスト名を補完。
応用 gh_fzf_git.sh
code:gh_fzf_git.sh
## File ~/.bash/40_gh_fzf_git.bash # gb: ブランチをプレビュー付きで切り替え
alias gb='git branch -a | fzf --prompt "CHECKOUT BRANCH > " | sed "s/.* //" | xargs git checkout'
# ghpr: GitHub の PR を選択してブラウザで開く
alias ghpr='gh pr list | fzf --prompt "OPEN PR > " | awk "{print \$1}" | xargs -I{} gh pr view {} --web'
WSL2 特有の Tips
* /mnt/c/ を検索に含めるとパフォーマンスが低下するため、fd の --exclude 設定で制御すること。
* pbcopy (alias clip.exe) と組み合わせることで、抽出したパスを即座に Windows 側に渡せる。
関連リンク