Невозможно включить 256 цветов в ConEmu
Я пытаюсь получить 256 цветов в фантастической ConEmu-Maximus5 консоли.
Обновление: Теперь он отображает только 8 цветов. Я знаю, потому что вывод "$ tput colors" равен "8"
Я выполнил инструкции и активировал:
- Поддержка TrueMod (24-разрядный цвет)
- Inject ConEmuHk
- ANSI x3.64/xterm 256 цветов
Я не понимаю, что делать с 'отметьте, есть ли буфер/слайд.'
- Я в Windows 7.
- Я запускаю ConEmu с помощью специальной прямой ссылки, поэтому он загружает файл cygwin bash.
"C:\Program Files\ConEmu\ConEmu64.exe" /cmd ""C:\cygwin\bin\bash.exe" --login -i"
- В моем профиле bashrc у меня есть → export TERM = cygwin
- Это мое пользовательское командное приглашение:
function prompt {
local RED="\[\033[0;31m\]"
local GREEN="\[\033[0;32m\]"
local COOLRED="\e[38;5;173m"
local COOLGREEN="\e[38;5;113m"
PS1="$COOLRED\[email protected]\h $LIGHT_COOLGREEN\$PWD \[\e[0m\] > "
}
prompt
- Значение ConEmuANSI в ON, кстати.
У меня есть несколько снимков экрана:
![enter image description here]()
Как вы видите, командная строка выглядит очень экстравагантной, поскольку ей не нравятся 256 цветовых настроек. Если я заменю переменные COOLRED и COOLGREEN на RED и GREEN, тогда это выглядит нормально, но это не 256 цветов.
Другие скриншоты настроек:
![enter image description here]()
![enter image description here]()
И последний sceen выстрелил в него cygwin mintty. Все в порядке. Поддерживается 256 цветов. В нем позорный монетный двор не имеет вкладок. Это в основном причина, по которой я пытаюсь перейти на ConEmu.
![enter image description here]()
Большое спасибо за помощь!!!
Ответы
Ответ 1
Bash не отправляет последовательности ANSI для консоли. Он пытается обработать их сам. И поскольку терминал * nix обычно имеет только 8-цветный (без учета 256-цветного режима), bash использует 8-цветную палитру вместо 16-цветной палитры, которая является общей для терминала Windows.
Я думаю, 256-цвет работает в mintty, потому что _isatty
возвращает ноль в этом терминале. Но он возвращает ненулевое значение в ConEmu. Может быть, в будущих сборках я решаю эту загадку (как создать реальный терминал с функциями PTY для некоторых приложений).
Что касается вопроса
У вас нет необходимости в 256-цветах. Чтобы переопределить подсказку, вы можете использовать функцию "Расширить цвет переднего плана с фоном". В breaf - настроить цвета 16, 17 и т.д. В ConEmu, установить подсказку фона в bash до # 5 (настраивается в ConEmu) и voila.
В ConEmu "Extend..." была небольшая ошибка. Используйте сборку 121016 или новее.
PS1="\e[30;45m\[email protected]\h \e[34;45m$PWD \[\e[0m\] > "
![ConEmu and real console window]()
![ConEmu settings]()
Следующая информация не соответствует вопросу, но может быть полезна
Текущая версия не поддерживает 256-цветный режим в "полном" буфере консоли (ограничение, да, удаление его в планах).
Итак, вы можете пойти двумя способами
- полностью отключить буфер прокрутки (многие способы, например "cmd -cur_console: h0" )
- работают в нижней части буфера прокрутки.
Ответ 2
Я также не мог получить 256 цветовую поддержку для работы (цвета появятся, но они выглядят так же, как 16-цветная палитра). Я переключился на цветовую схему "xterm", и теперь он работает в собственных исполняемых файлах Windows (таких как Python), но не во всем, что использует Cygwin. Кажется, что Cygwin имеет обработку последовательности с концевой победой, которую вы не можете отключить, которая побеждает инъекцию ConEmuHk
.
Это описано в вики ConEmu здесь.
Ответ 3
local COOLRED="\e[38;5;173m"
local COOLGREEN="\e[38;5;113m"
Те \e
являются, вероятно, из, например, C printf
. Вы не хотите их в оболочке script. Прикрепите оригинальную ноту \033
. Также вам не хватает закрытия \]
. Эти строки должны теперь читать
local COOLRED="\[\033[38;5;173m\]"
local COOLGREEN="\[\033[38;5;113m\]"