【问题标题】:Git Color UI support for 256 Colors?Git Color UI 支持 256 种颜色?
【发布时间】:2014-02-27 15:53:24
【问题描述】:

我正在尝试使用我的原生 XTerm 256 调色板为我的 Git 输出着色。 有没有办法做到这一点?我似乎无法让它工作。

例如.gitconfig

[color]
  ui = auto
[color 'branch']
  local = colour33
  remote = colour46
  current = colour27


我知道当您指定各种基本颜色术语时,这种格式有效;青色、品红色、黄色和属性;暗、亮、ul、粗体等
但我只是找不到任何关于使用 256color 终端可用的完整调色板的任何信息,而无需在实际调色板中实际更改 8 个基本颜色术语本身。
我也找不到任何文档或手册页中的任何内容。
我知道不同的程序似乎使用不同的语法来指定颜色,所以我可能只是使用了错误的语法,或者我是唯一一个曾经想做这样事情的人。

我假设git-config 将仅支持那些基于git-config 手册页所说的具有各种属性的基本 8 种颜色,所以如果这是不可能的,有没有办法在终端中更改这些颜色调色板但仅适用于一个程序,例如在这种情况下,Git?也许一个 perl 脚本仅在 git-config 引用它们时导出这些值,但在 git-config 完成后立即取消设置它们?

不,这并没有比它的价值更麻烦。我喜欢终端机里的眼睛糖果,如果我能找到解释类似内容的资源,我会自己做。

【问题讨论】:

  • 注意:如果 256 种颜色不够用,git 2.3.0(2015 年 2 月)将允许 24 位颜色!见my edited answer below

标签: git terminal prompt 256color


【解决方案1】:

颜色的语法是:[fg [bg]] [attr]...

至于颜色,您可以使用命名的(正常、黑色、红色、绿色、黄色、蓝色、洋红色、青色和白色)或只是一个数字 strong> 256 调色板中的颜色,没有任何前缀。

支持的属性有:bold、dim、ul、blink 和 reverse。

所以你的配置可能看起来像这样(用 git 1.8.5.3 测试):

[color "branch"]
    local = 33 
    remote = 46
    current = 27

我已经查看了git source code 以找到答案。

【讨论】:

  • 顺便说一句,要测试颜色,您可以使用echo $(git config --get-color "" "120 bold reverse") color test $(git config --get-color "" reset)
【解决方案2】:

注意:


  • 现已记录对颜色的支持(2015 年 1 月,Git 2.2.2,commit 0edad17):

文档:描述 ANSI 256 色模式

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

git config man page 现在包括:

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


config: 修复“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”不是一个选项。
相反,我们应该将--get-color--get-colorbool 视为操作位,就像--add--get 和所有其他操作一样,然后检查我们得到的非选项参数是否合理。
这解决了上面的奇怪问题,并使这两个选项与所有其他选项一样。

This "fixes" a test in 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 种颜色不够用,您可以导入更多颜色。
请参阅commit 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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-19
    • 2019-11-10
    • 1970-01-01
    • 2014-06-21
    • 2010-10-03
    • 2022-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多