ssh от msysgit не отображает цвета

1156
Community

Я использую Консоль 2 для запуска оболочки Bash msysgit в Windows. Когда я обращаюсь sshк серверу (серверу SLES или RHLE) и выполняю lsили использую, viя не получаю никаких цветов. Тем не менее, цвета работают правильно, если я использую PuTTY . Я не делал никаких настроек цвета в Console 2, Bash или PuTTY, а цвета на серверах (насколько мне известно) не менялись вообще.

После прочтения iTerm2 теряют «LS» цвет, если я SSH к серверу я попробовал, ls --color=alwaysи что делает отображение некоторых цветов, но не все из них. Он показывает цвета исполняемого файла и папки (зеленый и синий соответственно в моем случае), но не zip-файлы (должен быть красным в моем случае). Опять же, PuTTY отображает их правильно.

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

Есть идеи?

6
проверьте, что возвращает 'echo $ TERM', когда вы входите в консоль 2 / putty. Вполне возможно, что ваш bashrc или vimrc настроены на включение цветов только на терминалах, которые определенно его поддерживают. то есть в Arch Linux вы должны вручную добавить в 'экран' в качестве типа терминала для экрана, чтобы иметь цвета. Кроме того, для псевдонимов вы можете сделать это в своем личном bashrc (~ / .bashrc), и это повлияет только на вас, а не на других администраторов. Justin 11 лет назад 0
Консоль 2 сообщает `cygwin`, а PuTTY сообщает` xterm`. К сожалению, я использую общую учетную запись администратора на этих серверах, поэтому у меня нет собственного файла `.bashrc`. 11 лет назад 0
Это на шаг ближе. Я могу сделать `TERM = xterm ssh my.awesome.server -l username`, и я снова получу свои цвета, используя` ls`. `vi` полностью нарушает эту настройку. 11 лет назад 0

2 ответа на вопрос

3
Maximus

Console2 - это «настоящий» консольный эмулятор, но PuTTY запускает приложения через каналы.

Это означает, что когда ssh обнаруживает «нет консольного окна» (каналы), он переключается на использование escape-последовательностей ANSI для отображения цветов. Но стандартная консоль Windows не поддерживает escape-коды, поэтому, когда ssh обнаруживает ее (и Console2 соответственно), она думает, что ANSI недоступен, и переключается на использование win32 API, реализация которого, как мне кажется, намного хуже.

Я знаю два инструмента, выводящих ANSI на консоль Windows - ANSICON и мой собственный ConEmu, но msys не знает о них и не может обнаружить возможности ANSI.

Однако у меня есть некоторые мысли по этому поводу - как обмануть определенные приложения, которые они запускают в трубе терминала (PTY).

3
Jeremy Fujimoto-Johnson

Я считаю, что вы ищете переменную окружения LS_COLORS. У этой статьи есть хорошая статья: http://www.bigsoft.co.uk/blog/index.php/2008/04/11/configuring-ls_colors

Это определенно исправляет цвета в `ls`. Как ни странно, что-то, что я изменил, привело к тому, что `vi` начал отображать цвета (или я галлюцинировал, когда думал, что это не работает). 11 лет назад 0

Похожие вопросы