Frage

Ich habe folgendes setzen in meiner ~ / .localsh Datei meines Bash-Eingabeaufforderung anpassen, wenn sie mit git arbeiten.

Grundsätzlich möchte ich die aktuelle Zweig in meinem Terminal angezeigt bekommen. Das gitk Tool zeigen Zweige mit grünem Hintergrund und schwarzem Vordergrund, so das ist, was ich versuche zu tun.

Was ich habe funktioniert, aber wenn ich den Pfeil nach oben auf der Tastatur drücken, um durch die zuvor eingegebenen Befehle blättern zurück wird es überschrieben.

Diese Sachen passiert ist, bevor zu sein, wenn Sie mir din't eine Farbsequenz am Ende mit [\ e [0m]. Nun ist es wegen Aufruf getgitbranch Funktion mir geschieht. Ich denke, es hat etwas mit dem Terminal nicht wissen, wie lange die Aufforderung ist.

zu tun

So heres die Frage ... Wie verwende ich richtig dynamische Elemente in meinem Bash-Eingabeaufforderung und es nicht aufstehen abgespritzt, wenn ich die Pfeile nach oben benutzen?

function getgitbranch()
{
git branch | grep "^\*" | cut -c3-
}

function blabla()
{
PS1=""
PS1="$PS1\[\e[0;30m\]\[\e[42m\]\[\$(getgitbranch)\]\[\e[0;49m\]\[\e[0m\] "
PS1="$PS1\[\e[1;35m\][\[\e[0m\]"
PS1="$PS1\[\e[1;33m\]\w\[\e[0m\]"
PS1="$PS1\[\e[1;35m\]]\[\e[0m\]"
PS1="$PS1 \[\e[1;31m\]>\[\e[0m\] "
export PS1
}
War es hilfreich?

Lösung

Nehmen Sie die \[\] aus der ganzen $(getgitbranch). Die ausgegebenen Zeichen von dieser Funktion belegen tatsächlich Platz auf dem Bildschirm, so dass Sie Bash wollen für sie zu berücksichtigen. Mit \[\] sagt nicht die Zeichen zählt, die innerhalb erscheinen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top