Diese Eingabeaufforderung führt dazu, dass Terminals mitten im Bildschirm umbrechen. Warum?

Diese Eingabeaufforderung führt dazu, dass Terminals mitten im Bildschirm umbrechen. Warum?

Ich habe die folgende PS1-Eingabeaufforderung:

export PS1="\e[1m\e[38;5;198m\u\e[0m @ \e[1m\e[38;5;208m\h\e[0m : \e[1m\w\e[0m\e[38;5;226m\$(parse_git_branch)\e[0m \e[1m>>>\e[0m "

Folgendes passiert: Wenn beim Tippen die Hälfte des Terminals erreicht ist, wird der Cursor an den Anfang der Zeile gesendet und überschreibt sich selbst wie folgt:

rossid @ HOST : /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents >>>

oussid @ HOST : /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents >>>  this is just a test to show what happens nothing seri 

(der Rest der Zeichenfolge ersetzt ernsthaft den Anfang)

Irgendeine Idee, warum? (Ich verwende das OSX-Standardterminal und das IntelliJ-Terminal ... alle machen dasselbe)

Antwort1

Sie müssen alle nicht druckbaren Escape-Sequenzen zwischen \[und einschließen \]. Beispiel:

  PS1="\[\e[1m\]\[\e[38;5;198m\]\u\[\e[0m\] @ "

[Zeigt nur einen Teil Ihrer Eingabeaufforderung. Machen Sie dasselbe für den Rest.]

verwandte Informationen