web-dev-qa-db-fra.com

Linux: L'invite Bash à colorier va rompre le retour du chariot

Quand j'essaie de coloriser le bash invite comme ceci:

export PS1="\e[0;31m[\u@\h \W]\$ \e[m "

il enfreint le retour de la chariot (au lieu d'aller à une nouvelle ligne lorsque la ligne est pleine, elle commence dans la même ligne et efface le texte d'entrée).

Si je retire la séquence de couleur, cela fonctionne bien.
[.____] J'utilise Ubuntu 11.10 et Terminal (Guake a le même bug aussi).

26
Abonec

Vous devez envelopper toutes les séquences d'échappement entre \[ et \] Pour que "Readline", calculer correctement la longueur visible de l'invite. Sans eux, 'Readline' pense que l'invite est plus longue qu'aucun est et ne sait pas quand le texte atteint la marge.

 Ps1 = "\ [\ e [; 31m\][\ u @\h\w]\$ \ [\ e [m\]"
46
user1686

la pointe [et] a fonctionné sur Bash sur OS X 10.8.2.

J'utilise:

Ps1 = "[\ e [0; 37m\w\$ (branche GIT 2>/dev/null | grep -e '*' | SED 'S/^ .. (. *)/{\ 1} /')\$\e [m] "

ce qui me montre ma branche GIT actuelle en cours d'utilisation.

1
stonefruit