Antworten:
ConEmu unterstützt ANSI X3.64 mit Xterm 256-Farberweiterung. Ich bin der Autor dieses Konsolenemulators.
Ansi-Sequenzen werden für alle Prozesse in ConEmu-Registerkarten verarbeitet.
AFAIK, ConEmu unterstützt mehr Codes als Ansicon.
Keine der Antworten auf dieser Seite erwähnt einen wichtigen Aspekt der neuen Unterstützung für ANSI Terminal Control, die dem Windows 10- Konsolenhost in Build 16257 (und höher) hinzugefügt wurde . Das heißt, es ist standardmäßig nicht aktiviert . Es sei denn , die spezifische Software verwenden Sie ermöglicht ANSI Verarbeitung durch den Aufruf SetConsoleMode API mit der ENABLE_VIRTUAL_TERMINAL_PROCESSING (0x0400)
Flagge, werden Sie nicht Farben oder get ANSI für diese Anwendung der Verarbeitung sehen.
ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
https://docs.microsoft.com/en-us/windows/console/setconsolemodeBeim Schreiben mit WriteFile oder WriteConsole werden Zeichen für VT100 und ähnliche Steuerzeichenfolgen analysiert, die die Cursorbewegung, den Farb- / Schriftmodus und andere Vorgänge steuern, die auch über die vorhandenen Konsolen-APIs ausgeführt werden können. Weitere Informationen finden Sie unter Sequenzen virtueller Konsolenterminals.
Ich vermute, der Grund, warum die auf dieser Seite gezeigten Beispiele funktionieren, ist, dass anscheinend der echo
Befehl (oder möglicherweise der Stapelverarbeitungsteil von CMD.EXE
oder conhost
) die ANSI-Verarbeitung durch Aufrufen der gerade erwähnten API ermöglicht. Viele andere Tools oder ausführbare Dateien, in die geschrieben wird stdin
oder die dies stdout
möglicherweise nicht tun, sehen in diesem Fall keine Farben für diese Prozesse.
Glücklicherweise kann der globale Standard von Opt-In zu Opt-Out geändert werden . Der Registrierungsschlüssel unter HKEY_CURRENT_USER\Console\VirtualTerminalLevel
legt das globale Standardverhalten für die Verarbeitung von ANSI-Escape-Sequenzen fest. Erstellen Sie einen DWORD
Schlüssel (falls erforderlich) und legen Sie dessen Wert fest, 1
um die 0
ANSI-Verarbeitung standardmäßig global zu aktivieren (oder zu deaktivieren).
[HKEY_CURRENT_USER \ Console] "VirtualTerminalLevel" = dword: 00000001
Beachten Sie, dass diese Registrierungseinstellung eine Standardeinstellung steuert. Dies bedeutet, dass nur Konsolenanwendungen betroffen sind, die den Konsolenmodus nicht explizit durch Aufrufen manipulieren SetConsoleMode(...)
. Daraus folgt, dass der Registrierungswert möglicherweise dazu beiträgt, ANSI für Anwendungen zu aktivieren, die den Konsolenmodus nicht kennen . Er hat jedoch keine Auswirkungen auf Anwendungen, die den Konsolenmodus kennen und aus irgendeinem Grund ANSI explizit deaktivieren .
Ab Windows 10 TH2 (v1511) conhost.exe
(und damit verbunden cmd.exe
) werden ANSI-Escape-Sequenzen unterstützt, insbesondere in folgenden Farben:
Auf der MSDN-Seite zu Sequenzen für virtuelle Konsolenterminals wird erläutert, welche Sequenzen unterstützt werden und wie diese aktiviert werden:
Sie können GetConsoleMode- und SetConsoleMode- Flags verwenden, um dieses Verhalten zu konfigurieren. [...]
Das Verhalten der folgenden Sequenzen basiert auf dem VT100 und den abgeleiteten Terminalemulator-Technologien, insbesondere dem xterm-Terminalemulator. Weitere Informationen zu Terminalsequenzen finden Sie unter http://vt100.net und http://invisible-island.net/xterm/ctlseqs/ctlseqs.html .
Gibt es einen Konsolenemulator für Windows, der ANSI-Farben interpretiert?
Windows vor 10 - Keine native Unterstützung für ANSI-Farben auf der Konsole
Bei Windows-Versionen unter 10 unterstützt die Windows-Befehlskonsole standardmäßig keine Ausgabefarben. Sie können entweder Cmder , ConEmu , ANSICON oder Mintty (standardmäßig in GitBash und Cygwin verwendet) installieren , um die Windows-Befehlskonsole farblich zu unterstützen.
Windows 10 - Befehlszeilenfarben
Ab Windows 10 unterstützt die Windows-Konsole standardmäßig ANSI-Escape-Sequenzen und einige Farben.
Demo
Batch-Befehl
Das win10colors.cmd
wurde durch schriftliche 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