5

При запуске командной строки Mercurial с включенным расширением цвета цвета выглядят так, как ожидается в командной строке Windows (cmd.exe). Однако в cygwin цвета отображаются как базовые коды ANSI (например: ←[0;34;1m).

Когда я искал решение, казалось, что цвета чаще работают в cygwin, но не в командной строке. Я забыл установить что-то полезное в cygwin, которое активировало бы отображение цветов?

Я испытываю проблему как на Windows 7 64-битной, так и на Vista 32-битной машине. Я пробовал обе оболочки: bash и tcsh . Я могу видеть цвета в обеих оболочках, если я делаю что-то вроде ls --color .

2 ответа2

6

Когда вы используете консоль Cygwin, интерпретация управляющих последовательностей выполняется библиотекой Cygwin. Эта DLL, конечно, связана только с программами Cygwin, поэтому не-Cygwin программа, такая как Mercurial, не сможет использовать это.

Так почему же он работает при запуске в консоли cmd.exe, которая в первую очередь не понимает последовательности управления? Я предполагаю, что Mercurial использует API консоли Windows, когда считает, что работает в консоли, и контролирует последовательности, когда считает, что работает в терминале. Возможно, это зависит от того, установлен ли TERM, поэтому попробуйте, что произойдет, если вы сбросили TERM.

В противном случае попробуйте запустить его в терминале Cygwin, таком как mintty или rxvt. Там разница в том, что управляющие последовательности интерпретируются этими программами, а не Cygwin DLL.

3

В вашем наборе файлов .hgrc

[color]
mode = ansi

или же

[color]
mode = auto

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