iTerm2-Cursor kehrt nicht zum Zeilenanfang zurück

Ich bin mir nicht sicher, ob mir hier eine Art Konfiguration fehlt, aber gelegentlich kann mein Cursor nicht zum Zeilenanfang zurückkehren, an dem der Befehl beginnt. Wenn ich FN+Pfeil nach links drücke, geht es ein paar Zeichen nach dem Beginn des Befehls, wenn ich FN+Pfeil nach rechts drücke, geht ot weit hinter das Ende der Zeile. Es scheint, als ob es denkt, dass die ganze Linie nach rechts verschoben wird. Siehe Screenshots im Anhang. Das konnte ich absichtlich nicht reproduzieren. Es passiert mit allen möglichen Befehlen ziemlich nicht deterministisch :-(. Alle Ideen sind willkommen, danke.FN + linker Pfeil FN + Rechtspfeil

Matthew

Tritt dies auf, wenn Sie eine weniger stark modifizierte Shell-Eingabeaufforderung verwenden? Versuchen Sie, zu einem Super-Vanilla-Shell-Setup zu wechseln.
Du meinst wie Plan Cmd Prompt, nicht angepasst?
Ja. Wenn dies Bash ist, versuchen Sie so etwas wie for f in ~/.bash{rc,_profile}; do mv "${f}" "${f}.save"; doneund erhalten Sie dann ein neues iTerm2-Fenster. Hast du das Problem danach immer noch?
Das hat geholfen :-). Gibt es jedoch eine Möglichkeit, die benutzerdefinierte cmd-Eingabeaufforderung beizubehalten und dieses Problem zu lösen? Mir ist immer noch unklar, warum das passiert. Ich verwende eine benutzerdefinierte cmd-Eingabeaufforderung:export PS1="$(tput bold)$(tput setaf 6)\t [\W]$(tput sgr0): "

Antworten (2)

Unsere Debugging-Sitzung hat also festgestellt, dass es sich um Ihre sofortige Anpassung handelt, nicht um iTerm2. Sie sagten, Ihre Eingabeaufforderungsanpassung ist:

export PS1="$(tput bold)$(tput setaf 6)\t [\W]$(tput sgr0): "

Die einfache Antwort lautet: Verwenden Sie sie nicht tput, um Ihre Eingabeaufforderung anzupassen. Es ist der sgr0Reset-Befehl, der wahrscheinlich mehr tut, als Sie wollen, und gepufferte Textbewegungen vermasselt.

Versuchen wir dies direkt mit ANSI-Codes. Wenn Sie ein ANSI-Farbschema-Setup wie dieses verwenden , können Sie Folgendes versuchen:

export PS1="${normal}${bold_blue}\t [\W]${normal}: "

Das funktioniert für mich perfekt mit Fn-Pfeil-Kombinationen zum Navigieren der Linie.

tputist eine nette Idee, aber es stammt aus dem ncursesPaket, das eine sehr fortschrittliche Methode darstellt, Benutzeroberflächen in Eingabeaufforderungsschnittstellen zu erstellen, indem alle Arten von Terminal-Sachen ausgenutzt werden. Halten Sie sich hier am besten an ANSI.

Eine letzte Sache. Ich versuche diese Eingabeaufforderung, aber es gibt mir den Fehler ': Bad Substitution': export PS1="${color reset}${color blue bold}\t [\W]${color reset}: ". Irgendwelche Ideen?
Nun, colores ist ein Funktionsaufruf, aber Sie versuchen, ihn als eine Art Variablenreferenz zu verwenden. Versuchen Sie es export PS1="$(color reset)$(color blue bold)\t [\W]$(color reset): "stattdessen.
Ah, jetzt verstehe ich. Ich habe eigentlich keine anderen Skripte aus dem GitHub-Link importiert. Ich dachte, das colorwäre eigentlich eine Art Befehl (obwohl es weder in bash noch in zsh funktionierte). Jetzt sehe ich, dass es eine Funktion ist. Ich werde mehr damit spielen und wir werden sehen, was ich zum Laufen bringen kann. Danke für die ganze Hilfe :-).
Wenn dies nicht funktioniert, setzen Sie ein \[vor jede nicht druckende Sequenz (dh eine Farbcodevariable) und ein \]danach.
Ich hatte die gleichen Symptome ohne tput. $BOLDFür mich bestand die Lösung darin, z. B. ${BOLD}in den Variablenreferenzen in meiner PS1 zu ändern :RED='\[\033[31m\]' GREEN='\[\033[32m\]' YELLOW='\[\033[33m\]' BLUE='\[\033[34m\]' MAGENTA='\[\033[35m\]' CYAN='\[\033[36m\]' BOLD='\[\033[1m\]' NORMAL='\[\033[0m\]' INVERT='\[\033[7m\]' UNINVERT='\[\033[27m\]' export PS1="${BOLD}\$(which_newton)${NORMAL}${BOLD}\$(git_branch)${BLUE}\$(gradle_status)\W/${NORMAL} $ "

Ich bin auf dasselbe Problem gestoßen, mit genau denselben Dingen (iTerm, bash und tput). Ich habe $(tput sgr0)vorne hinzugefügt und eine Bash-Sub-Shell gestartet, das Problem verschwindet und Ctrl + Avon Ctrl + Eda an funktioniert alles ordnungsgemäß.