Probleme mit dem Cursor im Mac-Terminal / iTerm-Verlauf

13

So oft führe ich einen Befehl in Terminal.app oder iTerm aus, drücke den Aufwärtspfeil, um zum Bearbeiten zurückzukehren, und der Cursor springt in die Zeile darüber oder an eine völlig falsche Stelle. Dies ist besonders dann der Fall, wenn der Befehl so lang ist, dass er in die nächste Zeile übergeht. Manchmal werden diese langen Befehle alle in einer Zeile angezeigt, und manchmal werden sie in mehreren Zeilen korrekt angezeigt.

Dies geschieht sowohl in iTerm als auch in Terminal.app

Kommt auch in den Modi vi und emacs vor und macht sie so ziemlich unbrauchbar.

irgendwelche Ideen? Vielen Dank!

Glockenspiel
quelle

Antworten:

20

Dies liegt wahrscheinlich daran, dass Ihre Eingabeaufforderungsdefinition Sequenzen enthält, die bei der Länge der Eingabeaufforderung nicht berücksichtigt werden sollten, z. B. beim Festlegen von Farben. Diese Sequenzen sollten zwischen \[und liegen \], um zu verhindern, dass ihre Länge gezählt wird. Hier ist ein Beispiel, das eine komplett rote Eingabeaufforderung erzeugt:

PS1='\[\033[31m\]\u@\h:\w\$\[\033[0m\]'
Bis auf weiteres angehalten.
quelle
Diese Zeile steht in der Konfigurationsdatei (wie .bashrcoder .bash_profile) für alle - wie ich -, die nach dem Lesen der Antwort keine Ahnung haben.
montrealist