1. ホーム
  2. コース一覧
  3. ターミナルカスタマイズコース
  4. fzfの使い方をマスターして作業効率をアップさせよう!

ターミナルカスタマイズコース3/8

fzfの使い方をマスターして作業効率をアップさせよう!

こちらでは、ターミナルを便利にするfzfのインストール方法や使い方について解説します。

fzfとは?

fzfは、インクリメンタルに曖昧検索ができるようにするツールです。インクリメンタルとは一文字入力するたびに、自動的に検索が行われる検索方法のことです。

.bashrc や.zshrc に関数や環境変数を設定すると、さらに便利になります。

環境変数については別ページにて解説しています。

https://envader.plus/course/15/scenario/1015

fzfのinstall方法

まずインストールをして、.bashrcや.zshrcを再読み込みします。

GitHubからcloneする場合

git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install
source .bashrc

Homebrew/Linuxbrewでのinstallする場合

brew install fzf
(brew --prefix)/opt/fzf/install
source .bashrc

fzfのversionの確認方法

インストールが成功していれば、バージョンが表示されます。

fzf --version
x.xx.x

fzfのupdate

fzfは現在も開発が進んでいるため、バージョンが古くなっている可能性があります。最新のバージョンへアップデートするには以下のコマンドを実行します。

cd ~/.fzf && git pull && ./install

fzfのデフォルトコマンドを変更する

fzfではデフォルトでfindコマンドを使用します。.bashrc.zshrcの中に以下の記述をすることで、デフォルトのfindコマンドを任意のコマンドへ変更することができます。

# 例
vi .bashrc(または.zshrc)

export FZF_DEFAULT_COMMAND='rg --files --hidden --glob "!.git"'

findコマンドについては、別ページで詳しく解説しています。

https://envader.plus/course/16/scenario/1016

fzfのキーバインド

fzfをインストールする際に「キーバインドを有効にする」を選択した場合、以下のキーバインドが有効になっています。

コマンド履歴からの曖昧検索(Ctrl-r)

Ctrl-rキーで、コマンド履歴からの曖昧検索ができます。過去に実行したコマンドを検索して、再度実行する際に非常に便利です。

さらに、Ctrl-rキーを続けて押すと、時系列順、関連順に表示を並べ替えることができます。

カレントディレクトリ以下のファイル、ディレクトリを表示する(Ctrl-t)

Ctrl-tキーで、カレントディレクトリ以下のファイルやディレクトリを表示することができ、選択したファイルをコマンドラインにペーストすることができます。

fzfの絞り込み画面での操作方法

絞り込み画面を表示中は、以下の操作でカーソルの移動などができます。

キー操作
Ctrl-k、Ctrl-pカーソルを上に移動
Ctrl-j 、Ctrl-nカーソルを下に移動
Enterアイテム選択
Ctrl-c、Ctrl-g、ESC終了
Tab、Shift-Tab複数アイテム選択(マルチセレクトモード時)

fzfの使い方

fzfの具体的な使い方や便利な方法をご紹介します。

標準出力の内容を対象に検索する

標準出力をパイプでfzfコマンドで渡すと、標準出力の内容を対象に検索します。

# 例
find . | fzf

パイプの詳しい使い方については、以下リンクからご覧ください。

https://envader.plus/course/1/scenario/1006

隠しディレクトリを含んだディレクトリ一覧の表示

ディレクトリを移動するときに便利な関数です。関数名を入力してからctrl-tを実行すると、隠しディレクトリを含んだディレクトリ一覧が表示されます

 fda(){
   local dir
  dir = $( find $ {1 :-。} -type d 2> / dev / null | fzf + m )  &&  cd  " $ dir " 
}

プレビューウィンドウを表示する

以下のコマンドを実行すると、リストを選択したときにファイルの中身が見られます。

fzf --preview 'head -100 {}'

ディレクトリツリーを表示する

.bashrc.zshrcに追記すると、Alt-c(macだとoption)でディレクトリツリーを表示する環境変数を設定します。

export FZF_ALT_C_OPTS="--preview 'tree -C {} | head -200'"

TABを使う

コマンドの後に**を入力後TABを押すと入力してる文字からインクリメンタル検索できます。ファイル以外にも使えます。

kill -9 **<TAB>
実行中のプロセスをリストから選んでkillする

ssh ** <TAB>
telnet ** <TAB>
接続先のホストをリストから選択できる

unset  ** <TAB>
環境変数を削除

vimと連携

vimと連携しているfzf.vimが用意されています。プラグインマネージャーを使ってインストールします。

gitと連携

branchの内容を見ながらcheckoutしたい時などに便利です。

以下のような関数を.bashrc.zshrcに追記します。

ローカルにあるbranchを選択して切り替えられる
fbr() {
  local branches branch
  branches=$(git --no-pager branch -vv) &&
  branch=$(echo "$branches" | fzf +m) &&
  git checkout $(echo "$branch" | awk '{print $1}' | sed "s/.* //")
}

まとめ

FZFの公式サイトにはほかにもたくさんの便利な機能が載っていますので、ぜひ一読してください。

問題を解くためには、十分な画面サイズのPC環境をご利用下さい。