如何使 `git grep` 输出看起来像 `ack` 输出?
How do you make `git grep` output look like `ack` output?
我最近发现 git grep
并开始喜欢它的速度和事实上只搜索存储库中的文件。但是来自 ack
(Ubuntu 中的 ack-grep
),还有一点需要改进的是输出格式,不幸的是,它更像 grep
而不是 ack
.去图吧。
ack
:
- 在第一行上单独打印匹配的文件名。
- 颜色突出匹配的文件名 粗体绿色。
- 打印行号,只打印行号,[=31] =]每个匹配行.
- 颜色突出行号一个粗体黄色。
- 颜色突出显示每个匹配字符串一个背景黄色。
- 在来自不同文件的匹配项之间打印 空行。
另一方面,git grep
:
- 在匹配行.
的每个上打印文件名
- 打印无行号。
- 在来自不同文件的匹配项之间打印无空行。
- 颜色突出显示 仅 匹配文本,粗体红色。
是否有任何一组 git grep
选项,或与其他工具的组合,可以使 git grep
输出看起来像 ack
输出?
从Travis Jeffery,到组 git grep
输出像ack
:
git config --global alias.g "grep --break --heading --line-number"
然后像 git grep
:
一样使用 git g
git g <search_string>
这与 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
选项以更改您喜欢的任何颜色,and/or 通过设置 color.grep.<name> = color
而不是使用 git ack
别名将它们设置为您首选的默认值。
应用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
的配置选项。)
我最近发现 git grep
并开始喜欢它的速度和事实上只搜索存储库中的文件。但是来自 ack
(Ubuntu 中的 ack-grep
),还有一点需要改进的是输出格式,不幸的是,它更像 grep
而不是 ack
.去图吧。
ack
:
- 在第一行上单独打印匹配的文件名。
- 颜色突出匹配的文件名 粗体绿色。
- 打印行号,只打印行号,[=31] =]每个匹配行.
- 颜色突出行号一个粗体黄色。
- 颜色突出显示每个匹配字符串一个背景黄色。
- 在来自不同文件的匹配项之间打印 空行。
另一方面,git grep
:
- 在匹配行. 的每个上打印文件名
- 打印无行号。
- 在来自不同文件的匹配项之间打印无空行。
- 颜色突出显示 仅 匹配文本,粗体红色。
是否有任何一组 git grep
选项,或与其他工具的组合,可以使 git grep
输出看起来像 ack
输出?
从Travis Jeffery,到组 git grep
输出像ack
:
git config --global alias.g "grep --break --heading --line-number"
然后像 git grep
:
git g
git g <search_string>
这与 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
选项以更改您喜欢的任何颜色,and/or 通过设置 color.grep.<name> = color
而不是使用 git ack
别名将它们设置为您首选的默认值。
应用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
的配置选项。)