Tips

インタラクティブなファイル選択で作業を高速化

`fzf`は、ファイル名やコマンド履歴、Gitブランチ名など、あらゆるリストをインタラクティブに絞り込み、選択できる汎用的なファジーファインダーです。複雑なパイプラインと組み合わせることで、ターミナルでの作業効率を劇的に向上させることができます。

技術・言語・ツール: fzf

fzfは、ファイル名やコマンド履歴、Gitブランチ名など、あらゆるリストをインタラクティブに絞り込み、選択できる汎用的なファジーファインダーです。複雑なパイプラインと組み合わせることで、ターミナルでの作業効率を劇的に向上させることができます。

インタラクティブなファイル選択で作業を高速化

ターミナルでファイルを指定する際、ディレクトリを何度も移動したり、ファイル名を正確に入力したりする手間を省きます。fzfを使って、素早く目的のファイルにたどり着きましょう。

短い説明: fzffindlsなどのコマンドとパイプで繋ぐことで、表示されたファイルリストからあいまい検索で目的のファイルを絞り込み、Enterで選択したパスを標準出力に渡すことができます。これをコマンドの引数として利用することで、例えばvim $(fzf)のようにしてファイルを開くことが可能です。

コード例:

# 現在のディレクトリ以下のファイルから選択して開く
vim $(fzf)

# Git管理下のファイルから選択して開く (gitignoreを考慮)
vim $(git ls-files | fzf)

# ディレクトリを選択して移動する
cd $(find . -type d | fzf)

# 選択したファイルを別のコマンドに渡す
cp $(fzf) ~/backup/

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

  • カスタマイズ性: FZF_DEFAULT_COMMANDFZF_DEFAULT_OPTSなどの環境変数でデフォルトの挙動を細かく設定できます。例えば、agrgといった高速な検索ツールと連携させることも可能です。
  • キーバインド: fzfをインストールすると、多くのシェルでCtrl+r (履歴検索)やAlt+c (ディレクトリ移動)のような便利なキーバインドが自動で設定されます。これを活用するだけでも生産性が向上します。
  • プレビュー: fzfのオプションに--previewを指定することで、選択中のファイルのコンテンツやGitの差分などをリアルタイムでプレビューできます。