名古屋出身ソフトウェアエンジニアのブログ

ripgrep でとりあえず使うオプション

公開:
更新:

ag は定番でしたが、本家バイナリは Windows での Unicode の扱いに難がありました1。職場の PC 更新に伴って rg に移行したので、とりあえず使うオプションを書き残します。

大文字・小文字のデフォルトと、ファイル無視規則の外し方が大きく違います。

大文字・小文字

ag はスマートケース (-S) がデフォルトです。rg は大文字・小文字を区別する (case-sensitive) のがデフォルトです。

スマートケース (-S)

パターンがすべて小文字なら大文字小文字を無視し、大文字が含まれていれば区別します。

rg -S foo

foo も Foo も FOO もヒットします。

rg -S Foo

Foo だけがヒットします。

無視する (-i)

rg -i Foo

区別する (-s)

デフォルトの動作です。

rg -s foo

設定ファイルで -S を常時有効にしているときには、その検索だけ区別したい場合に使います。

リテラル検索

パターンを正規表現ではなく、書いた文字どおりに探します。a.b は a.b だけにマッチし、aXb にはマッチしません。

rg -F "a.b"

無視規則を外す

ag -u は、無視ファイル・隠しファイル・バイナリを一度に対象にできました。rg では -u を重ねて、段階的に外します。

rg -uuu bar
  • -u は .gitignore などをリスペクトしません (--no-ignore)
  • -uu は隠しファイルも探します (--hidden)
  • -uuu はバイナリも探します (--binary)

バイナリに一致しても行の中身は出さず、一致したことだけを知らせます。中身まで表示するなら -a です。

-uuu でもシンボリックリンクは辿りません。辿るなら -L を足します。


  1. ちなみに、Windows で問題が起きないベストな ag バイナリはこれです: https://github.com/JFLarvoire/the_silver_searcher ↩︎