I've recently found git grep
and come to like its speed and de facto searching of only the files in the repo. But coming from ack
(ack-grep
in Ubuntu), one thing left to be desired is the output formatting, which is unfortunately much more like grep
than ack
. Go figure.
ack
:
On the other hand, git grep
:
Is there any set of git grep
options, or combo with other tools, that can make git grep
output look like ack
output?
You've already answered part of your own question (--break
inserts a blank line between files, --heading
prints the file name separately, and -n
or --line-number
gives you line numbers on each line).
The rest is just color options, which are set in git config
via the color.grep.<slot>
entries. See the documentation for full details, but note that based on what you asked for, I think this does the trick:
[alias]
ack = -c color.grep.linenumber=\"bold yellow\" \
-c color.grep.filename=\"bold green\" \
-c color.grep.match=\"reverse yellow\" \
grep --break --heading --line-number
(this is expressed as you'd see it in git config --global --edit
since the quoting is messy).
Or, to set it up in one command:
git config --global alias.ack '-c color.grep.linenumber="bold yellow"
-c color.grep.filename="bold green"
-c color.grep.match="reverse yellow"
grep --break --heading --line-number'
Add or subtract -c
options to change whatever colors you like, and/or set them to your preferred defaults by setting color.grep.<name> = color
instead of using the git ack
alias.