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 で Ctrl+R のコマンド履歴検索を快適にする方法

0
Last updated at Posted at 2026-09-28

はじめに

先日出社して仕事をしていた際、後輩から「便利なコマンドを見つけたので共有します!」と言われ、「どれどれ?我Linuxコマンドはそれなりに知っておるぞ?」とうかがったところほんとに便利だったのでこの記事に残そうと思いました。良い後輩を持ちました。そして出社もたまには悪くないですね。。
さて、本記事は、bash のコマンド履歴検索を便利に行いたいという願望のある方向けです。コマンドの実行履歴を「あいまい検索・一覧プレビュー・選択」できる環境を作れるようになります。※記事自体はUbuntu / WSL2 の bash を前提にしていますが、他の環境でも考え方は同じです。

筆者環境: WSL2 (Ubuntu) + bash。fzf は apt でインストールしたものを利用してます。

fzf とは

fzf(fuzzy finder)は、コマンドラインで動く汎用のあいまい検索ツールです。標準入力で受け取った行を、インタラクティブに絞り込み・選択できます。

  • 高速: 数百万行でもミリ秒単位で処理できるよう最適化されている
  • ポータブル: 単一バイナリで動作する
  • シェル統合が付属: Bash / Zsh / Fish 向けのキーバインドが同梱されている

シェル統合を有効にすると、次の3つのキーバインドが使えるようになります。

キー 動作
Ctrl+R コマンド履歴をあいまい検索して挿入
Ctrl+T カレント配下のファイル/ディレクトリを検索して挿入
Alt+C ディレクトリを検索して cd

本記事では、このうち Ctrl+R に絞って解説します。

Ctrl+R を fzf 化すると何が変わるか

bash 標準の Ctrl+R をご存知でしょうか。
bash上でCtrl+R は実行したコマンド履歴を検索できる便利なショートカットです。
しかし、デフォルトでは逐次インクリメンタル検索で「1件ずつ」しか候補を辿れません。機能そのものは便利なのですが、検索時のヒット条件を考えるのが難しく、うろ覚えのコマンドを探すのは大変で、使っていると「もうちょっと便利になればなぁ」という気持ちになります。なって下さい。

しかし、fzf を有効にすることでCtrl+Rを以下の様に進化させることができます。

  • 入力した語句にあいまいマッチした履歴が一覧で表示される
  • 複数の候補を↑↓で見比べながら選べる
  • スペース区切りで複数キーワードのAND検索ができる

「昨日打った、あの docker の長いコマンド…」を数文字で手繰り寄せられます。

インストールとキーバインドの有効化

インストール

# Ubuntu / Debian / WSL2
sudo apt install fzf

# macOS (Homebrew)
brew install fzf

キーバインドを有効化する(.bashrc)

apt 版の fzf は、キーバインド定義ファイルを /usr/share/doc/fzf/examples/ 配下に置きます。これを .bashrc で source すれば Ctrl+R が有効になります。

~/.bashrc
# fzf のキーバインド有効化設定
source /usr/share/doc/fzf/examples/key-bindings.bash

この1行で が使えるようになります。
※設定後は反映を忘れずに。

source ~/.bashrc

使い方 — あいまい検索の構文

Ctrl+R を押すと検索画面が開きます。ただ文字を打つだけでもあいまいマッチしますが、構文を覚えると精度が上がります。

記法 意味 例
abc あいまいマッチ posgre が postgres にヒット
'word 完全一致(その語を含む) 'docker
^word 前方一致 ^git
word$ 後方一致 .log$
!word 除外(含まない) !test
foo bar AND(スペース区切り) git commit
foo | bar OR py$ | rb$

例: docker !test ^sudo なら「sudo で始まり、docker を含み、test を含まない」履歴だけに絞り込めます。

おまけ(さらに便利にするカスタマイズ)

外観と挙動を調整する(FZF_DEFAULT_OPTS)

すべての fzf 呼び出しに効くデフォルトオプションです。

~/.bashrc
export FZF_DEFAULT_OPTS="--height 40% --layout=reverse --border"
  • --height 40%: 画面全体を占有せず下部40%に表示
  • --layout=reverse: 入力欄を上に(一覧が上から並ぶ)
  • --border: 枠線を表示

Ctrl+R だけの挙動を調整する(FZF_CTRL_R_OPTS)

Ctrl+R 専用のオプションです。公式でも紹介されている「Ctrl+Y で選択コマンドをクリップボードにコピー」の例が便利です。

~/.bashrc
export FZF_CTRL_R_OPTS="
  --bind 'ctrl-y:execute-silent(echo -n {2..} | clip.exe)+abort'
  --color header:italic
  --header 'Press CTRL-Y to copy command into clipboard'"

上記の clip.exe は WSL2 向けです。環境に合わせて置き換えてください。

  • WSL2: clip.exe
  • macOS: pbcopy
  • Linux (X11): xclip -selection clipboard や xsel -b

まとめ

  • fzf はコマンドラインのあいまい検索ツールで、シェル統合により Ctrl+R を強化できる
  • 有効化は .bashrc に source .../key-bindings.bash(または新版なら eval "$(fzf --bash)")の1行
  • あいまい検索の構文(' ^ $ ! とスペース区切りAND)を覚えると絞り込みが速い

参考

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?