Цвет ANSI в git отображается неправильно


недавно я переключился на SLES 11. Я нашел проблему для команды git. Весь цвет ANSI не может быть отображен. Вместо этого он показывает код ANSI следующим образом:

* ESC[33m*commit 0a02124a0fd85c1f0094bcdf15bac1645e3c8630esc[m

Примечание: цвет ansi в 'ls' работает очень хорошо.

7 54

7 ответов:

попробуйте установить ваш LESS переменная окружения для включения :

LESS=-R git grep ...

если это работает, добавьте export LESS=-R на ~/.bashrc или ~/.profile или аналогичный файл запуска оболочки.

   -R or --RAW-CONTROL-CHARS
          Like -r, but only ANSI "color" escape sequences are
          output in "raw" form.  Unlike -r, the screen
          appearance is maintained correctly in most cases.
          ANSI "color" escape sequences are sequences of the
          form:

               ESC [ ... m

          where the "..." is zero or more color specification
          characters

проблема, как отмечали другие, заключается в том, что ваш терминал в порядке, но когда Git вызывает пейджер, он неправильно интерпретирует цветовые коды ANSI.

Я бы начал с unsettingLESS в вашей среде; похоже, что вы, возможно, ранее устанавливали его на что-то, скрывающее то, что нужно Git. Если это решит проблему, вот и ты. Если вы действительно должны настроить LESS обратите внимание, что Git начинается с FRSX по умолчанию, так что будьте осторожны с изменением те, Если вам это не нужно.

если вы do по какой причине хотите LESS в вашей среде, отличной от того, что вы хотите для Git, идеальный способ справиться с Git и пейджером-через core.pager переменной config. Цитировать страницу:

команда, которую git будет использовать для разбиения вывода на страницы. Может быть переопределен с помощью переменной среды GIT_PAGER. Обратите внимание, что git устанавливает переменную среды LESS в FRSX, если она не задана при запуске пейджер. Можно изменить эти настройки, установив меньшую переменную на какое-то другое значение. Кроме того, эти параметры могут быть переопределены на проектной или глобальной основе путем установки ядра.опция пейджера. Установка ядра.пейджер не влияет на поведение переменной среды LESS выше, поэтому, если вы хотите переопределить настройки по умолчанию git таким образом, вам нужно быть явным. Например, чтобы отключить параметр S в режиме обратной совместимости, установите core.пейджер на less -+$LESS -FRX. Это будет передано в оболочку по git, который переведет последнюю команду на LESS=FRSX less -+FRSX -FRX.

это, в сочетании с некоторыми знаниями о вариантах, которые вы хотите, должно привести вас туда, где вы хотите быть. (Причудливый обратно совместимый метод работает путем отключения всех параметров в настоящее время в LESS, а затем добавить обратно в те, которые вы хотите.)

в git вы можете изменить свой пейджер, чтобы использовать :

git config --global core.pager "less -R"

для меня это не работает:

git config --global core.pager less -R

поэтому вместо этого я добавил следующее К моему~/.gitconfig file

 [core]
     pager = less -R

чтобы проверить это, я сделал

git log --graph --pretty=format:"%C(yellow)%h%Creset%C(blue)%d%Creset %C(white bold)%s%Creset %C(white dim)(by %an %ar)%Creset" --all

хорошо, я понял. Эта проблема связана с переменной LESS.

следующая строка решить эту проблему:

export LESS="-erX"

У меня была та же проблема. Но почему мне нужно настроить git на одной машине и не нужно на другой? Я хочу исправить источник проблемы, потому что

git config --global core.пейджер "less-R"

похоже на обходной путь для меня.

у меня была аналогичная проблема с цветными escape-последовательностями ANSI в Git для Windows v2.7.1 в консолях Laravel Artisan и Symfony. Здесь упоминается LESS решение не решило проблему.

Так как Git для Windows открывает терминал с bash --login -i, эта строка, введенная после запуска терминала, действительно работала для меня:

bash