Git支持256色的彩色用户界面吗?

8
我正在尝试使用本地 XTerm 256 色板来为 Git 输出着色。有没有办法可以实现这一点?我似乎无法使其工作。例如在 .gitconfig 文件中。
[color]
  ui = auto
[color 'branch']
  local = colour33
  remote = colour46
  current = colour27

等等。
当您指定各种基本颜色术语时,如青色、品红色、黄色和属性词dim、bright、ul、bold等,我知道这种格式化的方式是有效的。

但是,我无法找到有关在实际调色板中使用完整的256色调色板而不更改8个基本颜色术语本身的内容。

文档或手册中也没有任何相关信息。

我知道不同的程序似乎使用不同的语法来指定颜色,因此我可能只是在使用错误的语法,或者我是唯一想要这样做的人。

我认为git-config仅支持基本的8种颜色,具有各种属性,基于git-config手册页面上的说明。因此,如果不可能,是否有一种方法可以更改终端的颜色调色板,但仅适用于一个程序,比如在这种情况下使用Git?也许可以编写一个perl脚本,在git-config引用它们时仅导出这些值,但在git-config完成后立即取消设置它们?

不,这并不会带来太多麻烦。我喜欢在终端中使用图案,如果我能找到类似的资源来解释一些东西,我会自己解决的。


1
注意:如果256种颜色不够用,git 2.3.0(2015年2月)将允许使用24位颜色!请参见下面我编辑的答案 - VonC
2个回答

8
颜色的语法为:[fg [bg]] [attr]... 对于颜色,您可以使用命名的颜色(normal, black, red, green, yellow, blue, magenta, cyan, and white) 或者256调色板中仅使用数字而不需要前缀。
支持的属性有: bold, dim, ul, blink, 和reverse。
因此,您的配置可能如下所示(已在git 1.8.5.3中测试):
[color "branch"]
    local = 33 
    remote = 46
    current = 27

我已经查看了 git源代码,以找到答案。


6
顺便提一下,为了测试颜色,你可以使用类似于 echo $(git config --get-color "" "120 bold reverse") color test $(git config --get-color "" reset) 的命令。 - Jan Včelák

4
注意:
  • 颜色支持现在已有文档记录(2015年1月,Git 2.2.2,提交0edad17):

文档:描述ANSI 256色模式

我们的颜色规范多年来一直支持256色的ANSI扩展,但我们从未对其进行过记录。

git config man page现在包括:

颜色(前景和背景)也可以用0到255之间的数字表示;
这些使用ANSI 256色模式(但请注意,并非所有终端都支持此功能)


配置:修复解析"git config --get-color some.key -1"的问题

大多数git-config的命令行选项使用OPT_BIT来选择动作,然后以上下文相关的方式解析非选项参数。但是,--get-color--get-colorbool与其他选项不同,它们是OPT_STRING,需要将选项名称作为参数。

这通常可以工作,因为我们随后会使用这些字符串的存在来设置动作位。但是,这意味着选项解析器将继续寻找选项,即使在键之后(因为它不是非选项;它是一个选项的参数)。并运行:

git config --get-color some.key -1

(将“-1”用作默认颜色规范)会出错,声称“-1”不是选项。相反,我们应该像--add--get和所有其他操作一样将--get-color--get-colorbool视为操作位,然后检查我们得到的非选项参数是否合理。这解决了上面的怪异问题,并使这两个选项与其他选项一样。 这“修复”了t/t4026-color.sh中的一个测试,该测试检查将“-2”作为颜色输入是否失败(它确实失败,但在此补丁之前,因为parseopt出错,而不是因为我们实际上尝试解析颜色)。 这也可以捕获其他错误,例如:
git config --get-color some.key black blue

之前的代码会默默地忽略“blue”,但现在会抱怨你提供了太多的参数。但是,这样做可能会导致一些退化情况。我们现在不允许这些,尽管它们目前按照您的预期工作。
  # specifying other options after the action
  git config --get-color some.key --file whatever

  # using long-arg syntax
  git config --get-color=some.key

如果256种颜色不够用,您可以导入更多的颜色。
请参见提交17a4be2(Git 2.3.0,2015年第一季度)

parse_color:支持24位RGB值

一些终端(如XTerm)允许使用常规ANSI颜色方案的扩展来完全指定24位RGB颜色规范。
让我们允许用户指定十六进制RGB颜色,使得重要的热粉色参考装饰功能成为可能

git log --format="%h%C(#ff69b4)%d%C(reset) %s"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接