Cómo mostrar cursiva en vim en iTerm2

El amado esquema de color solarizado parece aplicar una letra en cursiva para los comentarios, pero cuando lo uso vimen iTerm2, no es así.

Por lo tanto, todo, incluidos los comentarios, se muestra en formato romano (normal). Incluso si selecciono la fuente Menlo, que tiene una letra en cursiva que puedo ver en la ventana de preferencias de iTerm2, los comentarios se representan como romanos.

Junto con el hecho de que los comentarios están en gris claro y el texto normal en blanco (no muy brillante), los comentarios se vuelven bastante difíciles de distinguir del texto normal.

Para mí, esto es una falla en el esquema de color, que de otro modo sería excelente. Investigué un poco, pero el consejo es antiguo y no resuelve el problema. Estoy usando OS X 10.6 Sierra en una MacBook Air.

Respuestas (2)

Tienes que actualizar tu TERMINFOarchivo.

Gracias al video de wincent y sus páginas de github
Mira el video y mira sus páginas de github, son excelentes.

Tengo la siguiente nota almacenada en mi HD:

Podemos tener cursiva en la terminal.

Esto funciona tanto en iTerm como en Terminal.

Tenemos que adaptar la base de datos terminfo para que muestre cursiva.

Cree un archivo de texto sin formato que contenga lo siguiente:

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

guardarlo comoxterm-256color.terminfo.txt

Luego ejecuta el siguiente comando:

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

Esto creará un ~/.terminfo/some_arbitrary_number/directorio, y dentro de ese directorio hay un xterm-256colorarchivo.

Lo que hace de acuerdo con la página de manual:

       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.

Entonces, con el comando dado, estamos escribiendo una nueva entrada terminfo en el ~/.terminfodirectorio oculto. Toma las capacidades de la entrada xterm-256color existente (de /usr/share/terminfo/) y le agrega el modo de cursiva.

Para comprobar que el terminal hace lo correcto:

  • con pescado:

    echo (tput sitm)'italics' (tput ritm) (tput smso)'standout'(tput rmso)
    
  • con bash o zsh:

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

Supongo que en este momento la mayoría de los esquemas de color de la terminal vim no establecen la cursiva como estilo. Para verificar esto, haga:
:hi Commentsi la respuesta contiene cterm=italicque ya está. Si no, agregue highlight Comment cterm=italica su vimrc (a continuación , configure su combinación de colores).

Anexo para tmux

tmux usa sus propios archivos terminfo, también deben actualizarse para usar cursiva.

  1. crear un tmux.terminfo.txtarchivo que contenga

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

  1. crear un tmux-256color.terminfo.txtarchivo que contenga

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

y ejecuta el comando tic.

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

¡Guau! Después de hacer esto, con la prueba que diste, "cursiva" y "sobresaliente" funcionan, pero abrir un cpp en vim no muestra los comentarios en cursiva. ¿Es este el problema de Solarized?
¡Vaya! Observé que la GUI de MacVim (es decir, la ventana separada que solicita) puede mostrar fuentes en cursiva, pero si se abre en la terminal (con mvim -v), no puede. ¿Es normal?
Si lo haces en vim: :hi Comment¿dice cterm=italic? Si no está solarizado, no establece esto. Puedes hacer esto en tu vimrc conhighlight Comment cterm=italic
¡¡¡¡FUNCIONA!!!! ¡¡¡MIS COMENTARIOS ESTÁN EN ITÁLICA AHORA!!! ¡Le diré al mundo las buenas noticias! (Siempre pensé que Solarized configuraba esto por defecto)
En mi máquina (Arch Linux), cterm=standout mostraba cursiva , y el comando anterior solo podía mostrar la palabra destacada pero en cursiva.
Y no había un directorio ~/.terminfo y, por lo tanto, no había archivos en él. ¿Qué es esa parte del directorio 78 ?
Acabo de probar en una máquina virtual Manjaro (basada en arch) echo `tput sitm`italics`tput ritm` `tput smso`standout`tput rmso`y dio el resultado esperado (cursiva y destacado) sin aplicar el parche. Este es un terminal xfce4. La parte del directorio 78 aparece en las 2 Mac que tengo disponibles, no estoy seguro de si esto es solo una cosa de Mac o unix más general. Si observa el video de Wincent, ~/.terminfohay un directorio donde se almacena la información termográfica parcheada. Presumiblemente al iniciar la terminal se lee este archivo, en lugar del que está en/usr/share/x/terminfo/xterm-256color
explicación mejorada del comando, con suerte eliminó cierta confusión sobre los directorios existentes o no.
Parece que no puedo hacer que esto funcione en una sesión de tmux.
para tmux también debe actualizar sus entradas terminfo. Consulte los archivos de wincent para conocer la configuración correcta.
no pude hacer que esto funcionara dentro de tmux en macos sin seguir también medium.com/@dubistkomisch/…

Además de actualizar mi TERMINFO, tuve que hacer otros dos cambios.

  1. Edite .vim/colors/solarized.vimcomo se recomienda en Solarized #120 para reemplazar las líneas 137-157 con lo siguiente:

     if has("gui_running") || ( has("unix") && system("tput sitm") == "\033[3m" )
         let s:terminal_italic=1
     else
         let s:terminal_italic=0
     endif
    
  2. Edite .vimrcpara agregar las siguientes líneas usando <Ctrl-v><Esc>para ingresar los ^[caracteres.

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