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 "
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à apple.stackexchange
scroll top