Связанный:Почему при просмотре истории возникает ошибка в командной строке 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 относительно фактического столбца.