2009-10-02 14 views
9

vidéo montrant le problème: http://www.mentaframework.org/download/TerminalBug.movMac Terminal.app bug ennuyeux - Comment y remédier?

Quand je tape sur le Terminal.app et atteindre la fin de la ligne, la ligne suivante commence au-dessus de la première ligne, tout en écrasant. Ensuite, si j'utilise la touche d'effacement, tout disparaît et disparaît.

J'ai fait un SSH dans le même terminal à un hôte différent et cela a bien fonctionné, donc peut-il être un problème avec ma configuration de shell?

Regardez le film pour voir ce qui se passe:

Merci,

-Sergio

+0

Salut Sergio. Vous aurez probablement plus de chance sur http://superuser.com. –

+1

La vidéo est un lien brisé. –

Répondre

18

Vous devez marquer les codes d'échappement dans la variable PS1 qui sont la configuration de votre couleur rapide. Le shell doit savoir qu'il n'est pas imprimable et il calcule correctement votre ligne.

Voici un lien vers une explication et quelques exemples:

http://www.artemfrolov.com/articles/coloured-bash-prompt

La pointe rapide:

\[  begins a sequence of non-printing characters 
\]  ends a sequence of non-printing characters 
+0

Ça l'a fait !!! Merci beaucoup! – TraderJoeChicago

+0

Pas de problème. Heureux d'aider. –

+0

L'URL est rompue –

1

http://www.artemfrolov.com/articles/coloured-bash-prompt est actuellement vide (comme, rendez-vous dans Chrome/Firefox/Opera et voir juste les espaces, pas de contenu). Ainsi, après avoir étudié l'exemple here, je le trouve que la conversion:

export PS1='\e[0;32m\[email protected]\h\e[m \D{%b %d} \t $ ' 

qui brise, à

export PS1='\[\e[0;32m\]\[email protected]\h\[\e[m\] \D{%b %d} \t $ ' 

semble fonctionner pour moi (comme un exemple supplémentaire, spécifique).

séparément, et un peu hors-sujet, mais utile (au moins ma référence): mettre à niveau le plus haut avec utile « chemin comprimé » et @ gras-vert utilisateur hôte dans l'invite:

export MYPS='$(echo -n "${PWD/#$HOME/~}" | awk -F "/" '"'"'{if (length($0) > 14) { if (NF>4) print $1 "/" $2 "/.../" $(NF-1) "/" $NF; else if (NF>3) print $1 "/" $2 "/.../" $NF; else print $1 "/.../" $NF; } else print $0;}'"'"')' 
export PS1='\[\e[1;32m\]\[email protected]\h\[\e[m\] \D{%b %d} \t $(eval "echo ${MYPS}")$ ' 

** Modifier **: cette affectation PS1 (la deuxième ligne), imo, est beaucoup plus facile à lire:

export MYPS='$(echo -n "${PWD/#$HOME/~}" | awk -F "/" '"'"'{if (length($0) > 14) { if (NF>4) print $1 "/" $2 "/.../" $(NF-1) "/" $NF; else if (NF>3) print $1 "/" $2 "/.../" $NF; else print $1 "/.../" $NF; } else print $0;}'"'"')' 
export PS1='[email protected]\[$(tput bold)\]$(hostname -s)\[$(tput sgr0)\] \D{%b %d} \t $(eval "echo ${MYPS}")$ ' 
+0

Pourquoi ai-je reçu une rétrogradation pour ce qui précède? –