21

Когда я пытаюсь раскрасить подсказку bash следующим образом:

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

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

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

2 ответа2

39

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

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

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

Я использую:

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .