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

时间:2016-09-19 20:04:24

标签: git grep ack

我最近发现git grep并且喜欢它的速度和事实上只搜索回购文件中的文件。但是来自ack(Ubuntu中的ack-grep),还有一件事需要输出格式化,不幸的是更像grep而不是ack。去图。

ack

  1. 第一行上打印匹配的文件名
  2. 颜色突出显示匹配的文件名 a 粗体绿色
  3. 打印行号, 行号每个匹配行
  4. 颜色突出显示行号 加粗黄色
  5. 颜色突出显示每个匹配字符串 背景黄色
  6. 在不同文件的匹配项之间打印空行
  7. 另一方面, git grep

    • 每个匹配上打印文件名
    • 打印无行号
    • 在不同文件的匹配项之间打印无空行
    • 颜色突出 匹配文字加粗红色

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

3 个答案:

答案 0 :(得分:10)

您已经回答了部分问题(--break在文件之间插入一个空行,--heading分别打印文件名,-n或{{1} }给出每行的行号。)

其余的只是颜色选项,通过--line-number条目set in git config。请参阅文档以获取完整的详细信息,但请注意,根据您的要求,我认为这样可以解决问题:

color.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 中看到它,因为引用很乱)。

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

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' 选项以更改您喜欢的颜色,并/或通过设置-c而不是使用color.grep.<name> = color别名将其设置为首选默认值。

答案 1 :(得分:3)

Travis Jeffery群组 git grep输出,如ack

git config --global alias.g "grep --break --heading --line-number"

然后像git g一样使用git grep

git g <search_string>

这与ack输出不完全匹配 - 它缺少颜色突出显示 - 但是对于快速解决方案,它没问题。

答案 2 :(得分:0)

应用this patch后,几乎所有操作都可以通过Git配置完成:

git config --global color.grep.linenumber "bold yellow"
git config --global color.grep.filename "bold green"
git config --global color.grep.match "reverse yellow"
git config --global grep.linenumber true
git config --global grep.heading true

(丢失的位是--break的配置选项。)