Respuestas:
ConEmu admite ANSI X3.64 con extensión de color Xterm 256. Soy el autor de este emulador de consola.
Las secuencias Ansi se manejan para todos los procesos, ejecutándose en pestañas ConEmu.
AFAIK, ConEmu admite más códigos que Ansicon.
Ninguna de las respuestas en esta página menciona un aspecto importante del nuevo soporte para ANSI Terminal Control que se agregó al host de la consola de Windows 10 en la compilación 16257 (y posterior). A saber, es n̲o̲t̲ e̲n̲a̲b̲l̲e̲d̲ por defecto. A menos que el software específico que está utilizando habilite el procesamiento ANSI llamando a la API SetConsoleMode con el ENABLE_VIRTUAL_TERMINAL_PROCESSING (0x0400)
indicador, no verá colores ni obtendrá el procesamiento ANSI para esa aplicación.
ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
https://docs.microsoft.com/en-us/windows/console/setconsolemodeAl escribir con WriteFile o WriteConsole , los caracteres se analizan para VT100 y secuencias de caracteres de control similares que controlan el movimiento del cursor, el modo de color / fuente y otras operaciones que también se pueden realizar a través de las API de consola existentes. Para obtener más información, consulte Secuencias de terminal virtual de consola.
Supongo que la razón por la que los ejemplos que se muestran en esta página funcionan es que, aparentemente, el echo
comando (o quizás la parte de procesamiento por lotes de CMD.EXE
o conhost
) habilita el procesamiento ANSI llamando a la API que acabamos de mencionar. Pero muchas otras herramientas o ejecutables que escriben stdin
o stdout
no pueden hacer esto, en cuyo caso no verá color para esos procesos.
Afortunadamente, el valor predeterminado global se puede cambiar de habilitar a inhabilitar . La clave de registro en HKEY_CURRENT_USER\Console\VirtualTerminalLevel
establece el comportamiento predeterminado global para procesar secuencias de escape ANSI. Cree una DWORD
clave (si es necesario) y establezca su valor en 1
habilitar globalmente (o 0
inhabilitar) el procesamiento ANSI de forma predeterminada.
[HKEY_CURRENT_USER \ Console] "VirtualTerminalLevel" = dword: 00000001
Tenga en cuenta que esta configuración de registro controla un valor predeterminado , lo que significa que solo afecta a las aplicaciones de consola que no manipulan explícitamente el modo de consola llamando SetConsoleMode(...)
. De ello se deduce que, si bien el valor del registro puede ayudar a habilitar ANSI para aplicaciones ajenas al modo de consola , no tendrá ningún efecto en ninguna aplicación inteligente con modo de consola que (por alguna razón) puede deshabilitar explícitamente ANSI.
A partir de Windows 10 TH2 (v1511), conhost.exe
(y, por extensión cmd.exe
) , admite secuencias de escape ANSI, en colores particulares:
La página de MSDN sobre Secuencias de terminal virtual de consola explica qué secuencias son compatibles y cómo habilitarlas:
Puede usar los indicadores GetConsoleMode y SetConsoleMode para configurar este comportamiento. [...]
El comportamiento de las siguientes secuencias se basa en el VT100 y las tecnologías de emulador de terminal derivadas, más específicamente el emulador de terminal xterm. Se puede encontrar más información sobre las secuencias terminales en http://vt100.net y en http://invisible-island.net/xterm/ctlseqs/ctlseqs.html .
¿Hay algún emulador de consola para Windows que interprete el color ANSI?
Windows antes de 10: no hay soporte nativo para colores ANSI en la consola
Para la versión de Windows inferior a 10, la consola de comandos de Windows no admite el color de salida de forma predeterminada. Puede instalar Cmder , ConEmu , ANSICON o Mintty (usado por defecto en GitBash y Cygwin) para agregar soporte de color a su consola de comandos de Windows.
Windows 10 - Colores de línea de comando
A partir de Windows 10, la consola de Windows admite secuencias de escape ANSI y algunos colores de forma predeterminada.
Manifestación
Comando por lotes
El win10colors.cmd
fue 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