Nehmen wir an, meine Eingabeaufforderung sieht folgendermaßen aus (das _ steht für meinen Cursor)
~ % _
Kann ich das auf irgendeine Weise so aussehen lassen?
~ % _
[some status]
Die Frage betraf ursprünglich zsh, hat jetzt aber andere Antworten.
Antworten:
Die folgenden Einstellungen scheinen zu funktionieren. Der Text in der zweiten Zeile verschwindet, wenn die Befehlszeile die erste Zeile überschreitet. Die
preexec
Funktion löscht die zweite Zeile, bevor der Befehl ausgeführt wird. Wenn Sie es behalten möchten, wechseln Sie zupreexec () { echo; }
.%
Fluchten sind im zsh-Handbuch (man zshmisc
) dokumentiert .Terminfo ist eine Terminalzugriffs-API. Zsh verfügt über ein
terminfo
Modul, das den Zugriff auf die Terminalbeschreibungsdatenbank ermöglicht. Hierbei$terminfo[$cap]
handelt es sich um die Zeichenfolge , die gesendet werden muss , um die Funktionalität des Terminals auszuüben$cap
, dh um dessen$cap
Befehl auszuführen .man 5 terminfo
Weitere Informationen finden Sie unter (unter Linux kann die Abschnittsnummer bei anderen Geräten variieren).Die Reihenfolge der Aktionen ist: Bewegen Sie den Cursor eine Zeile nach unten (
cud1
) und dann nach oben (cuu1
). speichere die Cursorposition (sc
); Bewegen Sie den Cursor eine Zeile nach unten. drucken[some status]
; Stellen Sie die Cursorposition wieder her. Das Ab-und-Auf-Bit am Anfang ist nur erforderlich, wenn sich die Eingabeaufforderung in der untersten Zeile des Bildschirms befindet. Die preexec-Zeile löscht die zweite Zeile (el
), damit sie nicht mit der Ausgabe des Befehls verwechselt wird .Wenn der Text in der zweiten Zeile breiter als das Terminal ist, ist die Anzeige möglicherweise verstümmelt. Verwenden Sie Ctrl+ Lzur Reparatur.
quelle
Hier ist ein
bash
Äquivalent der zsh-Lösung von Gilles. Bash hat kein natives terminfo-Modul, aber dertput
Befehl (gebündelt mitterminfo
) macht so ziemlich das Gleiche.Wenn das Terminal eine der Funktionen nicht unterstützt, wird auf eine einzeilige Eingabeaufforderung zurückgegriffen.
Die
trap
Zeile ist eine hackige Methode, um diepreexec
Funktion von zsh zu emulieren . Weitere Informationen finden Sie unter /superuser/175799/ .BEARBEITEN : Verbessertes Skript basierend auf Gilles 'Kommentaren.
quelle