Réponses:
ConEmu prend en charge ANSI X3.64 avec l'extension de couleur Xterm 256. Je suis l'auteur de cet émulateur de console.
Les séquences Ansi sont gérées pour tous les processus, s'exécutant dans les onglets ConEmu.
AFAIK, ConEmu prend en charge plus de codes que Ansicon.
Aucune des réponses sur cette page ne mentionne un aspect important de la nouvelle prise en charge du contrôle de terminal ANSI qui a été ajouté à l' hôte de la console Windows 10 dans la version 16257 (et versions ultérieures). À savoir, c'est n̲o̲t̲ e̲n̲a̲b̲l̲e̲d̲ par défaut. À moins que le logiciel spécifique que vous utilisez ne permette le traitement ANSI en appelant l' API SetConsoleMode avec l' ENABLE_VIRTUAL_TERMINAL_PROCESSING (0x0400)
indicateur, vous ne verrez pas les couleurs ou n'obtiendrez pas de traitement ANSI pour cette application.
ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
https://docs.microsoft.com/en-us/windows/console/setconsolemodeLors de l'écriture avec WriteFile ou WriteConsole , les caractères sont analysés pour le VT100 et les séquences de caractères de contrôle similaires qui contrôlent le mouvement du curseur, le mode couleur / police et d'autres opérations qui peuvent également être effectuées via les API de console existantes. Pour plus d'informations, voir Séquences de terminaux virtuels de console.
Je suppose que la raison pour laquelle les exemples montrés sur cette page fonctionnent est que, apparemment, la echo
commande (ou peut-être la partie de traitement par lots de CMD.EXE
ou conhost
) permet le traitement ANSI en appelant l'API que je viens de mentionner. Mais de nombreux autres outils ou exécutables qui écrivent stdin
ou stdout
peuvent ne pas le faire, auquel cas vous ne verrez pas de couleur pour ces processus.
Heureusement, la valeur par défaut globale peut être modifiée de opt-in à opt-out . La clé de registre à HKEY_CURRENT_USER\Console\VirtualTerminalLevel
définit le comportement global par défaut pour le traitement des séquences d'échappement ANSI. Créez une DWORD
clé (si nécessaire) et définissez sa valeur sur 1
pour activer (ou 0
désactiver) globalement le traitement ANSI par défaut.
[HKEY_CURRENT_USER \ Console] "VirtualTerminalLevel" = dword: 00000001
Notez que ce paramètre de registre contrôle une valeur par défaut , ce qui signifie qu'il n'affecte que les applications de console qui ne manipulent pas explicitement le mode console en appelant SetConsoleMode(...)
. Il s'ensuit que, bien que la valeur de Registre puisse aider à activer ANSI pour les applications inconscientes en mode console , elle n'aura aucun effet sur toute application avertie en mode console qui (pour une raison quelconque) peut désactiver explicitement ANSI.
À partir de Windows 10 TH2 (v1511), conhost.exe
(et, par extension, cmd.exe
) prennent en charge les séquences d'échappement ANSI, en particulier les couleurs:
La page MSDN sur les séquences de terminaux virtuels de console explique quelles séquences sont prises en charge et comment les activer:
Vous pouvez utiliser les indicateurs GetConsoleMode et SetConsoleMode pour configurer ce comportement. [...]
Le comportement des séquences suivantes est basé sur le VT100 et les technologies d'émulation de terminal dérivées, plus particulièrement l'émulateur de terminal xterm. Plus d'informations sur les séquences terminales peuvent être trouvées sur http://vt100.net et sur http://invisible-island.net/xterm/ctlseqs/ctlseqs.html .
Existe-t-il un émulateur de console pour Windows qui interprète la coloration ANSI?
Windows avant 10 - pas de prise en charge native des couleurs ANSI sur la console
Pour la version Windows inférieure à 10, la console de commande Windows ne prend pas en charge la coloration de sortie par défaut. Vous pouvez installer Cmder , ConEmu , ANSICON ou Mintty (utilisé par défaut dans GitBash et Cygwin) pour ajouter un support de coloration à votre console de commande Windows.
Windows 10 - Couleurs de ligne de commande
À partir de Windows 10, la console Windows prend en charge les séquences d'échappement ANSI et certaines couleurs par défaut.
Démo
Commande par lots
Le a win10colors.cmd
été écrit par 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