Відповіді:
ConEmu підтримує ANSI X3.64 з кольоровим розширенням Xterm 256. Я автор цього емулятора консолі.
Послідовності Ansi обробляються для всіх процесів, що працюють на вкладках ConEmu.
AFAIK, ConEmu підтримує більше кодів, ніж Ansicon.
Жоден з відповідей на цій сторінці не згадує важливий аспект нової підтримки ANSI Terminal Control, яка була додана до хоста консолі Windows 10 у збірці 16257 (і пізнішої версії). А саме, це за замовчуванням n̲o̲t̲ e̲n̲a̲b̲l̲e̲d̲ . Якщо конкретне програмне забезпечення, яке ви використовуєте, не дозволяє обробляти ANSI, викликаючи API SetConsoleMode з 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 , щоб відмовитися від . Ключ реєстру HKEY_CURRENT_USER\Console\VirtualTerminalLevel
встановлює глобальну поведінку за замовчуванням для обробки послідовностей аварійних передач ANSI. Створіть DWORD
ключ (якщо необхідно) і встановіть його значення, 1
щоб глобально включити (або 0
відключити `) обробку ANSI за замовчуванням.
[HKEY_CURRENT_USER \ Console] "VirtualTerminalLevel" = dword: 00000001
Зауважте, що цей параметр реєстру керує за замовчуванням , тобто означає, що він впливає лише на консольні програми, які не маніпулюють явно консольним режимом шляхом виклику SetConsoleMode(...)
. Звідси випливає, що, хоча значення реєстру може допомогти включити ANSI для прихованих у консольному режимі додатків, це не вплине на будь -які додаткові програми в режимі консолі, які (з якихось причин) можуть явно відключити ANSI.
Починаючи з Windows 10 TH2 (v1511), conhost.exe
(і, розширення, cmd.exe
) підтримують послідовності втечі ANSI, зокрема кольори:
Сторінка MSDN про послідовності віртуальних терміналів консолі пояснює, які послідовності підтримуються та як їх включити:
Ви можете використовувати прапори GetConsoleMode та SetConsoleMode для налаштування цієї поведінки. [...]
Поведінка наступних послідовностей заснована на VT100 та похідних технологіях емуляторів кінцевих термінів, а саме на емуляторі терміналу xterm. Більше інформації про термінальні послідовності можна знайти на веб-сайті http://vt100.net та на http://invisible-island.net/xterm/ctlseqs/ctlseqs.html .
Чи є консольний емулятор для Windows, який інтерпретує фарбування ANSI?
Windows до 10 - відсутність вбудованої підтримки кольорів ANSI на консолі
Для версії Windows нижче 10, командна консоль Windows не підтримує забарвлення виводу за замовчуванням. Ви можете встановити Cmder , ConEmu , ANSICON або Mintty (використовується за замовчуванням у GitBash та Cygwin), щоб додати підтримку забарвлення до вашої командної консолі Windows.
Windows 10 - Кольори командного рядка
Починаючи з Windows 10, консоль Windows підтримує послідовність втечі ANSI і деякі кольори за замовчуванням.
Демо
Пакетне командування
Автор 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