Respostas:
O ConEmu suporta ANSI X3.64 com extensão de cores Xterm 256. Eu sou o autor deste emulador de console.
As sequências ANSI são tratadas para todos os processos, executando nas guias do ConEmu.
AFAIK, ConEmu suporta mais códigos, que Ansicon.
Nenhuma das respostas nesta página menciona um aspecto importante do novo suporte ao ANSI Terminal Control que foi adicionado ao host do console do Windows 10 na compilação 16257 (e posterior). Ou seja, é não habilitado por padrão. A menos que o software específico que você está usando habilite o processamento ANSI chamando a API SetConsoleMode com o ENABLE_VIRTUAL_TERMINAL_PROCESSING (0x0400)
sinalizador, você não verá cores ou obterá o processamento ANSI para esse aplicativo.
ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
https://docs.microsoft.com/en-us/windows/console/setconsolemodeAo escrever com WriteFile ou WriteConsole , os caracteres são analisados para o VT100 e sequências de caracteres de controle semelhantes que controlam o movimento do cursor, o modo de cor / fonte e outras operações que também podem ser executadas pelas APIs de console existentes. Para mais informações, consulte Sequências de terminais virtuais do console.
Suponho que a razão pela qual os exemplos mostrados nesta página funcionem é que, aparentemente, o echo
comando (ou talvez a parte de processamento em lote de CMD.EXE
ou conhost
) habilite o processamento ANSI chamando a API mencionada acima. Mas muitas outras ferramentas ou executáveis que escrevem stdin
ou stdout
podem não fazer isso; nesse caso, você não verá cores para esses processos.
Felizmente, o padrão global pode ser alterado de opt-in para opt-out . A chave do registro em HKEY_CURRENT_USER\Console\VirtualTerminalLevel
define o comportamento padrão global para o processamento de seqüências de escape ANSI. Crie uma DWORD
chave (se necessário) e defina seu valor para 1
ativar globalmente (ou 0
desativar`) o processamento ANSI por padrão.
[HKEY_CURRENT_USER \ Console] "VirtualTerminalLevel" = dword: 00000001
Observe que essa configuração do registro controla um padrão , o que significa que afeta apenas aplicativos de console que não manipulam explicitamente o modo do console chamando SetConsoleMode(...)
. Daqui resulta que, embora o valor do registro possa ajudar a habilitar o ANSI para aplicativos inconscientes no modo do console , ele não terá efeito em nenhum aplicativo habilitado para o modo do console que (por algum motivo) possa desabilitar explicitamente o ANSI.
A partir do Windows 10 TH2 (v1511), conhost.exe
(e, por extensão cmd.exe
) , suporta ANSI Escape Sequences, em cores específicas:
A página do MSDN sobre seqüências de terminais virtuais do console explica quais sequências são suportadas e como habilitá-las:
Você pode usar GetConsoleMode e SetConsoleMode bandeiras para configurar esse comportamento. [...]
O comportamento das seguintes seqüências é baseado nas tecnologias VT100 e emulador de terminal derivado, mais especificamente no emulador de terminal xterm. Mais informações sobre seqüências de terminais podem ser encontradas em http://vt100.net e em http://invisible-island.net/xterm/ctlseqs/ctlseqs.html .
Existe algum emulador de console para Windows que interpreta a coloração ANSI?
Windows anterior a 10 - sem suporte nativo para cores ANSI no console
Para a versão do Windows abaixo de 10, o console de comando do Windows não suporta a coloração de saída por padrão. Você pode instalar Cmder , ConEmu , ANSICON ou Mintty (usado por padrão no GitBash e Cygwin) para adicionar suporte a cores no console de comando do Windows.
Windows 10 - Cores da linha de comando
A partir do Windows 10, o console do Windows suporta sequências de escape ANSI e algumas cores por padrão.
Demo
Comando em lote
O win10colors.cmd
foi escrito por Michele Locati :
@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