Antecedentes
Após a expansão ser feita para as sequências de prompt especiais, cada caractere restante no prompt é contado para calcular o tamanho do prompt.
Problema
Como você adicionou as sequências de cores, que na verdade não devem ser contadas para a duração de um prompt, bash
agora acha que seu prompt é mais longo do que realmente é.
Por causa disso, bash
não pode saber onde está o começo ou o fim da linha e isso cria disfunções mencionadas.
Solução
De bash
manual:
\[ Begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt \] End a sequence of non-printing characters
Basta adicionar essas informações em torno das seqüências de escape de cores para que elas não sejam contadas para o tamanho do prompt.