ターミナルカスタマイズコース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環境をご利用下さい。