Цвета терминала приводят к тому, что приглашение возвращается к началу строки
При использовании git я решил добавить .git-prompt.sh в мой файл.bashrc. Этот файл показывает мне название ветви, над которой я сейчас работаю. Я также решил добавить немного цвета.
if [ -f ~/.git-prompt.sh ]; then
#include the branch detection file
source ~/.git-prompt.sh
#add the current branch in yellow
export PS1='$(__git_ps1 "[\e[38;5;220m%s\x1b[0m]")'
#make the rest of the text in the prompt gray
PS1+="\e[38;5;245m\w$ "
#set colors back to default
PS1+="\033[0m"
fi
Использование любого терминала (gnome-terminal, xterm, quake) приводит к той же проблеме. Когда набранная строка становится слишком длинной,
подсказка возвращается к началу строки. Возможно, это связано с тем, что фактическая длина цветного текста намного больше.
Как получить терминальные цвета без этого сбоя?
1 ответ
Решение
Я думаю, что вам нужно написать
#add the current branch in yellow
export PS1='$(__git_ps1 "[\[\e[38;5;220m\]%s\[\x1b[0m\]]")'
#make the rest of the text in the prompt gray
PS1+="\[\e[38;5;245m\]\w$ "
#set colors back to default
PS1+="\[\033[0m\]"
Так что у тебя есть \[
а также \]
окружающие все цветовые директивы.