Keine Farben, wenn die native Windows-Shell-Anwendung von mintty ausgeführt wird

2968
Pete

Ich habe cygwin installiert (ich bin nicht sehr erfahren damit) und versuche, eine native Windows-Shell-Anwendung von dort aus auszuführen (msbuild.exe, das Build-Tool für das .NET-Framework, um genau zu sein).

Wenn ich die Anwendung von der normalen cygwin-bash-Shell aus ausführen, wird die Ausgabe der Anwendung mit den Textfarben angezeigt, die ich normalerweise in der Windows-Befehlszeile sehen würde.

Wenn ich das Programm jedoch von einem Mintty-Terminal aus ausführen, wird die Ausgabe nicht eingefärbt. Der gesamte Text ist in der Standard-Vordergrundfarbe. Ich bin verwirrt, weil ich erwartet hätte, dass die Farbkodierung die Standard-ANSI-Farbcode-Escape-Zeichen ist ...

Kann das behoben werden?

2
Geben Cygwin-Programme (emacs, mc) Farbe in Minze? Dennis Williamson vor 13 Jahren 0

3 Antworten auf die Frage

3
ak2

Die Anwendung verwendet höchstwahrscheinlich Windows-Konsolen-APIs anstelle von ANSI-Farbsequenzen. Mintty ist eher ein Unix-Terminal (basierend auf der Cyty-Implementierung von Pty) als ein Windows-Konsolenwrapper. Daher haben diese Aufrufe der Konsolen-API keine Auswirkungen.

Momentan gibt es keine Möglichkeit, diese Arbeit in Mintty durchzuführen, obwohl es verschiedene, recht komplexe Ideen gibt, wie das Problem unter http://code.google.com/p/mintty/issues/detail?id=56 gelöst werden kann . In der Zwischenzeit starten Sie das Problem einfach, indem Sie das betreffende Programm in einem Konsolenfenster starten. Das Dienstprogramm 'cygstart' ist eine bequeme Möglichkeit, dies zu tun.

1
Gilles

Native Windows-Konsolenprogramme laufen in Cygwin-Terminalemulatoren wie z. B. mintty oft nicht gut. Eine Erklärung finden Sie in der Cygwin-Dokumentation . Keine Farben zu sehen ist ein mögliches Symptom; Ein schlimmeres Symptom besteht nicht in der Lage, in die Anwendung einzugeben.

Es gibt alternative Konsolenprogramme, die viel besser sind als die integrierte Konsole. Meine derzeitige Auswahl an Terminals unter Windows ist mintty für cygwin- oder stdio-Programme und console2 für Windows-Konsolenprogramme. Das Thema wurde bereits mehrmals auf dieser Site diskutiert:
Erweiterte Befehlszeilenbearbeitung für Windows?
https://superuser.com/questions/87441/alternative-windows-command-shell-and-console
Windows "cmd"
Ersetzt den kostenlosen cmd / powershell-Ersatz durch normales Kopieren

0
V.Leymarie

Sie können bash.exe anstelle von mintty verwenden:

Klicken Sie mit der rechten Maustaste auf die Verknüpfung von cygwin und ändern Sie sie von C: \ cygwin64 \ bin \ mintty.exe -i /Cygwin-Terminal.ico in C: \ cygwin64 \ bin \ bash.exe --login -i