Sua configuração de prompt está incorreta, mas não está relacionada ao problema do git.
Para fazer a edição de linhas funcionar (ou seja, para saber onde o cursor está após a impressão do prompt), o bash precisa saber exatamente a largura do prompt. Ele não pode reconhecer todas as possíveis seqüências de escape específicas do terminal lá fora, portanto, é necessário informar explicitamente que certas partes do prompt são invisíveis; eles precisam estar cercados pelos códigos \[
e \]
. Por exemplo:
PS1="\[3[1;33m\]\u@\h: \w>\[3[m\]"
Sem fazer isso, digitar um comando com mais de uma linha resultará na segunda linha substituindo a primeira e outras falhas.
No entanto, nada disso afeta o git. O motivo git log
imprime ESC[33m
porque o próprio git quer que a linha seja mostrada em amarelo - isso sempre acontece quando a opção de cor, color.ui
, está ativada. A razão pela qual você vê a palavra "ESC" em vez de amarelo é porque seu $ PAGER não reconhece a sequência; acha que você está lendo um arquivo com dados binários (em oposição ao texto legível por humanos).
Se você estiver usando o pager less
padrão como $ PAGER, pode ser que tenha adicionado algumas opções personalizadas à variável $LESS
e tenha esquecido a que permite cores, -R
. Normalmente git configura $LESS
internamente ao executar um pager, mas se você definir essa variável você mesmo git não irá tocá-lo e você terá que adicionar -R
a ele:
export LESS="R"
export LESS="e M q R F X z -3"
... ou algo nesse sentido.