Kann zsh RPROMPT verschwinden, wenn ich mit der Eingabe beginne oder nachdem ich einen Befehl ausgeführt habe?

366
Sean Suchter

Ich benutze RPROMPT, um mir einige "zusätzliche" Informationen zu zeigen, für die ich PROMPT-Speicherplatz nicht ausgeben möchte. Wenn ich jedoch aus meinem Terminalfenster in Docs schneiden und einfügen möchte, muss ich die RPROMPT-Crufte manuell löschen.

Gibt es eine Möglichkeit, zsh das RPROMPT zu löschen, wenn ich mit der Eingabe eines Befehls beginne? Oder nachdem ich die Eingabetaste gedrückt habe, um den aktuellen Befehl auszuführen?

3
[mpy] (https://superuser.com/users/195224/mpy) hat die beste Lösung, aber Sie können das RPROMPT beim Tippen ausblenden, indem Sie es mit Leerzeichen auffüllen, um die Zeichenposition nach der Aufforderung zu erweitern . AFH vor 6 Jahren 1
@AFH: Das ist auch eine nette Lösung. Die Berechnung der Eingabeaufforderungsbreite kann jedoch schwierig sein, siehe beispielsweise https://unix.stackexchange.com/a/250457/33390 mpy vor 6 Jahren 0
@mpy - Es ist nicht allzu schwierig, wenn die primäre Eingabeaufforderung und RPROMPT eine feste Breite haben. Allerdings müssen $ COLUMNS verwendet werden, um die Fenstergröße zu ändern. Ich habe ein Scripting für meine `bash'-Eingabeaufforderung geschrieben, um eine vorangegangene neue Zeile hinzuzufügen, wenn der vorherige Befehl den Cursor nicht in Spalte 1 belassen hat, und ich denke, dass ein ähnlicher Code Eingabeaufforderungen zum Ändern der Länge verarbeiten kann. AFH vor 6 Jahren 0

1 Antwort auf die Frage

1
mpy

Es ist möglich, dass RPROMPT gelöscht wird, nachdem eine Befehlszeile akzeptiert wurde - zsh hat zu diesem Zweck ein Optionsrecht (Auszug aus der Manpage zshoptions ):

TRANSIENT_RPROMPT Entfernen Sie eine beliebige rechte Eingabeaufforderung, wenn Sie eine Befehlszeile akzeptieren. Dies kann bei Terminals mit anderen Cut / Paste-Methoden hilfreich sein.

Also, mach einen

setopt TRANSIENT_RPROMPT 

und Ihr Copy & Paste sollte einwandfrei funktionieren.

Dies ist eine Präfektantwort - es löscht das RPROMPT nach Ausführung des Befehls, zeigt es jedoch bis zu diesem Punkt. Es bedeutet, dass meine Schnittpasteten gut funktionieren. Sean Suchter vor 6 Jahren 0