Relacionado:Por que meu prompt do bash está bugado quando navego no histórico?
A história se parece com:
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*
são todos aliases para comandos git. Quando percorro o histórico, está tudo bem, até chegar ao número 1833 (o sublinhado indica a posição do cursor):
$ gd _
[ up arrow]
$ gds_
[up arrow]
$ gdit remote -v_
Achei que era por causa de caracteres não imprimíveis no meu PS1, mas coloquei todos entre colchetes:
PS1="\n\[$FCYN\]\$(date +%H:%M:%S) \w\[$IGreen\]\$(__git_ps1)\[$Black\] $ \[$DarkGray\]"
Perdi algo? Isso é algo que acontece quando você tem mensagens de commit multilinhas?
editar: minha solução final é muito grande para ser colocada em um comentário:
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)\] "
O que parece loucura, mas produz um prompt legal com o branch git e cores que são fáceis de ler em um fundo claro (que você não pode ver aqui):
collumj@machineName ~ (dev) 17:35:42
$
Muito obrigado ahttp://bashrcgenerator.com/.
Responder1
"Tudo" está entre colchetes, mas existem várias incógnitas. Como a coluna está deslocada para a direita, isso implica que algo está enviando um texto que o bash não percebe.
Embora seja possível que uma incompatibilidade de localidade possa causar isso, você provavelmente notaráque.
Gostaria de verificar e garantir que sua configuração não esteja usando o recurso de cores do __git_ps1
. De acordo comFedoraque invoca um script chamadogit-prompt.sh
, que por sua vez (se você tiver set GIT_PS1_SHOWCOLORHINTS
) pode enviar sequências de escape que podem confundir o bash em relação à coluna real.