Terminal PS1 et couleurs
Question
Je suis habitué de Linux à une invite de couleur dans mes coquilles et aussi vouloir mettre en œuvre que dans mon OS X Terminal.app. Les terminaux différemment si réagisse. Si j'utiliser mon code normal PS1 le côté droit d'une ligne sera coupée vers le bas à un point étrange (sûrement pas l'extrémité droite de la fenêtre Terminal). Et aussi la ligne suivante ne sera pas affiché sur la ligne suivante, mais sur la même ligne.
réaction attendue:
erik2:~[06:46 am]$ expectedexpectedexpectedexpectedexpectedexpectedexpect
edexpected_
réelle réaction:
ectedexpected_am]$ expectedexpectedexpectedexpectedexp
Est-ce normal pour le terminal? Y at-il une alternative? Est-ce que je viens de code quelque chose de mal? Jetez un oeil à mon code PS1:
export PS1="\033[0;34m\u:\W\e[0;32m[\@]\e[m\033[0;34m$\033[m "
La solution
Vous devez échapper aux pièces non-impression de l'invite en les entourant de \[…\]
.
export PS1="\[\033[0;34m\]\u:\W\[\e[0;32m\][\@]\[\e[m\033[0;34m$\033[m\] "
Dans le cas contraire, readline se confond sur l'espace restant sur la ligne de commande.