Tips

コード例

`fzf`は、コマンドラインでのファイル、履歴、プロセスなどのファジー検索を可能にする汎用的なインタラクティブフィルターです。あいまいな入力からでも目的のアイテムを素早く見つけ出し、選択することで、ターミナル作業の生産性を飛躍的に向上させます。

技術・言語・ツール: fzf

fzfは、コマンドラインでのファイル、履歴、プロセスなどのファジー検索を可能にする汎用的なインタラクティブフィルターです。あいまいな入力からでも目的のアイテムを素早く見つけ出し、選択することで、ターミナル作業の生産性を飛躍的に向上させます。

ターミナル作業を劇的に高速化!ファジー検索で目的のアイテムに瞬時にアクセス

fzfを使えば、Ctrl+Rでのコマンド履歴検索や、cdの対象ディレクトリ選択、任意のファイル選択など、ターミナル上のあらゆる選択操作を劇的に高速化できます。あいまいな文字列でインクリメンタルに候補を絞り込めるため、正確なパスやコマンドを覚えていなくても目的の項目に瞬時にアクセスできます。

コード例

コマンド履歴の高速検索(Ctrl+Rfzfで強化)

これはbashzshの設定ファイル(例: .bashrc.zshrc)に追記することで利用できます。

# fzfがインストールされていることを前提
if which fzf > /dev/null; then
  # Ctrl+Rでコマンド履歴をfzfで検索
  # 候補をインタラクティブに絞り込み、Enterで選択したコマンドが入力行に表示されます
  bind '"\C-r": " \C-e\C-u $(history -p | fzf --tac +s --tiebreak=index --no-sort --height=50% --reverse) \C-y\C-x\C-e\C-y\C-x\C-e"'
fi

ディレクトリをインタラクティブに選択して移動

# 現在のディレクトリ以下のサブディレクトリを検索し、fzfで選択してcdする
cd $(find . -type d -print | fzf)

# または、全ファイルから選択して開く
vim $(fzf)

注意点やおすすめポイント

  • 導入の容易さ: brew install fzf (macOS), sudo apt install fzf (Debian/Ubuntu) など、各OSのパッケージマネージャーで簡単にインストールできます。インストール後、スクリプトを実行してキーバインドなどの設定を自動で追加することも可能です (/usr/local/opt/fzf/installなど)。
  • カスタマイズ性: FZF_DEFAULT_OPTSなどの環境変数でデフォルトの挙動(カラースキーム、表示行数、ソート順など)を細かく設定できます。自分好みに調整して作業効率をさらに高めましょう。
  • 既存コマンドとの連携: findgrepgitコマンドの出力など、様々なコマンドの出力とパイプ (|) で連携させることで、非常に強力なツールとして活用できます。例えば、git status | fzfで変更ファイルを素早く選択したり、git branch | fzfでブランチを切り替えたりすることも可能です。