Kiedy próbuję pokolorować bash
monit w następujący sposób:
export PS1="\e[0;31m[\u@\h \W]\$ \e[m "
przerywa powrót karetki (zamiast przejścia do nowego wiersza, gdy wiersz jest pełny, zaczyna się w tym samym wierszu i usuwa tekst wejściowy).
Jeśli usunę sekwencję kolorów, będzie działać dobrze.
Używam Ubuntu 11.10 i terminala (guake ma również ten sam błąd).
Odpowiedzi:
Musisz owinąć wszystkie sekwencje specjalne między
\[
i\]
, aby „readline” poprawnie obliczył widoczną długość monitu. Bez nich „readline” uważa, że podpowiedź jest dłuższa niż jest w rzeczywistości i nie wie, kiedy tekst osiągnie margines.źródło
\[
,\]
? Chyba tak, ale wydaje mi się, że to nie działa.skip-csi-sequence
ma na celu tłumienie sekwencji wejściowych generowanych przez specjalne klucze.\e[xxm
sekwencję, a nie cały ciąg.\e[39m
z\[\e[;39m\]
i działa dobrzewskazówka [i] działała również w bash na OS X 10.8.2.
Używam:
co pokazuje mi moją aktualnie używaną gałąź git.
źródło