こんにちは、ナナオです。

前回はzoxideを紹介しました。

今回は予告通りfzfの話です。

fzfとは

GitHub - junegunn/fzf: :cherry_blossom: A command-line fuzzy finder · GitHub

fzf is a general-purpose command-line fuzzy finder

fuzzyとは「あいまい」という意味です。

つまり、ファジーファインダーとはあいまい検索をターミナルでやってくれるツールになります

ファイル名、コマンド履歴、git のブランチ、grep の結果など、リスト状のものならだいたい fzf にパイプで渡せば絞り込みできます。

入力すると即座に候補が絞られて、Enter で確定。基本これだけです。

ちなみに実装はGo製です。

インストール

zoxide のときと同じく mise で入れます。

mise use -g fzf

zsh で使うなら補完とキーバインドも読み込んでおきます。

# .zshrc
source <(fzf --zsh)

これであとはfzfで使えます。デフォルトではファイル検索が立ち上がります。

単体でよく使うパターン

いくつか実例。

Ctrl + R でコマンド履歴を検索

先ほどのキーバインドを読み込んでおくと使えます。これは単にターミナルのショートカットみたいな感覚で使えます。コマンドを打つ必要すらありません。

「さっき打ったあのコマンドなんだったっけ」状態から救われるやつですね。

git のブランチを選ぶ

git branch --all | fzf | xargs git checkout

…こんな感じで、リストを fzf に食わせる前のコマンドを組み立てる発想があることでいろいろと助けられる場面は多そうです。

zoxide と組み合わせる

ここからが本題。zoxide の候補を fzf に食わせます。

zoxideのみインストールした状態でziを入力しても、以下のようにfzfがないから使えない、と表示されます。

hugo-blog on  main [$⇡] on ☁️  (ap-northeast-1)
❯ zi
zoxide: could not find fzf, is it installed?

fzfインストール後にziを実行すると、zoxide が覚えているディレクトリ一覧が fzf に流れて、選択したディレクトリに移動できます。

ここでEnterで確定することで移動できます。

まとめ

fzf 単体でも便利だし、zoxide と組み合わせるとziで一発で過去に行ったディレクトリに飛べます。

これでかなり便利になりました。次回はさらにatuinというツールでシェル履歴の検索や統計情報の表示などを行わせてみたいと思います。

ということで今回はこれで👍