0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

fzfでターミナル上でのファイル検索を快適にする

Posted at

はじめに

最近Neovimを使うようになってターミナル上で生活する時間が増えてきまして、CUIの便利ツールをよく探すようになりました。本記事ではターミナル上でのファイル検索を快適にしてくれるfzfというツールについて紹介します。

fzf ひいてはFuzzy Finderとはなんぞや

fzfはFuzzy Finderをもじったものです(だと思ってます)。
リポジトリはこちら

Fuzzy Finderというのは日本語でいうところのあいまい検索とほぼ同義です。例えば、qiita_article_getter.pyという名前のファイルを検索したい時、前方一致的にqiita_article_geと打つと確実にHITしますよね。これが、あいまい検索が有効なサービスの場合、qiitagetterでもHITすることになります。ファイル名を前方一致的に一言一句違わずに入力せずとも、ファイル名の断片的な情報で検索が可能になるということです。

fzfをインストールすると、ターミナル上でのファイル検索時にこうしたあいまい検索が可能になります。

以下のGIFは、labeltestという文字列からLabeledSum.test.tsxというファイルを検索する例です。
fzf-demo.gif

fzfで検索した結果をcd・nvimコマンドに渡す

fzfはそれ単体でも強力なコマンドですが、他のコマンドに渡すことでよりその効果を発揮します。

例えばnvim $(fzf)を実行すると、fzfで検索したファイルをNeovimで開くことができます。
nvimfzf-demo.gif

自分はこれをnvf()という関数にして.zshrcに記載しています。

nvf() {
  local dir
  cd
  dir=$(fzf)
  [ -n "$dir" ] && nvim "$dir"
}

上記のnvfは検索対象をファイルにとしていますが、ディレクトリを検索対象にすることもできます。自分は以下のnvdという関数を別途作って(Claudeに作ってもらって)、同じく.zshrcに記載してます。

nvd() {
  local dir
  
  # ホームディレクトリに移動。ホームディレクトリを起点にして検索を開始したいため。
  cd
  # fdはfindコマンドの代替版。fdで検索した結果をfzfに渡す。
  dir=$(fd --type d --hidden --exclude .git | fzf \
    --preview 'eza --tree --level=2 --icons --git {} 2>/dev/null || tree -L 2 {} 2>/dev/null || ls -la {}' \
    --preview-window=right:60%)
  # 見つけたディレクトリまでcdで移動&Neovimで開く
  [ -n "$dir" ] && cd "$dir" && nvim .
}

nvd-demo.gif

さいごに

今回紹介した例はfzfのほんの一部です。もっと高度でテクニカルな関数を書いて、fzfをより使いこなしていこうと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?