1

Я изменил свой .bashrc, чтобы включить export PS1="\033[1;33m\u@\h: \w>\033[0m" чтобы моя подсказка оболочки была цветной, но кажется, что \033 испортил вывод git (войти и отличаться, по крайней мере). Я вижу что-то вроде: ESC[33mcommit long-commit-number ESC[m .

Я также попытался \e[ вместо \033[ , но я все еще вижу ESC[33m . Есть ли способ избежать этого, но сохранить цвет для приглашения оболочки?

1 ответ1

3

Ваша подсказка неверна, но не связана с проблемой git.

Чтобы сделать редактирование строк (т.е. узнать, где находится курсор после печати приглашения), bash необходимо точно знать, насколько широким является приглашение. Он не может распознать каждую возможную специфичную для терминала escape-последовательность, поэтому необходимо явно указать, что определенные части приглашения невидимы; они должны быть окружены кодами \[ и \] . Например:

PS1="\[\033[1;33m\]\u@\h: \w>\[\033[m\]"

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

Однако ничто из этого не влияет на мерзавца. Причина, по которой git log печатает ESC[33m заключается в том, что сам git хочет, чтобы эта строка отображалась желтым цветом - он всегда делает это, когда включена опция color, color.ui . Причина, по которой вы видите слово "ESC" вместо желтого, заключается в том, что ваш $ PAGER не распознает последовательность; он думает, что вы читаете файл с двоичными данными (в отличие от читабельного текста).

Если вы используете по умолчанию less пейджера в качестве $ PAGER, возможно, вы добавили несколько пользовательских параметров в переменную $LESS и забыли тот, который допускает цвета, -R . Обычно git устанавливает $LESS внутренне при запуске пейджера, но если вы установите эту переменную самостоятельно, git не будет к ней прикасаться, и вы должны добавить к ней -R :

export LESS="R"

export LESS="e M q R F X z -3"

...Или что-то вдоль этих линий.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .