ag による検索がヒットしない場合

  • 投稿日:
  • by
  • カテゴリ:

ag (The Silver Searcher) で検索すると、たまにヒットするはずのものにヒットしないことがある。例えば、 utf-8 以外のエンコードでマルチバイトがそこそこ書かれているファイルはヒットしない。


% export LANG=ja_JP.eucJP
% cat euc_text_file
ほげ ほげ
ほげ ほげ
ほげ ほげ
hoge
% ag hoge # これがヒットしない

要は euc-jp とか shift_jis なテキストファイルはヒットしない。ag の作者は utf-8 しか扱わない素敵な環境だったのかもしれない。
だが2013年にもなって utf-8 じゃないエンコーディングのテキストを何故か扱う人間もまだいる。俺とか。
とりあえずの対策としては


% ag -a hoge
Binary file euc_text_file matches.

と、 ack と同じように -a オプションを付けて検索対象をすべてのファイルにすれば、一応ヒットしてはくれる。

あとやっぱり ack みたいに pager 使いたいわーと思ったらやっぱ皆そう思うようで
https://github.com/ggreer/the_silver_searcher/issues/67
とのことなので、 .zshrc に


alias ag="ag --pager 'less -R'"

と書いてページャ付けた。