Verlaufsbefehle werden im Bash Vi-Modus falsch wiedergegeben

Ich habe dieses seltsame und wirklich ärgerliche Problem im Bash-Vi-Modus.

Env: Mac 10.9.2, iTerm 2 1.0 oder Terminal.app,$TERM={screen-256color|xterm-256color|xterm|vt}

Repro-Schritte:

  1. Führen Sie einige lange Befehle aus (wie 'some_long_commands_long_long')
  2. Drücken Sie Escund dann k.

Das Problem ist:

  1. Ich sehe "some_long_commands_long_long" auf meiner Befehlszeile. Der Cursor steht aber nicht am Anfang, sondern auf dem 12. Zeichen, siehe ScreenshotGeben Sie hier die Bildbeschreibung ein

  2. Wenn ich drücke A, um einen anderen Text anzuhängen, geht der Cursor über den Befehl hinaus, was bedeutet, dass der REAL-Befehl dort beginnt, wo sich der Cursor an der ersten Stelle befindet, das Rendering ist falsch.

    Geben Sie hier die Bildbeschreibung ein

Ich habe bei Google gesucht, aber nichts gefunden ... Hat jemand eine bessere Idee dazu? Vielen Dank...

Antworten (2)

Nach langem Debuggen habe ich es endlich herausgefunden. Es ist ein Problem, das von PS1 verursacht wird. Im Grunde habe ich vergessen, mein farbiges ">" mit "\[" und "\]" zu umschließen.

Basierend auf Kommentaren in Stackoverflow liegt das Problem IMHO in einer tmux/iTerm/settings-Kombination, nicht in sich bashselbst. Sie sollten versuchen, das Problem Schritt für Schritt zu lösen:

  1. starte nativ Terminal.appmit einem sauberen ~/.profile und~/.tmuxrc
  2. versuche es set -o vimal ohnetmux
  3. wenn es funktioniert, (sollte) - zu wechseln iTermund erneut prüfen (sollte funktionieren)
  4. Beginnen Sie tmuxin Terminal.appund in iTermund vergleichen Sie ... beide sollten funktionieren.
  5. Schritt für Schritt aktivieren Sie Ihre .tmuxrcKonfiguration ...
Danke! Nach langem Debuggen habe ich es endlich herausgefunden. Es ist ein Problem, das von PS1 verursacht wird. Im Grunde habe ich vergessen, mein farbiges ">" mit "[" und "]" in meiner PS1 zu umschließen ... Nochmals vielen Dank für all die Hilfe!