Esto es genial! Como jugador, me encanta la función de terremoto. Sin embargo, la consola parece estar bloqueada en la parte superior de la pantalla (incluso con la opción bloqueada en la parte superior deshabilitada). Gracias
Ced
¿Cómo ejecutas cmd con pestañas?
Mikey
@ Mikey ¿Qué? Lee la respuesta primero.
Maximus
35
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.
Al 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 echocomando (o quizás la parte de procesamiento por lotes de CMD.EXEo conhost) habilita el procesamiento ANSI llamando a la API que acabamos de mencionar. Pero muchas otras herramientas o ejecutables que escriben stdino stdoutno 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\VirtualTerminalLevelestablece el comportamiento predeterminado global para procesar secuencias de escape ANSI. Cree una DWORDclave (si es necesario) y establezca su valor en 1habilitar globalmente (o 0inhabilitar) el procesamiento ANSI de forma predeterminada.
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.
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 .
También puede cambiar los colores predeterminados con Colortool . Las nuevas instalaciones de Windows 10 obtendrán colores ligeramente modificados que son más fáciles de leer (especialmente azul sobre negro), pero las actualizaciones mantendrán los colores antiguos y difíciles de leer.
10
¿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.
No estoy seguro de qué versión exacta de Win10, pero se menciona aquí: github.com/symfony/symfony/issues/19520 En la computadora portátil de mi empresa - Ver 1511 (OS Build 10586.753) - No lo necesitaba. En la PC de mi casa, tuve que usar ansicon, porque los colores no estaban activados por defecto.
geff_chang
44
Acaban de introducir una bandera, que controla la salida de color y es falsa de forma predeterminada. Consulte wpdev.uservoice.com/forums/… ) --- Symfony está utilizando PHP.exe en Windows, donde la bandera estaba apagada, por lo que tuvieron que esperar un parche, que aterrizó aquí: github.com/php/php- src / pull / 2103 . Situación resuelta. --- Para cmd.exe la bandera es verdadera siempre. Es por eso que tiene soporte de color en la consola.
Jens A. Koch
1
¿funcionarían también estos códigos en un script de shell en Linux? ¿o se hace de otra manera?
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.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 deCMD.EXE
oconhost
) habilita el procesamiento ANSI llamando a la API que acabamos de mencionar. Pero muchas otras herramientas o ejecutables que escribenstdin
ostdout
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 unaDWORD
clave (si es necesario) y establezca su valor en1
habilitar globalmente (o0
inhabilitar) el procesamiento ANSI de forma predeterminada.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.fuente
A partir de Windows 10 TH2 (v1511),
conhost.exe
(y, por extensióncmd.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:
fuente
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.
Documentación de MSDN
Manifestación
Comando por lotes
El
win10colors.cmd
fue escrito por Michele Locati :fuente