次世代grepのripgrep(rg)が便利
WindowsのCygwinやmsys2のbashでも色付きかつシェルの不具合なしで動くのが素晴らしい。(Windows環境対応のものは増えたが、コマンドプロンプト互換のシェルじゃないとちゃんと動かないものが多い。)
基本的な使い方
code:bash
# ディレクトリ以下のFooを検索(.gitignoreがある場合はignoreファイルは探さない)
$ rg Foo
# C++関連のファイルを検索(*.cpp, *.hpp, *.cxx とか)
$ rg -tcpp Foo
# Ruby関連のファイルを検索(*.gemspec, *.rb, .irbrc, Gemfile, Rakefile とか)
$ rg -truby Foo
# cppがどの拡張子を検索してくれるかは以下で確認できる
# --type-add で追加もできそう
$ rg --type-list
# C++, Ruby 【以外の】ファイルを検索
$ rg -Tcpp -Truby Foo
便利なオプション
-uを付けるとignoreを無視して検索する。
code:bash
$ rg -uu foobar # similar to grep -r
$ rg -uuu foobar # similar to grep -a -r
-iで大文字小文字
-vでマッチしないものを表示
-lでマッチしたファイルリスト
-C2で前後2行も表示
-wで常に単語境界にマッチ
—relplaceは簡単なファイル整形処理に使えそう。replaceされる行が抽出されるので置換の動作確認にもなる。
code:bash
-g でマッチするファイルだけ見つけてくれる。!で反転。
code:bash
$ rg foo -g 'README.*'
$ rg foo -g '!*.min.js'
マッチしたファイル一覧を表示、実質findと同等。
$ rg -g 'doc*' --files
タイプの追加、永続化の方法が分からなかった。
$ rg --type-add 'foo:*.{foo,foobar}' -tfoo bar
Windows環境でも"/"を使いたい
環境変数を設定せずにホームに設定ファイルを置いても設定が反映されないので注意。
環境変数RIPGREP_CONFIG_PATHにパスを設定。
RIPGREP_CONFIG_PATH=c:\Users\ongaeshi\.ripgreprc
~/.ripgreprcに以下の設定を追加。
code:bash
--path-separator=/