как сделать так, чтобы многострочные команды не искажали положение курсора при прокрутке истории?

как сделать так, чтобы многострочные команды не искажали положение курсора при прокрутке истории?

Связанный:Почему при просмотре истории возникает ошибка в командной строке bash?

История выглядит так:

 1831  git remote -v
 1832  gs 
 1833  gd 
 1834  gc -am 'moved apsum options etc to their own file
set routes to allow cors
changes to the apsum pull ' 
 1835  git push
 1836  reset
 1837  history
 1838  __git_ps1
 1839  reset
 1840  history
 1841  Kill 99894
 1842  history

g*все это псевдонимы для команд git. Когда я прокручиваю историю, все нормально, пока я не дохожу до номера 1833 (подчеркивание обозначает позицию курсора):

$ gd _
[ up arrow]
$ gds_
[up arrow]
$ gdit remote -v_

Я думал, что это из-за непечатаемых символов в моей PS1, но я вынес их все за скобки:

PS1="\n\[$FCYN\]\$(date +%H:%M:%S) \w\[$IGreen\]\$(__git_ps1)\[$Black\] $ \[$DarkGray\]"

Я что-то пропустил? Это происходит только тогда, когда у вас многострочные сообщения о коммите?

редактировать: мое окончательное решение слишком велико, чтобы поместить его в комментарий:

export PS1="\\n\[\033[38;5;246m\]\u@\[$(tput sgr0)\]\[\033[38;5;245m\]\h\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;28m\]\w\[$(tput sgr0)\]\[\033[38;5;15m\]\[$(tput sgr0)\]\[\033[38;5;2m\]`__git_ps1`\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;90m\]\t\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\[\033[38;5;232m\]\[$(tput sgr0)\]\[\033[38;5;15m\] \[$(tput sgr0)\]\n\[$(tput sgr0)\]\[\033[38;5;0m\]\\$\[$(tput sgr0)\] "

Это кажется безумием, но это создает красивую подсказку с веткой git и цветами, которые легко читаются на светлом фоне (который здесь не виден):

collumj@machineName ~ (dev) 17:35:42  
$ 

Большое спасибоhttp://bashrcgenerator.com/.

решение1

"Всё" заключено в скобки, но есть несколько неизвестных. Поскольку столбец смещен вправо, это подразумевает, что что-то отправляет текст, который bash не замечает.

Хотя это может быть связано с несоответствием локали, вы, скорее всего, заметитечто.

Я бы проверил и убедился, что ваша конфигурация не использует цветовую функцию __git_ps1. СогласноФедоракоторый вызывает скрипт с именемgit-prompt.sh, который в свою очередь (если установлен GIT_PS1_SHOWCOLORHINTS) может отправлять управляющие последовательности, которые могут запутать bash относительно фактического столбца.

Связанный контент