Windows-Konsole mit ANSI-Farben

19118
mrzasa

Gibt es einen Konsolenemulator für Windows, der die ANSI-Farbgebung interpretiert?

Wir verwenden rspec und ein Teil unseres Teams verwendet Windows, und die spezielle Zeichenfolge zum Einfärben ist für sie nicht sehr nützlich;).

25

4 Antworten auf die Frage

36
Maximus

ConEmu unterstützt ANSI X3.64 mit Xterm 256-Farberweiterung. Ich bin der Autor dieses Konsolen-Emulators.

Ansi-Sequenzen werden für alle Prozesse verarbeitet, die in ConEmu-Registerkarten ausgeführt werden.

AFAIK, ConEmu unterstützt mehr Codes als Ansicon.

ConEmu und ANSI X3.64 / Xterm 256 Farben

Das rockt! Als Gamer liebe ich die Bebenfunktion. Die Konsole scheint jedoch oben auf dem Bildschirm gesperrt zu sein (selbst wenn die Option deaktiviert ist). Vielen Dank Ced vor 8 Jahren 1
wie führe ich cmd mit tabs aus? Mikey vor 6 Jahren 0
@ Mikey Was? Lesen Sie zuerst die Antwort. Maximus vor 6 Jahren 0
22
rolve

Ab Windows 10 TH2 (v1511) conhost.exe(und in der Erweiterung cmd.exe) werden ANSI-Escape-Sequenzen in bestimmten Farben unterstützt:

Bild von der MSDN-Seite

Auf der MSDN-Seite über virtuelle Terminalsequenzen von Console wird erläutert, welche Sequenzen unterstützt werden und wie sie aktiviert werden können:

Sie können GetConsoleMode- und SetConsoleMode- Flags verwenden, um dieses Verhalten zu konfigurieren. [...]

Das Verhalten der folgenden Sequenzen basiert auf den VT100- und abgeleiteten Terminalemulatortechnologien, insbesondere dem Xterm-Terminalemulator. Weitere Informationen zu Terminalsequenzen finden Sie unter http://vt100.net und unter http://invisible-island.net/xterm/ctlseqs/ctlseqs.html .

Die unterstützten Sequenzen werden unter https://msdn.microsoft.com/en-us/library/windows/desktop/mt638032(v=vs.85).aspx beschrieben dbenham vor 7 Jahren 2
Sie können die Standardfarben auch mit [Colortool] (https://blogs.msdn.microsoft.com/commandline/2017/08/08/introducing-the-windows-console-colortool/) ändern. Neue Windows 10-Installationen erhalten leicht modifizierte Farben, die besser lesbar sind (insbesondere blau auf schwarz). Bei Updates bleiben jedoch die alten, schwer lesbaren Farben erhalten. user128216 vor 5 Jahren 0
20
Glenn Slayden

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 nicht standardmäßig voreingestellt. 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 keine Farben sehen oder ANSI - Verarbeitung für diese Anwendung erhalten.

ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004
https://docs.microsoft.com/en-us/windows/console/setconsolemode

Beim Schreiben mit WriteFile oder WriteConsole werden Zeichen für VT100 und ähnliche Steuerzeichenfolgen analysiert, die die Cursorbewegung, den Farb- / Zeichensatzmodus und andere Vorgänge steuern, die auch über die vorhandenen Console-APIs ausgeführt werden können. Weitere Informationen finden Sie unter Konsolenreihenfolge für virtuelle Terminals.

Ich schätze, der Grund für die auf dieser Seite gezeigten Beispiele ist, dass der echoBefehl (oder möglicherweise der Teil für die Stapelverarbeitung von CMD.EXEoder conhost) die ANSI-Verarbeitung durch Aufrufen der eben erwähnten API aktiviert. Aber viele andere Tools oder ausführbare Dateien, auf die geschrieben wird stdinoder die dies stdoutmöglicherweise nicht tun. In diesem Fall werden für diese Prozesse keine Farben angezeigt.

Glücklicherweise kann der globale Standard von Opt-In zu Opt-Out geändert werden . Der Registrierungsschlüssel um HKEY_CURRENT_USER\Console\VirtualTerminalLevellegt das globale Standardverhalten für die Verarbeitung von ANSI-Escape-Sequenzen fest. Erstellen Sie einen DWORDSchlüssel (falls erforderlich), und legen Sie als Wert fest, 1dass die 0ANSI-Verarbeitung standardmäßig aktiviert (oder deaktiviert) ist.

[HKEY_CURRENT_USER \ Console] "VirtualTerminalLevel" = dword: 00000001

Beachten Sie, dass diese Registrierungseinstellung einen Standardwert steuert. Dies bedeutet, dass nur Konsolenanwendungen betroffen sind, die den Konsolenmodus nicht explizit durch Aufruf bearbeiten SetConsoleMode(...). Daraus folgt, dass der Registrierungswert zwar dazu beitragen kann, ANSI für Konsolenmodus-vergessende Apps zu aktivieren, er hat jedoch keine Auswirkungen auf Konsolenmodus-versierte Apps, die ANSI (aus irgendeinem Grund) explizit deaktivieren .

10
Jens A. Koch

Gibt es einen Konsolenemulator für Windows, der die ANSI-Farbgebung 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 Ausgabefarbe. 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.

MSDN-Dokumentation

Demo

Stapelbefehl

Das win10colors.cmdwurde von Michele Locati geschrieben :

@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 
Seit Version 1607 (OS Build 14393.693) wurde die Farbe in Windows 10 deaktiviert. geff_chang vor 7 Jahren 0
Warum sollte ich das glauben? Fakten bitte. a) Das Änderungsprotokoll enthält nichts: https://support.microsoft.com/de-de/help/4009938 b) Funktioniert für mich: http://imgur.com/a/MNPNm Jens A. Koch vor 7 Jahren 2
Ich weiß nicht genau, in welcher Win10-Version es sich genau befindet, aber es wird hier erwähnt: https://github.com/symfony/symfony/issues/19520 Auf meinem Firmenlaptop - Ver 1511 (OS Build 10586.753) - habe ich nicht brauchen. Auf meinem Heim-PC musste ich ansicon verwenden, da die Farben standardmäßig nicht aktiviert waren. geff_chang vor 7 Jahren 1
Sie haben gerade ein Flag eingeführt, das die farbige Ausgabe steuert und standardmäßig falsch ist. Siehe https://wpdev.uservoice.com/forums/266908-command-prompt-console-bash-on-ubuntu-on-windo/suggestions/15617610--re-enable-able-virtual-terminal-processing-by) --- Symfony verwendet PHP.exe unter Windows, wo die Markierung deaktiviert war. Daher mussten sie auf einen Patch warten, der hier gelandet ist: https://github.com/php/php-src/pull/2103. Situation gelöst --- Für cmd.exe ist das Flag immer wahr. Deshalb haben Sie eine Farbunterstützung auf der Konsole. Jens A. Koch vor 7 Jahren 4
Würden diese Codes auch in einem Shell-Skript unter Linux funktionieren? oder wird das anders gemacht? Mikey vor 6 Jahren 1
@ Mikey http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html Elder Geek vor 6 Jahren 0
@ElderGeek ist kaum eine Antwort auf seine Frage. Er fragt sich (denke ich), ob diese Escape-Sequenzen in allen Umgebungen gleich sind. Ich bin auch ein einfaches Ja oder Nein würde funktionieren, aber ich interessiere mich nicht genug, um die beiden Umgebungen zu unterscheiden :) Adam Plocher vor 6 Jahren 0
@AdamPlocher IMHO, Es ist effektiver, einem Mann das Angeln beizubringen, als ihm einen Fisch zu geben. Seit wann ist ein Kommentar überhaupt eine Antwort? Elder Geek vor 6 Jahren 0
@geff_chang Eine ausgezeichnete Erklärung für Änderungen am Verhalten von Windows 10 finden Sie unter https://github.com/Microsoft/WSL/issues/1173#issuecomment-254250445. Glenn Slayden vor 6 Jahren 0