2013-01-08 9 views

Odpowiedz

12

Aby bash, aby dowiedzieć się, ile miejsca na ekranie Twojego szybka zajmuje (a więc tam gdzie zaczyna się rzeczywista linia poleceń), trzeba załączyć nie- drukowanie części zachęty w \[...\]. Zazwyczaj oznacza to, że sekwencje specjalne, takie jak \e[1;30m, muszą być napisane jako \[\e[1;30m\]. W twoim podpowiedzi masz jakieś numery \[ i \], ale znajdują się one w niewłaściwych miejscach, co powoduje, że bash jest bardzo zagmatwany. Znalezienie wszystkich druk oraz zakaz drukowania części wierszu tak skomplikowany jak twój nie jest trywialne, ale myślę, że to robi to dobrze:

export PS1='\[\e[1;30m[\e[\e[1;30m\e[1;33m\] \[email protected]\H \[\e[1;32m\]\w\[\e[0m\] \[\e[1;30m\]]\n[ \[\e[1;31m\]\T\[\e[0m\e[1;30m\] ] > \[\e[37m\]' 
+0

miałem ten sam problem, dzięki za wskazanie, że trzeba mieć kiedykolwiek niedrukowalna część zawarta w '\ [' ... '\]' – pbojinov

+0

Brilliant - bez otaczania sekwencji kolorów w PS1 z '\ [' i '\]', jak stwierdzasz, pozycja kursora staje się niezsynchronizowana, gdy za pomocą strzałki w górę, aby wybrać poprzednie polecenie w historii powłoki. –