15 votes

Comment afficher l'italique dans vim dans iTerm2

Le bien-aimé Solarisé semble appliquer une police de caractères italique pour les commentaires, mais lorsque je l'utilise dans vim dans l'iTerm2, ce n'est pas le cas.

Ainsi, tout, y compris les commentaires, est affiché en caractères romains (normaux). Même si je sélectionne la police Menlo, qui a une face italique que je peux voir dans la fenêtre des préférences de l'iTerm2, les commentaires sont rendus en romain.

Si l'on ajoute à cela le fait que les commentaires sont en gris clair et le texte normal en blanc (pas très lumineux), les commentaires deviennent assez difficiles à distinguer du texte normal.

Pour moi, il s'agit d'un défaut dans le schéma de couleurs qui est par ailleurs excellent. J'ai fait quelques recherches mais les conseils sont vieux et ne résolvent pas le problème. J'utilise OS X 10.6 Sierra sur un Macbook Air.

36voto

PeterVP Points 1030

Vous devez mettre à jour votre TERMINFO fichier.

Merci à vidéo de wincent et son pages github
Regardez la vidéo et consultez ses pages Github, elles sont excellentes.

J'ai la note suivante stockée sur mon disque dur :

Nous pouvons avoir italiques dans le terminal.

Cela fonctionne aussi bien dans iTerm que dans Terminal.

Nous devons adapter la base de données terminfo pour lui dire d'afficher l'italique.

Créez un fichier texte brut qui contient les éléments suivants :

xterm-256color|xterm with 256 colors and italic,
  sitm=\E[3m, ritm=\E[23m,
  use=xterm-256color,

Enregistrez-le sous xterm-256color.terminfo.txt

Ensuite, exécutez la commande suivante :

tic -o ~/.terminfo xterm-256color.terminfo.txt

Cela créera un ~/.terminfo/some_arbitrary_number/ et à l'intérieur de ce répertoire se trouve un xterm-256color fichier.

Ce qu'il fait selon la page de manuel :

       The command tic translates a terminfo file from source format into com-
       piled  format.   The  compiled  format  is  necessary  for use with the
       library routines in ncurses(3X).

       The results are  normally  placed  in  the  system  terminfo  directory
       /usr/share/terminfo.  There are two ways to change this behavior.

       First, you may override the system default by setting the variable TER-
       MINFO in your shell environment to a valid (existing) directory name.

       Secondly, if tic cannot get access to /usr/share/terminfo or your  TER-
       MINFO  directory,  it  looks for the directory $HOME/.terminfo; if that
       directory exists, the entry is placed there.

       Libraries that read terminfo entries are expected to check for  a  TER-
       MINFO  directory first, look at $HOME/.terminfo if TERMINFO is not set,
       and finally look in /usr/share/terminfo.

       -o dir   Write  compiled  entries to given directory.  Overrides the TER-
                MINFO environment variable.

Ainsi, avec la commande donnée, nous écrivons une nouvelle entrée terminfo dans le répertoire caché de l'utilisateur. ~/.terminfo répertoire. Il prend les capacités de l'entrée xterm-256color existante (de /usr/share/terminfo/ ) et lui ajoute le mode italique.

Pour vérifier que le terminal fait bien ce qu'il faut :

  • avec du poisson :

    echo (tput sitm)'italics' (tput ritm) (tput smso)'standout'(tput rmso)
  • avec bash ou zsh :

    echo `tput sitm`italics`tput ritm` `tput smso`standout`tput rmso`

Je suppose qu'à l'heure actuelle, la plupart des schémas de couleurs des terminaux vim ne définissent pas l'italique comme style. Pour vérifier cela, faites :
:hi Comment si la réponse contient cterm=italic vous avez terminé. Sinon, ajoutez highlight Comment cterm=italic à votre vimrc ( en dessous de pour définir votre schéma de couleurs).

Addendum pour tmux

tmux utilise ses propres fichiers terminfo, ils doivent aussi être mis à jour pour utiliser l'italique.

  1. créer un tmux.terminfo.txt qui contient

tmux|tmux terminal multiplexer, sitm=\E[3m, ritm=\E[23m, smso=\E[7m, rmso=\E[27m, use=screen,

  1. créer un tmux-256color.terminfo.txt qui contient

tmux-256color|tmux with 256 colors, sitm=\E[3m, ritm=\E[23m, smso=\E[7m, rmso=\E[27m, use=screen-256color,

et lancez la commande tic.

tic -o ~/.terminfo tmux-256color.terminfo.txt
et
tic -o ~/.terminfo tmux.terminfo.txt

2 votes

Ouah ! Après avoir fait cela, avec le test que vous avez donné, "italic" et "standout" fonctionnent tous les deux, mais ouvrir un cpp dans vim ne rend pas les commentaires italiques. Est-ce que c'est le problème de Solarized ?

2 votes

J'ai remarqué que l'interface graphique de MacVim (c'est-à-dire la fenêtre séparée qui demande) peut afficher des polices italiques, mais si elle est ouverte dans le terminal (avec la commande mvim -v ), il ne le peut pas. Est-ce normal ?

2 votes

Si vous le faites dans vim : :hi Comment est-il indiqué cterm=italic ? Si ce n'est pas le cas, Solarized ne définit pas ce paramètre. Vous pouvez le faire dans votre vimrc avec highlight Comment cterm=italic

0voto

mefryar Points 1

En plus de mettre à jour mon TERMINFO j'ai dû faire deux autres changements.

  1. Modifier .vim/colors/solarized.vim comme recommandé dans Solarisé #120 de remplacer les lignes 137-157 par le texte suivant :

     if has("gui_running") || ( has("unix") && system("tput sitm") == "\033[3m" )
         let s:terminal_italic=1
     else
         let s:terminal_italic=0
     endif
  2. Modifier .vimrc pour ajouter les lignes suivantes en utilisant <Ctrl-v><Esc> pour entrer dans le ^[ des personnages.

     " Enable italics
     set t_ZH=^[[3m
     set t_ZR=^[[23m

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