** Se a resposta de Christopher não resolver isso para você ...
Todo código de escape precisa estar cercado por \[
e \]
. Perder apenas um único ou ter um par incompatível e você provavelmente vai acabar com problemas como você está vendo. Eu não sei o que está em __git_ps1
, então é difícil dizer o que está errado.
Se você ainda está preso, aqui está uma pequena "dica de depuração". :) Você pode fazer uma inspeção manual simples, descarregando seu prompt em um arquivo de texto e exibindo-o em vi
. Isso garantirá que nada seja renderizado e você verá os caracteres reais (por exemplo, versus apenas echo $PS1
da linha de comando).
echo $PS1 > ps1
vi ps1
Se houver muitos códigos, você poderá verificar se encontrou o número de colchetes correspondente inserindo :%s/\[//n
e, em seguida, :%s/\]//n
. Isso lhe dará uma contagem de abertura e fechamento de colchetes de escape ... pelo menos você será capaz de descartar qualquer parêntesis não pareados confirmando que ambas as contagens são as mesmas. (Eu tenho prompts bastante complexos e fui mordido pelo erro de incompatibilidade mais de uma vez!)
Ainda não consegue descobrir? Copie o conteúdo desse arquivo aqui para que possamos inspecioná-lo.