Risposte:
ConEmu supporta ANSI X3.64 con estensione colore Xterm 256. Sono l'autore di questo emulatore di console.
Le sequenze Ansi sono gestite per tutti i processi, in esecuzione nelle schede ConEmu.
AFAIK, ConEmu supporta più codici di Ansicon.
Nessuna delle risposte in questa pagina menziona un aspetto importante del nuovo supporto per ANSI Terminal Control che è stato aggiunto all'host della console di Windows 10 nella build 16257 (e successive). Vale a dire, per impostazione predefinita non è e̲n̲a̲b̲l̲e defaultd̲. A meno che il software specifico che si sta utilizzando consente l'elaborazione ANSI chiamando il SetConsoleMode API con la ENABLE_VIRTUAL_TERMINAL_PROCESSING (0x0400)
bandierina, non sarà possibile vedere i colori o ottenere ANSI elaborazione per tale applicazione.
ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
https://docs.microsoft.com/en-us/windows/console/setconsolemodeQuando si scrive con WriteFile o WriteConsole , i caratteri vengono analizzati per VT100 e sequenze di caratteri di controllo simili che controllano il movimento del cursore, la modalità colore / carattere e altre operazioni che possono anche essere eseguite tramite le API della console esistenti. Per ulteriori informazioni, consultare Sequenze di terminali virtuali della console.
Sto indovinando il motivo per cui gli esempi mostrati in questa pagina funzionano, a quanto pare il echo
comando (o forse la parte di elaborazione batch di CMD.EXE
o conhost
) abilita l'elaborazione ANSI chiamando l'API appena menzionata. Ma molti altri strumenti o eseguibili che scrivono stdin
o stdout
potrebbero non farlo, nel qual caso non vedrai il colore per quei processi.
Per fortuna, il default globale può essere modificato da opt-in a opt-out . La chiave del Registro di sistema all'indirizzo HKEY_CURRENT_USER\Console\VirtualTerminalLevel
imposta il comportamento predefinito globale per l'elaborazione delle sequenze di escape ANSI. Creare una DWORD
chiave (se necessario) e impostarne il valore per 1
abilitare (o 0
disabilitare`) globalmente l'elaborazione ANSI per impostazione predefinita.
[HKEY_CURRENT_USER \ Console] "VirtualTerminalLevel" = dword: 00000001
Si noti che questa impostazione del registro controlla un valore predefinito , il che significa che interessa solo le app della console che non manipolano esplicitamente la modalità console chiamando SetConsoleMode(...)
. Ne consegue che, sebbene il valore del Registro di sistema possa aiutare ad abilitare ANSI per le app ignari in modalità console , non avrà alcun effetto su alcuna app esperta in modalità console che (per qualche motivo) potrebbe disabilitare esplicitamente ANSI.
A partire da Windows 10 TH2 (v1511), conhost.exe
(e, per estensione,cmd.exe
) supporta ANSI Escape Sequences, in particolare i colori:
Il pagina MSDN sulle sequenze di terminali virtuali della console spiega quali sequenze sono supportate e come abilitarle:
Puoi usare GetConsoleMode e SetConsoleMode per configurare questo comportamento. [...]
Il comportamento delle seguenti sequenze si basa sul VT100 e sulle tecnologie dell'emulatore di terminale derivato, in particolare l'emulatore di terminale xterm. Ulteriori informazioni sulle sequenze di terminali sono disponibili su http://vt100.net e http://invisible-island.net/xterm/ctlseqs/ctlseqs.html .
Esiste un emulatore di console per Windows che interpreta la colorazione ANSI?
Windows prima delle 10 - nessun supporto nativo per i colori ANSI sulla console
Per la versione di Windows inferiore a 10, la console di comando di Windows non supporta la colorazione dell'output per impostazione predefinita. È possibile installare Cmder , ConEmu , ANSICON o Mintty (utilizzati per impostazione predefinita in GitBash e Cygwin) per aggiungere il supporto per la colorazione alla console dei comandi di Windows.
Windows 10 - Colori della riga di comando
A partire da Windows 10 la console di Windows supporta le sequenze di escape ANSI e alcuni colori per impostazione predefinita.
dimostrazione
Comando batch
Il è win10colors.cmd
stato scritto da 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