Você deseja o \[ ... \]
em torno das partes não imprimíveis dos prompts (ou seja, as seqüências de escape), não a coisa toda. Desde que você os tenha em torno de toda a coisa, o bash não consegue descobrir quanto espaço na tela o prompt ocupa e irá redesenhar o comando no lugar errado. Aqui está o que deveria ser:
export PS1='\[\e[1;94m\]\h:\W \u\[\e[1;93m\]\$\[\e[0m\] '