git grepの-Cってオプションを初めて知った。
-<num>, -C <num>, --context <num> Show <num> leading and trailing lines, and place a line containing -- between contiguous groups of matches.
マッチした行の上下指定行数を表示してくれるらしい。例えばemacsでdefgroupどうやって定義しているのかなって知りたかったら
git grep -C 2 -e defgroup
とすると、以下のようにぱっと見で使えるデータが返ってくる。便利。
それ以外にもいろいろgit grepにはオプションがあった。--and, --or, --not, -eを使って、うまく検索してあげる事も出来る。このあたりはエンジニアだったら指定は分かりやすいかも。
# require と anythingの両方を含む行 git grep -e require --and -e anything # require と anythingのどちらかを含む行 git grep -e require --or -e anything # anythingは含むけど、requireは含まない行 git grep -e anything --and --not -e require # anythingを含む行で、かつ、moccurかctagsのどちらかを含む行 git grep -e anything --and \( -e moccur --or -e ctags \)
あと-nをつけてあげると、git grepで検索された行の、ファイルにおける行番号も見れる。これはgrep.lineNumberをtrueにしておいてあげると
git config --global grep.lineNumber true
さらに-EをつけてあげるとPOSIX extended regexpで検索をかけられる。数字にマッチさせるには
git grep --extended-regexp -e "[0-9]+"
さらに-Pをつけてあげるとperl regexpで検索できる。しかしUSE_LIBPCREをつけて、perlをコンパイルしないといけないので、面倒で使ってない。
いろいろべんりですね。