Je rencontre un problème étrange dans l'application Terminal sous Mac OS X Lion. Lorsque j'entre dans une longue ligne de texte qui doit être renvoyée à la ligne suivante lorsqu'elle atteint la fenêtre Edge of the Terminal, il continue à taper en haut du texte à partir de la ligne située au-dessus de celle-ci.
Voici quelques captures d'écran pour illustrer le problème:
Avant que mon texte n'atteigne la fenêtre Bord:
Après que le texte ait atteint la fenêtre Bord:
J'ai également fourni des captures d'écran de mes paramètres de texte et de fenêtre au cas où ceux-ci pourraient être utiles.
Paramètres du texte:
Paramètres de la fenêtre:
Merci d'avance pour toute aide offerte. J'ai ce problème depuis un moment et je ne l'ai jamais fait. Cela devient vraiment vraiment pénible quand j'entre dans des choses qui nécessitent de grosses commandes grep et de longs noms de chemins.
La variable d'environnement PS1
détermine l'apparence de l'invite de Shell. man bash
donne une documentation complète à ce sujet. (Il y en a plusieurs, pour différents modes).
Il y a un certain nombre de fichiers qui peuvent le configurer, généralement l'un des ~/.profile
, ~/.bashrc
, /etc/profile
ou /etc/bashrc
.
Si vous allez avoir des codes de couleur ou d’autres séquences de contrôle à l'intérieur, vous devez les envelopper avec \[
et \]
correctement (et PAS en enveloppant le texte normal), sinon la modification de ligne pourrait être gâchée comme dans votre cas. Je suggère de réinitialiser PS1
à la valeur par défaut, puis d’ajouter avec précaution la coloration, élément par élément.
Par exemple:
PS1='\[\033[1m\033[32m\]\u@\h \w\[\033[0m\]\$ '
^^^^^^^^^^^^^^^ ^^^^^^^
Les commandes de coloriage sont soulignées. Notez comment ils sont entourés de \[ \]
.
J'ai le même problème, j'ai trouvé si tu changes
Avancé> Émulation> Déclarez le terminal comme suit: ANSI.
Ceci résout le problème de couleur PS1. Avec un terminal Mac
MAIS crée un comportement étrange: J'ai trouvé une solution à mon problème avec @koiyu answer.
J'avais l'habitude d'avoir le même problème en raison de l'utilisation incorrecte des codes de couleur. Voici ma PS1 qui a résolu le problème. De plus, si vous utilisez GIT, cela sera également utile pour montrer la branche git sur laquelle vous travaillez et si votre arbre de travail est sale ou non. Mettez ceci dans votre .profile ou .bash_profile
# Git branch in Prompt.
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
parse_git_dirty() {
st=$(git status 2>/dev/null | tail -n 1)
if [[ $st == "" ]]; then
echo ''
Elif [[ $st == "nothing to commit (working directory clean)" ]]; then
echo ''
Elif [[ $st == 'nothing added to commit but untracked files present (use "git add" to track)' ]]; then
echo '?'
else
echo '*'
fi
}
# coloring the terminal comman line
SB_GREEN="\[\033[1;32m\]"
SB_BLUE="\[\033[1;34m\]"
SB_RED="\[\033[1;31m\]"
SB_NOCOLOR="\[\033[0m\]"
export PS1="$SB_GREEN\u@\h$SB_NOCOLOR: $SB_BLUE\w$SB_GREEN\$(parse_git_branch)$SB_RED\$(parse_git_dirty)$SB_NOCOLOR $ "
J'espère que cela t'aides.
Avec les conseils de hamstergene j'ai pu comprendre comment le faire jouer à Nice. En utilisant ce guide Geek Stuff et ce tutoriel It's Me Tommy , j’ai été en mesure de définir la manière dont je souhaitais afficher le texte PS1. Changer cela en quelque chose de beaucoup plus simplifié a éliminé le problème de chevauchement de texte étrange que je rencontrais.
Avant:
Après:
J'ai simplement édité mon .bash_profile
et ajouté la ligne suivante:
export PS1="[\u@\h] > ";
Ensuite, je suis allé et j'ai changé les couleurs de la fenêtre pour faire bonne mesure car je le peux.
Le problème initial était qu'il y avait une nouvelle ligne dans la PS1 (à titre d'information pour tous ceux qui se heurtent à cela)
En règle générale, ses codes de couleur échappés de manière incorrecte, mais si ce n'est pas que c'est que vous avez une nouvelle ligne dans votre ps1