Настройка командной строки и поведение cmd

Я хочу, чтобы мое приглашение отображало:

  1. текущий (абсолютный) рабочий каталог, выделен зеленым и

  2. в НОВОЙ строке знак доллара и пустое место.

Я использую эту строку в .profile

export PS1='\e[0;32m$(pwd)\n\e[m$ '

Так, когда, например, в Desktop моя подсказка выглядит так:

Однако иногда при нажатии стрелки вверх для повторного запуска предыдущих команд в начале запроса появляется случайная последовательность символов, которая, похоже, не исчезнет, ​​если я не нажму клавишу ввода, например

Я никогда не ударил cd cd Desktop команда. Самое странное, что Backspace даже не удалит первый из двух cd Команды выше!

Какие-либо предложения?

2 ответа

Решение

Вы должны убедиться, что непечатаемые символы в приглашении заключены в экранированные квадратные скобки, иначе bash не сможет правильно рассчитать размер приглашения. Я думаю, что я установил это для вас:

PS1='\[\e[0;32m\]$PWD\n\[\e[m\]$ '

Прежде всего, большое спасибо @Zanna за то, что он указал правильный путь для этого.

Ради более полного ответа я расширил решение, которое включает в себя:

а) cwd зеленого цвета

б) в новой строке ветка git (если есть) желтоватого цвета с красной звездой, если ветка грязная

Чтобы выполнить b, необходима подсказка git осведомлена

Это выглядит как последняя строка в ~/.bashrc

export PS1='\[\e[0;32m\]$PWD\n\[\e[m\]\[\e[0;33m\]$git_branch\[\e[m\]\[$txtred\]$git_dirty\[$txtrst\]$ '

Теперь мы надеемся, что приглашение будет расширяться до sth, если вы находитесь на ветке git

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