6 votes

Bash Ctrl-A Returns to Start of Line but Doesn't Display Properly Bash Ctrl-A Retourne au début de la ligne mais ne s'affiche pas correctement

Lorsque je me connecte en ssh à un serveur Linux à partir du terminal bash, je peux utiliser CTRL+A pour revenir au début de la ligne correctement, et CTRL+E pour aller à la fin de la ligne et tout fonctionne correctement.

Lorsque j'utilise bash localement sur mon Mac, lorsque j'utilise CTRL+A il retourne logiquement au début de la ligne, mais n'affiche pas le curseur au bon endroit. Il affiche le curseur décalé de 7 caractères environ et ne met pas à jour correctement le texte de la ligne.

Exemple

find . -name "hello.cpp"

CTRL+A!

find . -name "hello.cpp"
       ^~~ curseur affiché ici ????

Insérer "c'est un test" (juste pour montrer)

Affiche :

find . c'est un test -name "hello.cpp"
                      ^~~ le curseur est toujours là ???
       ^~~~~~~~~~~~~^ texte inséré ici ???
^~~~~~^ inchangé pour une raison quelconque

Commande exécutée

c'est un test find . -name "hello.cpp"

J'utilise le même

PS1=\n \e[1;95m \u@\h \e[0;32m\w \e[1;30m $(__git_ps1 " (%s)" ) \n \e[1;95m \@ \n $ \e[0;30m

que sur Linux.

Informations sur la version

  • version de bash : 3.2.57(1)
  • version du terminal : 2.6.1 (361.1)
  • OS X El Capitan, 10.11.5

7voto

Bennett McElwee Points 416

Ajoutez \[ et \] autour des codes de couleur pour permettre à bash de calculer correctement la longueur de la ligne. Quelque chose comme ceci:

PS1=\n \[\e[1;95m\] \u@\h \[\e[0;32m\]\w \[\e[1;30m\] $(__git_ps1 " (%s)" ) \n \[\e[1;95m\] \@ \n $ \[\e[0;30m\]

(Cette réponse est tirée du commentaire de @Mark sur la question.)

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X