Windows でも Grep したい

no extension

個人的に ATOM Editor で不満だったのは grep 機能(正しくは project-find)がアレで微妙に使い勝手が悪いことだった。

いや, ATOM Editor の中で作業する分には不満はないんだよ。 でも本当は任意の場所にあるファイルを grep して結果をテキストで吐いて欲しかったわけ。 この点では秀丸の使い勝手がよかった1

UNIX 系プラットフォームには当然のようにある grep だが Windows にはない。 MSYS2 のようなエミュレータを使う手もあるが,やっぱり Windows でも普通に grep したいのである。 findstr.exe じゃ役不足なんだってば!

いっそ Go 言語で自作するか? いやいや,「車輪の再発明」は絶対ドツボにはまる。 などと葛藤していたのだが,なんと! 既に Go 言語製の grep を公開されてる方がいた。

“vimgrepの様に複数のエンコーディングに対応していて、検索パターンにマルチバイト文字を含んだ正規表現が使えて、windowsでもちゃんと動いて、ついでといっちゃあなんだが、"**/*.txt"で再帰検索してくれる様なgrep無いかなぁと思ってたんですが、やっぱり無いので作りました。”

via 日本語grepが出来るjvgrepというのを作った。

ありがたや。

最近のバージョンはバイナリを配布してないようなので,大人しく

$ go get -u -v github.com/mattn/jvgrep

でインストールする。 もう mattn/go-iconv は使ってないっぽいので iconv.dll とかは不要なようだ。

パスの再帰検索が地味にありがたい。

jvgrep を NYAGOS の Alias に組み込む

NYAGOS では既定の設定で grepfindstr.exe の alias として登録している。 これを ~/.nyagos ファイルで上書きする。 以下の記述を追加して再起動。

nyagos.alias.grep = "jvgrep.exe"

試し打ち。

$ cd C:\path\to\nyagos

$ grep grep **/*.lua
./nyagos.d/comspec.lua:16:nyagos.alias.grep = "findstr.exe"

よーし,うむうむ,よーし。

ブックマーク


  1. 他にも ATOM Editor では巨大テキストを実質的に扱えないなど微妙だが大事なところで不満があるのだが,概ね使えてる。 [return]