wie kann ich verhindern, dass mehrzeilige Befehle meine Cursorposition durcheinanderbringen, wenn ich durch den Verlauf scrolle?

wie kann ich verhindern, dass mehrzeilige Befehle meine Cursorposition durcheinanderbringen, wenn ich durch den Verlauf scrolle?

Verwandt:Warum tritt in meiner Bash-Eingabeaufforderung ein Fehler auf, wenn ich den Verlauf durchsuche?

Die Geschichte sieht so aus:

 1831  git remote -v
 1832  gs 
 1833  gd 
 1834  gc -am 'moved apsum options etc to their own file
set routes to allow cors
changes to the apsum pull ' 
 1835  git push
 1836  reset
 1837  history
 1838  __git_ps1
 1839  reset
 1840  history
 1841  Kill 99894
 1842  history

g*sind alles Aliase für Git-Befehle. Wenn ich durch den Verlauf scrolle, ist alles in Ordnung, bis ich zur Nummer 1833 komme (Unterstrich bezeichnet die Cursorposition):

$ gd _
[ up arrow]
$ gds_
[up arrow]
$ gdit remote -v_

Ich dachte, es läge an nicht druckbaren Zeichen auf meiner PS1, aber das habe ich alles ausgeklammert:

PS1="\n\[$FCYN\]\$(date +%H:%M:%S) \w\[$IGreen\]\$(__git_ps1)\[$Black\] $ \[$DarkGray\]"

Habe ich etwas übersehen? Passiert das nur, wenn Sie mehrzeilige Commit-Nachrichten haben?

bearbeiten: meine endgültige Lösung ist zu umfangreich, um sie in einen Kommentar zu packen:

export PS1="\\n\[\033[38;5;246m\]\u@\[$(tput sgr0)\]\[\033[38;5;245m\]\h\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;28m\]\w\[$(tput sgr0)\]\[\033[38;5;15m\]\[$(tput sgr0)\]\[\033[38;5;2m\]`__git_ps1`\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;90m\]\t\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;232m\]\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\n\[$(tput sgr0)\]\[\033[38;5;0m\]\\$\[$(tput sgr0)\] "

Das scheint verrückt, erzeugt aber eine nette Eingabeaufforderung mit dem Git-Zweig und Farben, die auf einem hellen Hintergrund (den Sie hier nicht sehen können) leicht zu lesen sind:

collumj@machineName ~ (dev) 17:35:42  
$ 

Vielen Dank anhttp://bashrcgenerator.com/.

Antwort1

"Alles" ist eingeklammert, aber es gibt mehrere Unbekannte. Da die Spalte nach rechts verschoben ist, bedeutet dies, dass etwas Text sendet, den Bash nicht bemerkt.

Es ist zwar möglich, dass eine Nichtübereinstimmung des Gebietsschemas dies verursacht, Sie werden es wahrscheinlich bemerkenDas.

Ich würde überprüfen und sicherstellen, dass Ihre Konfiguration nicht die Farbfunktion von verwendet __git_ps1. LautFedoradas ein Skript namensgit-prompt.sh, das wiederum (sofern Sie gesetzt haben GIT_PS1_SHOWCOLORHINTS) Escape-Sequenzen senden kann, die Bash hinsichtlich der tatsächlichen Spalte verwirren könnten.

verwandte Informationen