2012-05-15 5 views
13

Das ist ein seltsames, dass ich keine gute Antwort mit Google gefunden habe (natürlich gibt es immer die Möglichkeit, dass ich einfach scheitere). Wenn ich bei einer Bash-Eingabeaufforderung einen Teil der Eingabeaufforderung einfärbe, kann ich beim Aufrufen eines vorherigen Befehls nicht zum Anfang der Zeile wechseln, nachdem eine bestimmte Anzahl von Zeichen überschritten wurde (insbesondere 31). .Bash prompt history issue

Meine aktuelle Bash-Prompt ist dies: (Farben definiert sind, früher in meinem .bashrc)

PS1="[\[email protected]$cyan\h$NC \w] " 

Aber wenn ich es so weit ändern:

PS1="[\[email protected]\h \w] " 

Es mich nicht mehr daran hindert, gehen bis zum Anfang der Zeile.

Die ungerade Teil, ist optisch, wenn ich nach Hause zu gehen, um an den Anfang der Zeile gehen (oder die Pfeiltasten verwenden) stoppt es 11 Zeichen in die Zeichenfolge, aber wenn ich es von dort bearbeiten, es bearbeitet beginnend am Anfang der Zeile.

Weiß jemand, warum dies passieren könnte? Ich würde gerne Farben in meinem Prompt verwenden, da ich die Serveradministration verwende und die Farben, wie ich meine Boxen auf einen Blick unterscheide.

Antwort

25

Nicht druckbare Sequenzen wie Farbcodes müssen von \[ und \] umgeben sein, damit ihre Längen nicht als Teil der Länge der Eingabe gezählt werden.

+1

[Beispiele] (https://github.com/l0b0/tildeblob/9161937d6173e65e81de145bbc7edbbb074e99e5/.bashrc#L92) – l0b0

+0

Das war es genau, danke! –

+0

Ich habe dieses lästige Problem seit Monaten. Vielen Dank! +1 – jweyrich