Tips

開発Tips(2026-04-04)

`fzf`は、コマンド履歴やファイルパス、Gitブランチなど、あらゆるリストから目的の項目を対話的にあいまい検索し、素早く選択できる強力な汎用フィルターです。大量の候補の中から目的のものを瞬時に見つけ出し、日々の開発生産性を大幅に向上させます。

技術・言語・ツール: fzf

fzfは、コマンド履歴やファイルパス、Gitブランチなど、あらゆるリストから目的の項目を対話的にあいまい検索し、素早く選択できる強力な汎用フィルターです。大量の候補の中から目的のものを瞬時に見つけ出し、日々の開発生産性を大幅に向上させます。

コマンド履歴を爆速検索・実行

fzfは、シェルでパイプを通して渡された標準入力から、対話的にあいまい検索を行い、選択した項目を標準出力に出力するツールです。特に、コマンド履歴の検索ではCTRL-R(fishやzshではALT-R)としてキーバインドされており、過去に実行したコマンドを瞬時に見つけて再実行できます。

短い説明: 日々の開発作業で何度も実行するコマンドや、少し前に使ったけど忘れてしまったコマンドを、キーワードをうろ覚えでも高速に探し出して再利用できます。履歴を上下キーで辿る手間がなくなります。

コード例: fzfをインストールすると、多くのシェルでデフォルトのキーバインドが有効になります。

  1. コマンド履歴の検索と実行 (CTRL-R/ALT-R): ターミナルでCTRL-R (またはALT-R) を押すと、コマンド履歴がfzfのインターフェースで表示されます。

    # (ターミナルで CTRL-R または ALT-R を押す)
    >
    # fzfのプロンプトが表示され、履歴をあいまい検索できる
    # 例: "git add" と入力すると、それにマッチする履歴が絞り込まれる
    # 選択してEnterを押すと、そのコマンドがプロンプトに挿入される(実行はされない)
  2. ファイルパスの検索とコマンド補完 (CTRL-T/ALT-C): CTRL-Tは、現在のディレクトリ以下からファイルやディレクトリを検索して選択し、プロンプトに挿入します。ALT-Cは、ディレクトリのみを検索してcdコマンドに補完します。

    # (ターミナルで CTRL-T を押す)
    > # 例: "ls -l " の後で CTRL-T を押すと、ファイル検索が始まり、選択したパスが挿入される
    ls -l <selected_file_or_dir>
    
    # (ターミナルで ALT-C を押す)
    > # 例: ALT-C を押すとディレクトリ検索が始まり、選択したディレクトリに cd する
    cd <selected_directory>

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

  • 強力なデフォルトキーバインド: CTRL-R (履歴検索)、CTRL-T (ファイル検索)、ALT-C (ディレクトリ移動) など、多くのシェルで便利なキーバインドが提供されており、これらを覚えるだけで生産性が飛躍的に向上します。
  • 他のコマンドとの連携: fzfは標準入力を受け取り、選択結果を標準出力に出力するシンプルなツールなので、findlsgrepgit branchなど、様々なコマンドとパイプで繋いで利用できます。
    # Gitブランチを検索してチェックアウト
    git checkout $(git branch --all | fzf)
    
    # 現在のディレクトリ以下のファイルを検索してvimで開く
    vim $(find . -type f | fzf)
  • カスタマイズ性: 環境変数や設定ファイルで、表示形式やキーバインド、検索方法などを細かくカスタマイズできます。
  • インストール: パッケージマネージャー(brew install fzfなど)で簡単にインストールできます。インストールスクリプトがシェルの設定を自動で更新してくれるため、すぐに利用開始できます。