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.

Daryl Spitzer
la source
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.

Juliano
la source
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.

Dan Green
la source
+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