Не могу включить 256 цветов в ConEmu
Я пытаюсь получить 256 цветов в фантастической консоли ConEmu-Maximus5.
Обновление: теперь он показывает только 8 цветов. Я знаю, потому что вывод '$tput colors' равен '8'
Я следовал инструкциям и активировал:
- Поддержка TrueMod (24-битный цвет)
- Внедрить 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 у меня есть -> TERM экспорта = Cygwin
- Это моя пользовательская командная строка:
подсказка функции { местный КРАСНЫЙ ="\[\033[0;31 м \]" местный ЗЕЛЕНЫЙ ="\[\033[0;32 м \]" местный COOLRED="\e[38;5;173m" местный COOLGREEN = "\ e [38; 5; 113m" PS1 = "$ COOLRED \ u @ \ h $ LIGHT_COOLGREEN \ $ PWD \ [\ e [0m \]>" } незамедлительный
- Значение ConEmuANSI в ON, кстати.
У меня есть несколько снимков экрана:
Как видите, командная строка выглядит очень экстравагантно, потому что ей не нравятся 256 настроек цвета. Если я заменил переменные COOLRED и COOLGREEN на RED и GREEN, то все выглядит хорошо, но это не 256 цветов.
Еще скриншоты настроек:
И последний выстрел - это мята Сигвина. Там все в порядке. Полный 256 цветов поддерживается. Обидно, у мяты нет вкладок. Это в основном причина, почему я пытаюсь переехать в ConEmu.
Большое спасибо за помощь!!!
3 ответа
Bash не отправляет последовательности ANSI на консоль. Он пытается обработать их сам. И, поскольку терминал *nix, как правило, имеет только 8 цветов (без учета 256-цветного режима), bash использует 8-цветовую палитру вместо 16-цветовой, что является общим для терминала Windows.
Я думаю, 256 цветов работает в мятном, потому что _isatty
возвращает ноль в этом терминале. Но он возвращает ненулевое значение под ConEmu. Возможно, в будущих сборках я решу эту головоломку (как создать реальный терминал с функциями PTY для некоторых приложений).
Что касается вопроса
На самом деле вам не нужны 256 цветов. Чтобы переопределить палитру подсказок, вы можете использовать функцию "Расширение цветов переднего плана с фоном". В breaf - установите цвета 16, 17 и т. Д. В ConEmu, установите фон приглашения в bash на #5 (настраивается в ConEmu) и вуаля.
Была небольшая ошибка в обработке ConEmu "Расширить...". Используйте сборку 121016 или новее.
PS1="\e[30;45m\u@\h \e[34;45m$PWD \[\e[0m\] > "
Следующая информация не соответствует вопросу, но может быть полезна
Текущая версия не поддерживает 256-цветный режим в "целом" буфере консоли (ограничение, да, удаление его в планах).
Итак, вы можете пойти 2 пути
- полностью отключить буфер прокрутки (во многих случаях, например, "cmd -cur_console:h0")
- работать в нижней части скролл-буфера.
Я также не мог заставить работать 256 цветов (цвета показывались бы, но они выглядели так же, как 16-цветовая палитра). Я переключился на цветовую схему "xterm", и теперь она работает в собственных исполняемых файлах Windows (таких как Python), но не во всем, что использует Cygwin. У Cygwin, по-видимому, есть обработка последовательности escape-терминала, которую вы не можете отключить, что побеждает ConEmuHk
инъекции.
У меня была эта странная проблема и странное решение, и как-то это работает. и не знаю, если это с другими тоже, просто обмен информацией на случай, если это будет полезно.
Я люблю раскрашивать свои приставки и люблю использовать все реальные 256 бит RGB раскраски. После настройки, как в инструкции conemu/CMDer (я использовал разветвленную). мой 256-битный тест на окраску выглядел следующим образом. , После небольшого перебора и тестирования с моими возможностями bash 256bit. т.е. запустив эту команду:
for i in {1..16384}; do echo -en "\e[38;5;${i}mTest";done
* примечание должно быть {1..256}, но я должен был заставить его для более длинных цветных отпечатков, поэтому просто взял более длинное случайное число.. давая результат:
Но пробежав 2-3 раза, я вдруг увидел этот чистый серый оттенок
странно, но у меня это работает. Может ли быть так, что CMDer почему-то не использует полные 256 бит из-за оптимизации, и он срабатывает, когда его запускают??,
PS: мой CMDer cmd для консоли:
-cur_console:fp -cur_console:d:"C:\WS":P:"<Cobalt>":t:"test":C:"C:\Arbeit\tools\Iconka-Buddy-Ninja.ico" set "PATH=%ConEmuDrive%\Program Files\Git\usr\bin;%PATH%" & "%ConEmuDrive%\Program Files\Git\git-bash.exe" --no-cd --command=%ConEmuBaseDirShort%\conemu-msys2-64.exe /usr/bin/bash.exe -l -i
local COOLRED="\e[38;5;173m"
local COOLGREEN="\e[38;5;113m"
Те \e
s, вероятно, из, например, C printf
строка. Вы не хотите их в сценарии оболочки. Палка с оригиналом \033
нотации. Также вам не хватает закрытия \]
, Эти строки должны теперь прочитать
local COOLRED="\[\033[38;5;173m\]"
local COOLGREEN="\[\033[38;5;113m\]"