ろきメモ【ROKI MEMO】- ろきsanの備忘録 -

ろきさんの備忘録。プログラミング学習記録や開発記録、および学んだ知識等のアウトプットとシェアを目的に書いています。たまに普通のことも書きます。

【コマンド履歴を曖昧検索】ターミナルにfzfを導入して、コマンド実行をスムーズにする

スポンサーリンク

ターミナルでコマンドを実行するときのお話。

「あれ?このときコマンドなんだっけ?」
「前も実行したけど全然思い出せない」
「メモってないし、しょうがないググるか」

というときが少なからずあると思う。

過去に実行したコマンドをすべて覚えていないし、でも毎回ググったりするのも手間。
そんなとき過去に実行したコマンドをキーワードを少し入力して探すことができる。
それが「fzf」というツール。


昨日、ターミナルの環境設定(「oh-my-zsh」から「Prezto」に変更)する備忘録を書いたけど、この設定と同時に、このコマンドの履歴検索に便利な「fzf」を導入したので、今日はそっちの導入方法の備忘録を残す。

昨日の「Prezto」の記事
blog.rokisan.com



fzfとは
fzfとはいろいろググっていただきたいが、ざっくり言うと、キーワードを入力してコマンドの履歴探す便利なツール。

例えば「zsh vim」というようにキーワードを入力すると、履歴の中からそのワードを使ったコマンドを候補として出してくれる。

こんな風に。大変便利。
f:id:ahrk-izo:20200729180231p:plain

今回これを導入していく

[目次]

スポンサーリンク



1. [準備] Homebrewのアップデート

今回はHomebrewを使ってインストールしていく。
(これを使わず、Gitで取得する方法もあるけど、なんとなく僕はHomebrewを使うことにした)

とりあえずHomebrewのバージョン確認

$ brew -v
Homebrew 2.1.4
Homebrew/homebrew-core (git revision 03850a; last commit 2019-06-07)
Homebrew/homebrew-cask (git revision ed3b0; last commit 2019-06-08)

f:id:ahrk-izo:20200729180840p:plain


最近アップデートしてなかった気がするからアップデートする。

$ brew update


もう一度バージョン確認

$ brew -v
Homebrew 2.4.9
Homebrew/homebrew-core (git revision 553f7; last commit 2020-07-29)
Homebrew/homebrew-cask (git revision 247c5; last commit 2020-07-29)

f:id:ahrk-izo:20200729181044p:plain
よし。上がったね。

Homebrewを取得したときの記事はこちら
blog.rokisan.com

2. fzfの取得

インストール元は、こちらのGitHubのリポジトリ。
https://github.com/junegunn/fzf

基本的に、ここの「Using Homebrew or Linuxbrew」に書いたある部分の通りに行う。
書いてあるのは、

brew install fzf

# To install useful key bindings and fuzzy completion:
$(brew --prefix)/opt/fzf/install

「$(brew --prefix)」ってのはHomebrewのインストール先のディレクトリ
実行してみるとわかる。

$ brew --prefix
/usr/local

f:id:ahrk-izo:20200729181743p:plain
つまり、/usr/local ってこと。(環境によって変わるかも)


ということで、実際に実行してfzfを取得してみる。

fzf取得

$ brew install fzf

f:id:ahrk-izo:20200729181932p:plain
はい。取得成功。


ちなみに、Homebrewではなく、gitを使う場合は

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

です。

2. fzfのインストール

取得したfzfをインストールする。これも書いてある通りに実行する。

fzfインストール

$ /usr/local/opt/fzf/install

※「$(brew --prefix)」は、「/usr/local」

3回Yes or No を聞かれるので、すべてYesにする。

Do you want to enable fuzzy auto-completion? ([y]/n)
→オートコンプリート有効にするかい?→Yes

Do you want to enable key bindings? ([y]/n)
→キーバインド有効にするかい?→Yes

Do you want to update your shell configuration files? ([y]/n)
→シェルの設定ファイルをアップデートしたい?→Yes

まぁこんな感じ。
最後の設定ファイルの件は、(僕の場合はZshなので~/.zshrcに)

[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh

の1行が追記される。

f:id:ahrk-izo:20200729182149p:plain


実行結果に、

Finished. Restart your shell or reload config file.
   source ~/.bashrc  # bash
   source ~/.zshrc   # zsh

と表示されたので、有効にするにはシェルを再起動するか、sourceコマンド実行する。(まぁ再起動が確実)


スポンサーリンク



3. fzfを確認する

このインストールで、fzfとfzf-tmuxというのが使えるようになったはずなので、それぞれバージョンを確認してみる。

$ fzf --version
0.21.1 (brew)

$ fzf-tmux --version
fzf-tmux (with fzf 0.21.1 (brew))

f:id:ahrk-izo:20200729183242p:plain

よし。問題なし。

では本題の曖昧なキーワードで履歴検索してみる。

Control + R
f:id:ahrk-izo:20200729183418p:plain
で履歴表示して、

そのまま例えば「zsh」と入力すると、
f:id:ahrk-izo:20200729183534p:plain
よし。バッチリ。


[おまけ] ほかのキーバインドとか

https://github.com/junegunn/fzf の「Key bindings for command-line」の部分に書いてあるやつだけど、

Ctrl + t : カレント以下のファイル、ディレクトリ表示
Ctrl + r : コマンド履歴
Alt + c (option + c): カレント以下ディレクトリ

これはこれで便利そう。



以上。