web-dev-qa-db-fra.com

Puis-je avoir des italiques dans gnome-terminal?

Après de nombreuses recherches, je ne trouve pas le moyen de faire afficher par gnome-terminal les polices italiques. J'utilise la version 3.6.2.

Plus précisément, j'aimerais que vim affiche les commentaires en italique; J'ai ajouté

highlight Comment cterm=italic

à mon .vimrc mais ça ne marche pas.

Est-ce que quelqu'un sait si cela peut être fait?

13
Chronos

Le terminal Gnome prend en charge l’italique (au moins dans la version 3.8.4). Vous pouvez tester la prise en charge des terminaux en italique en exécutant $ echo -e "\e[3mfoo\e[23m". Si vous voyez foo en italique, foo , le terminal le prend en charge.

Ensuite, vous devez insérer ce qui suit dans .vimrc:

set t_ZH=^[[3m
set t_ZR=^[[23m

Notez que ^[ est un caractère unique et peut être inséré en mode insertion vim en tapant <ctrl>-v <esc>.

Après cela, vous devez dire à vim de mettre en italique les commentaires. Vous pouvez rapidement vérifier si cela fonctionne en exécutant :highlight Comment cterm=italic dans vim lorsque le fichier avec certains commentaires est ouvert. Les commentaires doivent être en italique immédiatement.

J'ai trouvé les instructions ci-dessus sur reddit ( Italique dans les terminaux vim et tmux ), mais je n'ai pas eu à suivre toutes les étapes indiquées ici. Ma réponse est la version distillée des instructions qui a fonctionné pour moi.

14
Kranjski Janez

Non, j'ai lu man 5 terminfo pour savoir comment s'appelaient les séquences ESCape du terminal (ce que vous envoyez au terminal pour provoquer le comportement) et traitant de l'italique:

man 5 terminfo | egrep 'italics|Cap-|Code'|head -n 10| tail -n 4
               Variable                   Cap-            TCap               Description  
                String                    name            Code  
       enter_italics_mode                 sitm            ZH             Enter italic mode  
       exit_italics_mode                  ritm            ZR             End italic mode  

Ensuite, j'ai utilisé infocmp pour vider chaque description de terminal afin de voir quels terminaux prenaient en italique:

for i in $( find /usr/share/terminfo -type f ) ; do 
    j=${i##*/}; hdr="$( infocmp $j | head -n 1)";  
    infocmp $j | egrep -q 'sitm|ZH' 
    if [ $? = 0 ] ; then echo $hdr; fi; 
done
# Reconstructed via infocmp from file: /usr/share/terminfo/r/rxvt-unicode-256color
# Reconstructed via infocmp from file: /usr/share/terminfo/o/opus3n1+
# Reconstructed via infocmp from file: /usr/share/terminfo/i/iris-color

Ainsi, ces trois types de terminaux (rxvt-unicode-256color, opus3n1 +, iris-color) prennent en charge l’italique. D'autres ne le font pas.

Étant donné que je ne trouvais pas de définition de terminal pour "gnome-terminal" (voir ls /usr/share/terminfo/g/, j'ai cherché l'italique en tout. Essayez infocmp $TERM pour voir quelles fonctionnalités votre terminal prend en charge. Lisez man tput pour voir comment émettre des séquences de contrôle.

3
waltinator