Die umgekehrte Verlaufssuche in Bash, gefolgt von Pfeiltasten, führt dazu, dass der Cursor an der falschen Stelle angezeigt wird.

Die umgekehrte Verlaufssuche in Bash, gefolgt von Pfeiltasten, führt dazu, dass der Cursor an der falschen Stelle angezeigt wird.

Mir ist oft aufgefallen, dass der Cursor bei der umgekehrten Verlaufssuche von der Befehlszeile aus über CTRL+ manchmal an die falsche Position springt, wenn ich eine Pfeiltaste drücke oder + oder + eingebe, wenn ich den Befehl bearbeiten möchte . Die spezifische Position, an die er springt, scheint ein Offset zu sein, der der Größe meiner Befehlszeilenaufforderung entspricht, wie in festgelegt .rCTRLaCTRLePS1

Dies führt zu Schwierigkeiten, da die tatsächliche Position des Cursors von der auf dem Bildschirm dargestellten Position abweicht. Spätere Änderungen am Befehl werden so dargestellt, als befände sich der Cursor dort, wohin er gesprungen ist, der eigentliche Befehl behält jedoch die richtige Position ohne Sprünge bei.

Weiß jemand, woran das liegt oder wie man es behebt?

BEARBEITEN: Wenn ich am Ende eine neue Zeile hinzufüge, PS1scheint das Problem zu verschwinden. Ich würde den Befehl jedoch lieber in derselben Zeile wie die Eingabeaufforderung eingeben.

Antwort1

Dies wird häufig durch Befehle in Ihrem Verlauf verursacht, die länger als eine Zeile sind. Wenn Sie ein kürzeres Element aus dem Verlauf auswählen, scheint die Breite der Eingabeaufforderung beim erneuten Rendern der Befehlszeile nicht berücksichtigt zu werden, sodass alles nach diesem langen Befehl verrückt spielt.

Die einfache Lösung, die ich gefunden habe, besteht darin, die Home-Taste zu drücken, „echo“ einzugeben und die Eingabetaste zu drücken. Rufen Sie dann den letzten Befehl auf und bearbeiten Sie ihn von dort aus. (Entfernen Sie zuerst das Echo. :)

SIEHE AUCH die Antwort von Alexander Somov weiter unten, in der eine Möglichkeit zur Behebung der häufigsten Ursache dieses Problems beschrieben wird.

Antwort2

Möglicherweise haben Sie in PS1 nicht druckbare Escape-Sequenzen, die nicht in \[ und \] eingeschlossen sind.

Stellen Sie sicher, dass Sie alle wie folgt beigefügt haben:

\[\e[33m\]\w\[\e[31m\] $ \[\e[0m\]

verwandte Informationen