git - 如何使 `git grep` 输出看起来像 `ack` 输出?

标签 git grep ack

我最近发现了 git grep 并开始喜欢它的速度和事实上只搜索 repo 中的文件。但是来自 ack(Ubuntu 中的 ack-grep),还有一点需要改进的是输出格式,不幸的是,它更像 grepack。去图吧。

ack:

  1. 第一行单独打印匹配的文件名
  2. 颜色以粗体绿色突出显示匹配的文件名
  3. 打印行号,行号每个匹配行
  4. 粗体黄色突出显示行号的颜色。
  5. 颜色以背景黄色突出显示每个匹配字符串
  6. 在来自不同文件的匹配项之间打印一个空行

另一方面,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/

相关文章:

git - 我怎样才能生成水平的、ascii 的 git 历史日志表示?

多个 0.5GB 二进制文件的 GIT Rebase Fatal

python - 当 grep 找不到匹配项时,使用 grep 命令的 subprocess.check_output 失败

python - `_softmax_cross_entropy_with_logits`在tensorflow中定义在哪里?

scons - 将 SCons 文件添加到 ack 搜索

regex - ACK:从搜索中排除特定路径(目录及其子目录)

Git:从错误的分支创建新分支

Git:在分支之间切换,并创建回 pull 请求

bash - 对 awk 或 grep 多模式搜索和条件使用彩色输出

linux - Grep 长度为 3 的行