Correction des bogues d'affichage de retour à la ligne et de retour arrière sous Mac OS X?


14

Lorsque j'ouvre Terminal (sur Mac OS X 10.5.8) et que je tape une longue ligne de commande: texte alternatif

... le texte ne passe pas à la ligne suivante lorsqu'il s'enroule: texte alternatif texte alternatif

De plus, parfois lorsque je tape une commande, puis retour arrière (ou flèche vers le haut ou ^ U): texte alternatif

... toute la ligne n'est pas effacée et je ne peux pas revenir en arrière au-delà d'un certain point: texte alternatif texte alternatif

S'agit-il d'un bogue bash connu (sur Mac OS X)? Y a-t-il une solution?

Mise à jour: Juliano était correct, le problème était dû à une délimitation incorrecte d'une séquence de code de console dans ma variable PS1. En changeant:

export PS1='\[\033[1;34m\]\$\]\033[0m\] '

... dans mon .bashrcà:

export PS1='\[\033[1;34m\]\$\[\033[0m\] '

...résolu le problème.


1
+1 pour les plus belles captures d'écran d'un écran de terminal que j'ai jamais vues.
— pause jusqu'à nouvel ordre.

1
les deux lignes de code que vous avez montrées dans votre mise à jour sont identiques.
— Magne

Bonne prise, @Magne. Cela fait quatre ans que j'ai regardé cela, donc je ne me souviens pas spécifiquement, mais je suppose que "avant" manquait a \].
— Daryl Spitzer

ils ne sont pas identiques: le 1er a \]au lieu de '['
— Ohad Cohen

Réponses:


19

Le comportement consiste à avoir des codes de console dans votre invite (pour changer la couleur, etc.) et à ne pas les marquer correctement pour que bash sache qu'ils sont invisibles.

Avant toute chose, procédez comme suit:

PS1='\w\$ '

Et puis réessayez. Si le problème est résolu, mes soupçons sont corrects.

Chaque séquence de code de console doit être délimitée avec \[et \]dans la variable PS1. Ils disent à bash que tout ce qui s'y trouve ne déplace pas la position du curseur. Lisez le manuel bash pour plus d'informations.


C'était ça le problème. Je vous remercie! Je mettrai à jour ma question avec des détails.
— Daryl Spitzer

Et si cela ne résout pas le problème?
— levesque

3

Pour aider à générer une invite filtrée, essayez http://www.kirsle.net/wizards/ps1.html, c'est assez génial. Soyez juste prudent avec les crochets dans votre invite, il essaie de leur échapper ou quelque chose.


+1 Bien que la réponse de @ Juliano soit techniquement correcte, ce lien ici définit les tputcommandes correctes - ce qui a corrigé les sauts de ligne, les sauts de ligne et autres "historique + retour en arrière" que l'utilisation d'autres codes ANSI ne pouvait pas corriger.
— Eric Duncan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.