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オプションなどを付けても良いでしょう