Um den Beginn und das Ende der Ausgabe in einer Befehlszeile besser zu erkennen, möchte ich die Farbe meiner Eingabeaufforderung so ändern, dass sie sich sichtbar von der Programmausgabe unterscheidet. Kann mir jemand einen Hinweis geben, wenn ich zsh benutze?
121
Geben Sie dies ein
~/.zshrc
:Unterstützte Farben:
red
,blue
,green
,cyan
,yellow
,magenta
,black
, undwhite
(aus dieser Antwort ) , obwohl verschiedene Computer können verschiedene gültige Optionen haben.Surround-Farbcodes (und andere nicht druckbare Zeichen) mit
%{....%}
. Damit funktioniert der Textumbruch korrekt.Außerdem erfahren Sie hier, wie Sie dies von hier aus mit dem Trimmen von Verzeichnissen zum Laufen bringen können .
quelle
zsh: colors: function definition file not found
%{...%}
bedeutet, dass der Inhalt als wörtliche Escape-Sequenz interpretiert wird, sodass sich der Cursor beim Drucken der Sequenz nicht bewegt. Wenn Sie dies nicht verwenden, können die Farbcodes den Cursor tatsächlich bewegen und unerwünschte Effekte erzeugen. Dies ist in demVisual Effects
Abschnitt in zshmisc ManpageZsh wird mit eingebauten farbigen Eingabeaufforderungen geliefert. Versuchen
und
prompt -l
listet dann verfügbare-p fire
Eingabeaufforderungen auf, zeigt eine Vorschau der Eingabeaufforderung "Feuer" an und-s fire
legt sie fest.Wenn Sie bereit sind, eine Eingabeaufforderung hinzuzufügen, fügen Sie unter der Autoload-Zeile oben Folgendes hinzu:
quelle
Ich glaube nicht, dass das
autoload -U colors && colors
mehr gebraucht wird und man kann einfach:um das gleiche Ergebnis wie die Antwort von FireDude zu erzielen . Weitere Informationen finden Sie in der ZSH-Dokumentation .
quelle
autoload -U colors && colors
autoload
zu arbeiten.autoload on
?autoload -U colors
, bedeutet dies, dass Ihre Distribution es bereits in einer anderen zsh-Initialisierungsdatei hat. Sie sollten es weiterhin in Skripten aufnehmen, die Sie mit anderen teilen möchten.Verfügbare Farben:
Verfügbare Variablen:
%F{118}
(1 bis 256)$FG[018]
(1 bis 256)$fg[magenta]
(Magenta, Rot, Weiß, Gelb, Schwarz, Blau, Cyan, Grün)Eingabeaufforderung Beispiel:
Installieren:
Die Variablendefinition (PS1 / PROMPT) muss hinzugefügt werden
~/.zshrc
Wir können die PS1-Variable auch an der aktuellen Eingabeaufforderung neu definieren, um sie sofort zu testen (Änderungen werden nicht gespeichert).
quelle
Die Antwort von Bryan Oakley oben hat einen Fehler, wie bereits erwähnt, und die von Andrew Marshall angebotene Lösung enthält zwar keinen Fehler, macht es jedoch nicht offensichtlich, dass die verwendeten Farben zu stark angepasst werden müssen.
Da macOS Catalina von nun an verlangt, dass zsh die Standard-Shell ist, möchten möglicherweise mehrere weitere Personen ihre Eingabeaufforderung anpassen und kommen möglicherweise hierher, um eine Antwort zu erhalten. Daher dachte ich, ich würde versuchen, eine breitere Zusammenfassung zu geben und andere sehr eng verwandte Begriffe zu berühren, die eine stärkere Anpassung ermöglichen.
3-stellige Codes für verschiedene Farben. Zunächst finden wir hier dreistellige Codes für verschiedene Farben: https://unix.stackexchange.com/a/124409/194343 . Zum Beispiel ist 214 eine Art orange Farbe.
Vordergrund und Hintergrund. Die andere wichtige Information ist, dass man für die Grundfarben F oreground und bac K definieren kann, was sie mit F bzw. K wollen . Quelle ist das zsh-Handbuch zu visuellen Effekten: http://zsh.sourceforge.net/Doc/Release/Prompt-Expansion.html#Visual-effects
So zum Beispiel die folgenden zwei Befehle
Präsentieren Sie den Hostnamen in Orange mit schwarzem Hintergrund, gefolgt von einem Doppelpunkt in Weiß mit schwarzem Hintergrund, gefolgt vom aktuellen Arbeitsverzeichnis in hellblau mit schwarzem Hintergrund, gefolgt vom Dollarzeichen in Weiß mit schwarzem Hintergrund.
Weitere verwandte Informationen finden Sie unten.
Sofortige Informationen auf der rechten Seite. Zum Beispiel Hinzufügen eines Zeitstempels. Siehe https://superuser.com/a/1251045/290299 . Natürlich kann dies farbcodiert werden, zum Beispiel mit einer hellblauen / lila Farbe, wie folgt:
Farben für
ls
. Nach dem Lesen des Handbuchs für ls kann man beispielsweise die Farben fürls
die folgenden zwei Befehle aktivieren :Als letzte Bemerkung, die ich nicht getestet habe, da ich mit meiner Konfiguration zufrieden bin, könnte eine andere Möglichkeit für jemanden sein, den Port
coreutils
von MacPorts zu installieren und dann zu verwendengdircolors
(Quelle: https://unix.stackexchange.com/a/174596) / 194343 ). (Ich kann diesen letzten Teil in Zukunft bearbeiten, da alle oben genannten Teile verwandte Teile sind, die den Alltag viel lustiger und leichter zu bewältigen machen.)quelle
Ich habe festgestellt, dass mit zsh5 (dem Standard unter Debian Jessie) alle diese Lösungen funktionieren:
$'\e[00m
$fg[white]
$fg{white}
Jetzt haben sie ein Problem: Sie bewegen den Cursor, was beim Tabulieren zu einem hässlichen Aufkleber führt (zur automatischen Vervollständigung). Die Lösung besteht einfach darin, die Escape-Sequenzen mit zu umgeben
%{FOOBAR%}
. Ich habe eine Weile gebraucht, um das herauszufinden. Für die 2. und 3. Lösung ist dascolors
Lademodul obligatorisch. Um die erste Lösung lesbar zu halten, definieren Sie einfach Variablen für die von Ihnen verwendeten Farben.quelle
Um eine Eingabeaufforderung mit der Farbe abhängig vom Exit-Status des letzten Befehls zu erhalten, können Sie Folgendes verwenden:
Fügen Sie einfach diese Zeile zu Ihrem hinzu
~/.zshrc
.In der Dokumentation sind mögliche Platzhalter aufgeführt.
quelle
Probieren Sie meinen Favoriten: setzen Sie ein
diese Linie:
vergiss nicht
um die Änderungen zu testen
Sie können natürlich die Farben / Farbcodes ändern :-)
quelle
man zshall und suche nach PROMPT EXPANSION
Nachdem Sie die vorhandenen Antworten hier gelesen haben, sind einige von ihnen widersprüchlich. Ich habe die verschiedenen Ansätze auf Systemen mit zsh 4.2 und 5+ ausprobiert und festgestellt, dass diese Antworten widersprüchlich sind, weil sie nicht angeben, auf welche Version von ZSH sie abzielen. Verschiedene Versionen verwenden hierfür unterschiedliche Syntax und einige von ihnen erfordern verschiedene Autoloads.
Daher ist es wahrscheinlich die beste Wahl, zshall zu managen und nach PROMPT EXPANSION zu suchen, um alle Regeln für Ihre spezielle Installation von zsh herauszufinden. Beachten Sie in den Kommentaren, dass Dinge wie "Ich verwende Ubuntu 11.04 oder 10.4 oder OSX" nicht sehr aussagekräftig sind, da unklar ist, welche Version von ZSH Sie verwenden. Ubuntu 11.04 impliziert keine neuere Version von ZSH als Ubuntu 10.04. Es kann eine Reihe von Gründen geben, warum eine ältere Version installiert wurde. Im Übrigen impliziert eine neuere Version von ZSH nicht, welche Syntax verwendet werden soll, ohne zu wissen, um welche Version von ZSH es sich handelt.
quelle
Um alle oben genannten Antworten zu ergänzen, besteht ein weiterer praktischer Trick darin, die Einstellungen für die farbige Eingabeaufforderung in eine zsh-Funktion zu platzieren. Dort können Sie lokale Variablen definieren, um längere Befehle zu aliasen, z. B.
rc=$reset_color
oder Ihre eigenen Farbvariablen definieren. Vergessen Sie nicht, es in Ihre.zshrc
Datei aufzunehmen und die von Ihnen definierte Funktion aufzurufen:quelle