Ich hätte gerne eine mehrzeilige zsh-Eingabeaufforderung mit einem rechtsseitigen Teil, die ungefähr so aussieht:
2.nate@host:/current/dir 16:00
->
Ich kenne RPROMPT in zsh, aber das hat eine rechtsbündige Eingabeaufforderung gegenüber Ihrer normalen Eingabeaufforderung, die sich in derselben Textzeile befindet wie Ihre Eingabe.
Gibt es eine Möglichkeit, einen rechtsbündigen Teil zur ersten Zeile einer mehrzeiligen Eingabeaufforderung zu setzen? Ich suche entweder eine Direktive in der PS1-Variablen, die 'Right Align Now' sagt, oder eine Variable, die PS1 entspricht, was RPROMPT PROMPT bedeutet.
Vielen Dank!
Hier ist, wie ich dieses Ding gerade konfiguriert habe. Bei diesem Ansatz sind keine Manipulationen der Escape-Sequenz erforderlich, es stehen jedoch zwei verschiedene Variablen für die primäre Eingabeaufforderung zur Verfügung:
PS1
mit undNPS1
ohne Farbgebung .Beachten Sie die Verwendung von
print -P
zur sofortigen Erweiterung,${#variable}
zum Abrufen der Länge der in Variablen gespeicherten Zeichenfolge undprintf "%Nd"
zum Auffüllen der linken Seite mitN
Leerzeichen. Beideprint
undprintf
sind eingebaute Befehle, daher sollte es keine Leistungseinbußen geben.quelle
Definieren wir die Eingabeaufforderung mit diesem Layout:
Dazu benötigen wir eine Funktion, die angibt, wie viele Zeichen eine bestimmte Zeichenfolge beim Drucken benötigt.
Wir benötigen eine weitere Funktion, die zwei Argumente verwendet und mit diesen Argumenten eine vollständige Geldstrafe auf den gegenüberliegenden Seiten des Bildschirms ausgibt.
Schließlich können wir eine Funktion definieren, die setzt
PROMPT
undRPROMPT
, ZSH anweist, sie vor jeder Eingabeaufforderung aufzurufen, und entsprechende Optionen für die Erweiterung der Eingabeaufforderung festlegen:Dies erzeugt die folgende Eingabeaufforderung:
#
wenn root,%
wenn nicht; Grün bei Erfolg, Rot bei Fehler.Weitere Details finden Sie in der mehrzeiligen Eingabeaufforderung: Die fehlende Zutat und der vollständige Code in dieser Übersicht .
quelle