Ответы:
ConEmu поддерживает ANSI X3.64 с расширением цвета Xterm 256. Я автор этого консольного эмулятора.
Последовательности Ansi обрабатываются для всех процессов, запущенных на вкладках ConEmu.
AFAIK, ConEmu поддерживает больше кодов, чем Ansicon.
Ни в одном из ответов на этой странице не упоминается важный аспект новой поддержки ANSI Terminal Control, которая была добавлена на хост консоли Windows 10 в сборке 16257 (и более поздних версиях). А именно, он не включен по умолчанию. Если указанное программное обеспечение вы используете не позволяет обрабатывать ANSI, вызвав SetConsoleMode API с ENABLE_VIRTUAL_TERMINAL_PROCESSING (0x0400)
флагом, вы не будете видеть цвета или получить ANSI обработки для этого приложения.
ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
https://docs.microsoft.com/en-us/windows/console/setconsolemodeПри записи с помощью WriteFile или WriteConsole символы анализируются для VT100 и аналогичных последовательностей управляющих символов, которые управляют движением курсора, режимом цвета / шрифта и другими операциями, которые также могут выполняться через существующие API-интерфейсы консоли. Для получения дополнительной информации см. Последовательности виртуального терминала консоли.
Я предполагаю , что причину примеры , приведенные на этой странице работе является то , что, по- видимому, echo
команда (или , возможно, пакетной обработкой части CMD.EXE
или conhost
) позволяет обрабатывать ANSI путем вызова API только что упомянул. Но многие другие инструменты или исполняемые файлы, которые пишут stdin
или stdout
могут не делать этого, в этом случае вы не увидите цвет для этих процессов.
К счастью, глобальное значение по умолчанию может быть изменено с opt-in на opt-out . Раздел реестра at HKEY_CURRENT_USER\Console\VirtualTerminalLevel
задает глобальное поведение по умолчанию для обработки escape-последовательностей ANSI. Создайте DWORD
ключ (если необходимо) и установите его значение равным 1
глобальному включению (или 0
отключению`) обработки ANSI по умолчанию.
[HKEY_CURRENT_USER \ Console] "VirtualTerminalLevel" = DWORD: 00000001
Обратите внимание, что этот параметр реестра управляет значением по умолчанию , что означает, что он влияет только на консольные приложения, которые явно не манипулируют консольным режимом путем вызова SetConsoleMode(...)
. Из этого следует, что, хотя значение реестра может помочь включить ANSI для приложений, не обращающих внимания на режим консоли , оно не повлияет на любое приложение, ориентированное на режим консоли, которое (по некоторым причинам) может явно отключить ANSI.
Начиная с Windows 10 TH2 (v1511), conhost.exe
(и, как следствие, cmd.exe
) поддерживаются Escape-последовательности ANSI, в частности цвета:
Страница MSDN о последовательностях виртуального терминала консоли объясняет, какие последовательности поддерживаются и как их включить:
Вы можете использовать флаги GetConsoleMode и SetConsoleMode для настройки этого поведения. [...]
Поведение следующих последовательностей основано на VT100 и производных технологиях эмулятора терминала, наиболее конкретно эмулятор терминала xterm. Более подробную информацию о терминальных последовательностях можно найти по адресу http://vt100.net и по адресу http://invisible-island.net/xterm/ctlseqs/ctlseqs.html .
Есть ли консольный эмулятор для Windows, который интерпретирует раскраску ANSI?
Windows до 10 - нет встроенной поддержки цветов ANSI на консоли
Для версии ниже 10 консоль Windows не поддерживает раскраску по умолчанию. Вы можете установить Cmder , ConEmu , ANSICON или Mintty (используется по умолчанию в GitBash и Cygwin), чтобы добавить поддержку окраски в командную консоль Windows.
Windows 10 - цвета командной строки
Начиная с Windows 10, консоль Windows поддерживает ANSI Escape-последовательности и некоторые цвета по умолчанию.
демонстрация
Пакетная команда
Это win10colors.cmd
было написано Микеле Локати :
@echo off
cls
echo [101;93m STYLES [0m
echo ^<ESC^>[0m [0mReset[0m
echo ^<ESC^>[1m [1mBold[0m
echo ^<ESC^>[4m [4mUnderline[0m
echo ^<ESC^>[7m [7mInverse[0m
echo.
echo [101;93m NORMAL FOREGROUND COLORS [0m
echo ^<ESC^>[30m [30mBlack[0m (black)
echo ^<ESC^>[31m [31mRed[0m
echo ^<ESC^>[32m [32mGreen[0m
echo ^<ESC^>[33m [33mYellow[0m
echo ^<ESC^>[34m [34mBlue[0m
echo ^<ESC^>[35m [35mMagenta[0m
echo ^<ESC^>[36m [36mCyan[0m
echo ^<ESC^>[37m [37mWhite[0m
echo.
echo [101;93m NORMAL BACKGROUND COLORS [0m
echo ^<ESC^>[40m [40mBlack[0m
echo ^<ESC^>[41m [41mRed[0m
echo ^<ESC^>[42m [42mGreen[0m
echo ^<ESC^>[43m [43mYellow[0m
echo ^<ESC^>[44m [44mBlue[0m
echo ^<ESC^>[45m [45mMagenta[0m
echo ^<ESC^>[46m [46mCyan[0m
echo ^<ESC^>[47m [47mWhite[0m (white)
echo.
echo [101;93m STRONG FOREGROUND COLORS [0m
echo ^<ESC^>[90m [90mWhite[0m
echo ^<ESC^>[91m [91mRed[0m
echo ^<ESC^>[92m [92mGreen[0m
echo ^<ESC^>[93m [93mYellow[0m
echo ^<ESC^>[94m [94mBlue[0m
echo ^<ESC^>[95m [95mMagenta[0m
echo ^<ESC^>[96m [96mCyan[0m
echo ^<ESC^>[97m [97mWhite[0m
echo.
echo [101;93m STRONG BACKGROUND COLORS [0m
echo ^<ESC^>[100m [100mBlack[0m
echo ^<ESC^>[101m [101mRed[0m
echo ^<ESC^>[102m [102mGreen[0m
echo ^<ESC^>[103m [103mYellow[0m
echo ^<ESC^>[104m [104mBlue[0m
echo ^<ESC^>[105m [105mMagenta[0m
echo ^<ESC^>[106m [106mCyan[0m
echo ^<ESC^>[107m [107mWhite[0m
echo.
echo [101;93m COMBINATIONS [0m
echo ^<ESC^>[31m [31mred foreground color[0m
echo ^<ESC^>[7m [7minverse foreground ^<-^> background[0m
echo ^<ESC^>[7;31m [7;31minverse red foreground color[0m
echo ^<ESC^>[7m and nested ^<ESC^>[31m [7mbefore [31mnested[0m
echo ^<ESC^>[31m and nested ^<ESC^>[7m [31mbefore [7mnested[0m