Linux: раскраска bash заставит сломать возврат каретки

Когда я пытаюсь раскрасить bash подскажите как это:

export PS1="\e[0;31m[\u@\h \W]\$ \e[m "

он прерывает возврат каретки (вместо перехода на новую строку, когда строка заполнена, он начинается с той же строки и стирает введенный текст).

Если я уберу последовательность цветов, она будет работать нормально.
Я использую Ubuntu 11.10 и терминал (в guake та же ошибка).

2 ответа

Решение

Вы должны обернуть все escape-последовательности между \[ а также \] для того, чтобы readline правильно вычислял видимую длину приглашения. Без них readline думает, что подсказка длиннее, и не знает, когда текст достигает поля.

PS1 = "\ [\ e [; 31 м\][\ u @ \ h \ W] \ $ \ [\ e [м\]"

[и] совет работал на bash и в OS X 10.8.2.

Я использую:

PS1 = "[\ e [0; 37 м \W\$(ветвь git 2>/dev/null | grep -e '* ' | sed 's/^..(.*)/{\1}/') \$ \e[м]"

который показывает мне мою текущую ветку git в использовании.

Другие вопросы по тегам