Was ist los mit diesem PS1-Prompt?

474
Tim Hilt

Ich habe mein PS1-Prompt so gestaltet, dass es dem iPython-Prompt ähnelt:

PS1FIRSTLINE="\[\n\][\t] \[\e[1m\e[38;5;196m\]\u@\H\[\e[0m\] in \[\e[1m\e[38;5;196m\]\w\[\e[0m" PS1SECONDLINE="\n\e[92m\]In [\[\e[1m\]\#\[\e[0m\]] \$ " PS1="$PS1FIRSTLINE$PS1SECONDLINE" 

Was ist los mit diesem PS1-Prompt?

Manchmal bekomme ich jedoch seltsame Probleme, zum Beispiel, dass der Anfang des zuletzt ausgeführten Befehls nach der Eingabeaufforderung noch vorhanden ist und nicht gelöscht werden kann.

Ich denke, es ist ein Problem mit meiner Art, den Farben zu entgehen \e[ ... ]und nicht etwas mit bash oder dem suckless-Terminal, das ich benutze.

Kann mir jemand helfen?

2

1 Antwort auf die Frage

0
Kamil Maciorowski

Zuerst diese Antwort von mir sehen.

Es ist nicht sofort klar, ob \nals Drucken oder Nicht-Drucken zu betrachten ist oder ob die Unterteilung der Druckbarkeit gegenüber der Nichtdruckbarkeit entspricht (wie bei druckbaren ASCII-Zeichen ).

Wenn es darum PS1geht, würde ich sagen, \nsollte "Druck" genannt werden, da dies die Größe der Eingabeaufforderung beeinflusst und darauf kommt es an. Sie sollten beide Vorkommen \naußerhalb von setzen \[ \].

Der erste \nist explizit drin \[ \]. Die zweite (am Anfang PS1SECONDLINE) sieht so aus, als wäre sie nicht auf den ersten Blick, aber es ist auch so. Es ist eine nicht angepaßte \[in PS1FIRSTLINEund wenn die ganze PS1die passende erstellt \]stammt aus PS1SECONDLINE.

Dies sind Ihre Variablen mit den richtigen Modifikationen, die \naußerhalb von liegen \[ \]:

PS1FIRSTLINE="\n[\t] \[\e[1m\e[38;5;196m\]\u@\H\[\e[0m\] in \[\e[1m\e[38;5;196m\]\w\[\e[0m\]" # ^^ deleted embracing \[ \] added closing ^^ PS1SECONDLINE="\n\[\e[92m\]In [\[\e[1m\]\#\[\e[0m\]] \$ " # ^^ added opening PS1="$PS1FIRSTLINE$PS1SECONDLINE"