Re: \[caractèr e non-imprimable\]

Page principale

Répondre à ce message
Auteur: Edgar Bonet
Date:  
À: guilde
Anciens-sujets: \[caractère non-imprimable\]
Nouveaux-sujets: RE: \[caractère non-imprimable\]
Sujet: Re: \[caractèr e non-imprimable\]
Le vendredi 26 avril, Ismael Touama a écrit :
> Voici ma variable PS1:
> PS1="\[\033[1;36m[\u@\h \W] #\033[0m "


C'est mal. Pour t'en convaincre, écris une ligne qui dépasse la largeur
de ton terminal et essaye de l'éditer ensuite.

Tu dois terminer par \] la séquence que tu commences par \[.

> j'aurais plus écrit ceci mais
> cela ne passe pas au prompt:
> PS1="\[\033[1;36m]\][\u@\h \W] #\[\033[0m]\] "

                   ^                       ^
Erreur : les caractères indiqués ci-dessus (si tu as une police à chasse
fixe) sont des caractères imprimables. Ils n'ont rien à faire à
l'intérieur de la séquence entre \[ et \].


> 1. pour les couleurs je les ai encadrées ([])


Il ne faut pas. La séquence ANSI est "<Esc>[1;36m". Il n'y a pas de
crochet fermant. La liste des numéros doit être encadrée par "<Esc>[" au
début et par "m" à la fin.

> 2. j'ai encadré ces même couleurs de \[ et \]


Bien.

> \[[numCol]\]


Mal. C'est "\[ <Esc>[ numCol m \]" sans les espaces que j'ai ajoutés
pour clarifier. Dans le détail :

    \[      début de séquence non imprimable
    <Esc>[  début de la séquence ANSI de définition des couleurs
    1;36    codes pour gras (1) et texte en cyan (36)
    m       fin de séquence ANSI
    \]      fin de séquence non imprimable.


La séquence ANSI est destinée à ton terminal. Les \[ et \] sont destinés
à bash pour qu'il sache où est le curseur.

Le prompt que tu voulais est probablement

PS1="\[\e[1;36m\][\u@\h \W]#\[\e[0m\] "

-- 
Edgar Bonet                         Tel:    +33 476 881 096
Laboratoire Louis Néel -- CNRS      Mobile: +33 677 197 939
25 av. des Martyrs, BP 166          Fax:    +33 476 881 191
38042 Grenoble cedex 9, France      e-mail: bonet@???