Es necesario encerrar los caracteres no imprimibles correctamente en \[...\]
bloque. Esto garantiza que se cuente el número correcto de caracteres al generar el aviso.
Yo tuve el mismo problema y aquí está la PS1 que no dio problemas hasta ahora :
\[\e[30;47m\]$(parse_git_branch)\W\[\e[30;47m\]$\[\e[0m\]
Eso es lo que entiendo de lo que he leído en SO:
Debe añadir \[
antes de cualquier código ANSI inicial y añadir \]
después de las finales. Ejemplo: en el uso habitual: \033[32mThis is in green\033[0m
para PS0/1/2/4: \[\033[32m\]This is in green\[\033[m\]
\[
es para el inicio de una secuencia de no imprimible caracteres \]
es para el final de una secuencia de no imprimible caracteres
Consejo: para memorizarlo puedes añadir primero \[\]
y luego poner su ANSI entre ellos:
- \[start-ANSI-code\]
- \[end-ANSI-code\]
https://stackoverflow.com/q/5947742/28938235#28938235
https://stackoverflow.com/q/17432993/
https://stackoverflow.com/q/20697195/20698168#20698168