Поддержка Git Color UI для 256 цветов?
Я пытаюсь раскрасить свой вывод Git, используя собственную цветовую палитру XTerm 256. Есть какой-либо способ сделать это? Я не могу заставить его работать.
например в .gitconfig
,
[color]
ui = auto
[color 'branch']
local = colour33
remote = colour46
current = colour27
И т.п.
Я знаю, что это форматирование работает, когда вы указываете различные основные цветовые термины; голубой, пурпурный, желтый и атрибуты; тусклый, яркий, уль, жирный и т. д.
Но я просто не могу найти ничего в отношении использования полноцветной палитры, доступной для терминала с 256 цветами, без фактического изменения самих 8 основных цветовых терминов в реальной паллете.
В документации или руководствах нет ничего, что я мог бы найти.
Я знаю, что разные программы, похоже, используют разные синтаксис для определения цвета, поэтому я могу просто использовать неправильный синтаксис или я единственный, кто когда-либо хотел сделать такую вещь.
Я предполагаю git-config
будет поддерживать только те основные 8 цветов с различными атрибутами на основе того, что git-config
Страница man говорит, так что, если это невозможно, есть ли способ изменить эти цвета в цветовой палитре терминалов, НО только для одной программы, как в этой ситуации, Git? Может быть, Perl-скрипт, который экспортирует эти значения только тогда, когда git-config
ссылается на них, но удаляет их как только git-config
закончен?
И нет, это не слишком много хлопот, чем стоит. Мне нравится мой eyecandy в терминале, и я бы сделал это сам, если бы смог найти ресурс, который объясняет нечто подобное.
2 ответа
Синтаксис для цвета: [fg [bg]] [attr]...
Что касается цветов, вы можете использовать именованные (обычный, черный, красный, зеленый, желтый, синий, пурпурный, голубой и белый) или просто номер цвета в палитре 256 без префикса.
Поддерживаемые атрибуты: полужирный, тусклый, ul, мигать и обратный.
Таким образом, ваша конфигурация может выглядеть следующим образом (протестировано с git 1.8.5.3):
[color "branch"]
local = 33
remote = 46
current = 27
Я заглянул в исходный код git, чтобы найти ответ.
Обратите внимание, что:
- поддержка цветов теперь задокументирована (январь 2015, Git 2.2.2, commit 0edad17):
документы: описать ANSI 256-цветной режим
Наши спецификации цвета поддерживают расширение ANSI 256 цветов в течение многих лет, но мы никогда не документировали его.
git config
Страница man теперь включает в себя:
Цвета (передний план и фон) также могут быть заданы в виде чисел от 0 до 255;
они используют ANSI 256-цветной режим (но учтите, что не все терминалы могут поддерживать это)
- использование числового значения для цвета будет более надежным с Git 2.2.2 (январь 2015 г.).
Смотрите коммит d0e08d6 от Джеффа Кинга (peff
):
конфиг: исправить парсинг 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
"как цветовая спецификация по умолчанию) будет barf, утверждая, что"-1
"это не вариант.
Вместо этого мы должны относиться--get-color
а также--get-colorbool
как биты действия, так же, как--add
,--get
и все остальные действия, а затем проверьте, что полученные нами неопционные аргументы являются нормальными.
Это устраняет причуды, приведенные выше, и делает эти два варианта такими же, как и все остальные.Это "исправляет" тест в
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) допускают полные 24-битные спецификации цветов RGB, используя расширение стандартной цветовой схемы ANSI.
Давайте позволим пользователям указывать шестнадцатеричные цвета RGB, включая самую важную функцию ярко-розовых украшений для ссылок:
git log --format="%h%C(#ff69b4)%d%C(reset) %s"