你怎么让`git grep`输出看起来像`ack`输出?

Civ*_*Fan 7 git grep ack

我最近发现git grep并喜欢它的速度,事实上只搜索回购中的文件.但是从未来ack(ack-grep在Ubuntu),一两件事没有被期望是输出格式,这是不幸的是更像grep比ack.去搞清楚.

ack:

  1. 在第一行打印匹配的文件名.
  2. 颜色突出显示匹配的文件名为粗体绿色.
  3. 打印的行号,和仅将行号,其中每个匹配线.
  4. 颜色凸显了行号一个大胆的黄色.
  5. 颜色突出显示各匹配的字符串一个背景黄色.
  6. 在不同文件的匹配项之间打印一个空行.

另一方面,git grep:

  • 在每个匹配的行上打印文件名.
  • 不打印行号.
  • 在不同文件的匹配之间不打印空行.
  • 颜色凸显只有在匹配的文本,一个大胆的红色.

是否有任何git grep选项,或与其他工具组合,可以使git grep输出看起来像ack输出?

tor*_*rek 10

您已经回答了部分问题(--break在文件之间插入一个空行,分别--heading打印文件名,-n或者--line-number在每行上给出行号).

其余的只是颜色选项,通过条目设置git configcolor.grep.<slot>.有关详细信息,请参阅文档,但请注意,根据您的要求,我认为这样做有:

[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
Run Code Online (Sandbox Code Playgroud)

(这表达为你看到它,git config --global --edit因为引用是凌乱的).

或者,在一个命令中设置它:

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'
Run Code Online (Sandbox Code Playgroud)

添加或减去-c选项以更改您喜欢的颜色,和/或通过设置color.grep.<name> = color而不是使用git ack别名将它们设置为首选默认值.


Civ*_*Fan 5

来自Travis Jeffery 的分组 输出,git grep例如ack:

git config --global alias.g "grep --break --heading --line-number"
Run Code Online (Sandbox Code Playgroud)

然后git g像你一样使用git grep:

git g <search_string>
Run Code Online (Sandbox Code Playgroud)

这与输出并不完全匹配ack——它缺少颜色突出显示——但对于快速解决方案来说这是可以的。