Эта подсказка заставляет терминалы переносить середину экрана, почему?

289
user19203

У меня следующая подсказка PS1:

export PS1="\e[1m\e[38;5;198m\u\e[0m @ \e[1m\e[38;5;208m\h\e[0m : \e[1m\w\e[0m\e[38;5;226m\$(parse_git_branch)\e[0m \e[1m>>>\e[0m " 

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

rossid @ HOST : /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents >>>  oussid @ HOST : /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents >>> this is just a test to show what happens nothing seri  

(остальная часть строки серьезно заменяет начало)

Есть идеи почему? (Я использую стандартный терминал OSX и терминал IntelliJ ... все делают то же самое)

-2
Это очень распространенный FAQ. Ищите, прежде чем спрашивать. tripleee 6 лет назад 0
Inded. https://unix.stackexchange.com/questions/317734/, https://superuser.com/questions/695338/ и многие другие. JdeBP 6 лет назад 0

1 ответ на вопрос

1
Akilan

Вы должны заключить все непечатные escape-последовательности между \[и \]. Например:

 PS1="\[\e[1m\]\[\e[38;5;198m\]\u\[\e[0m\] @ " 

[Показывает только часть вашего приглашения. Сделайте то же самое для отдыха.]

Похожие вопросы