我最近发现了 git grep
并开始喜欢它的速度和事实上只搜索 repo 中的文件。但是来自 ack
(Ubuntu 中的 ack-grep
),还有一点需要改进的是输出格式,不幸的是,它更像 grep
比 ack
。去图吧。
ack
:
- 在第一行单独打印匹配的文件名。
- 颜色以粗体绿色突出显示匹配的文件名。
- 打印行号,仅行号,每个匹配行。
- 用粗体黄色突出显示行号的颜色。
- 颜色以背景黄色突出显示每个匹配字符串。
- 在来自不同文件的匹配项之间打印一个空行。
另一方面,git grep
:
- 在每个匹配的行上打印文件名。
- 打印无行号。
- 在来自不同文件的匹配项之间打印无空行。
- 颜色仅匹配的文本,粗体红色。
是否有任何一组 git grep
选项,或与其他工具的组合,可以使 git grep
输出看起来像 ack
输出?
最佳答案
您已经回答了自己问题的一部分(--break
在文件之间插入一个空行,--heading
单独打印文件名,-n
或 --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
将它们设置为您喜欢的默认值而不是使用 git ack
别名。
关于git - 如何使 `git grep` 输出看起来像 `ack` 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39581198/