2

В моем bash_profile установлено следующее приглашение:

export PS1='\[\e[1;94m\h:\W \u\e[1;93m\$\e[0m \]'
# default = '\h:\W \u\$ '

К сожалению, при определенных условиях я сталкиваюсь с проблемами:

  • В пустом приглашении я набираю символ, а затем нажимаю клавишу Backspace - приглашение полностью стирается, и курсор перемещается к левому краю терминала вместо простого удаления символа

  • Если я использую клавиши со стрелками вверх и вниз для автозаполнения для команд, занимающих несколько строк, изменяется только текущая строка, но строка выше (после подсказки) остается одна

Как я могу исправить мою подсказку, чтобы вести себя должным образом при любых обстоятельствах как по умолчанию?

1 ответ1

4

Вы хотите, чтобы \[ ... \] вокруг непечатаемых частей подсказок (то есть escape-последовательностей), а не всей вещи. Поскольку у вас есть все это, bash не может определить, сколько места на экране занимает приглашение, и перерисовает команду в неправильном месте. Вот что должно быть:

export PS1='\[\e[1;94m\]\h:\W \u\[\e[1;93m\]\$\[\e[0m\] '

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