その手の平は尻もつかめるさ

ギジュツ的な事をメーンで書く予定です

git grepの代わりにgit agを使う

git grepが便利なので,同じ感覚でag (The Silver Searcher)を使ってみたいという話です.何事も速いほうが良い.

前提

ぶっちゃけagは,デフォの状態で.git/以下の内容や.gitignoreに書かれてるファイルやディレクトリなんかを検索の対象から排除するのであんま旨味は無い.

方法

以下のエイリアスを張る *1.もちろんconfigファイルを直で編集しても良いです.

$ git config alias.ag '!git ls-files | xargs ag'

git ls-filesを使って,gitで管理されているファイルの一覧を持ってきて,xargsを使ってagに渡してやるという感じ.

実際僕はこれで十分なんですが,表示と挙動をgit grep(1)っぽくしたい場合は以下のようになるでしょう.

$ git config alias.ag '!git ls-files | xargs ag --pager="less -F -R" --nogroup --color-match=0\;31 --color-path=0\;0 --no-numbers'

--pager="less -F -R"はお使いのpagerに応じて変更するか,あるいはお好みに応じてpagerオプションを取り去ると良いでしょう.

結論

$ git ls-files | xargs $COMMAND

が基本的に便利!!!!!

*1:場合によって--globalオプションなどを付けても良いでしょう