¿Cómo puedo hacer que los comandos de resaltado en .vimrc surtan efecto inmediatamente con Vim 7.4?

9

Tengo varios highlightcomandos en mi .vimrcarchivo. En Vim 7.3, estos entraron en vigencia inmediatamente después de que Vim había comenzado. Después de actualizar a Vim 7.4, este ya no es el caso. Vim utiliza su resaltado predeterminado inicialmente. Cuando cargo .vimrcpor segunda vez ejecutando source ~/.vimrc, resaltar funciona como quiero.

Debería poder reproducir este problema utilizando los siguientes pasos:

  1. Haga una copia de su .vimrcarchivo.

  2. Reemplace ~/.vimrccon un archivo que contenga solo la línea highlight Type ctermfg=28 cterm=bold.

  3. Ejecutar vim dummy.cen un terminal de 256 colores (por ejemplo, Terminal GNOME).

  4. Escribe inten el búfer. El intdebe aparecer en letra normal y ser de color verde claro, que no es lo que quiero.

  5. Introduzca :source ~/.vimrc. Ahora intdebería aparecer en negrita y ser de color verde oscuro.

De acuerdo con el artículo Cómo controlar / configurar los colores vim , debería estar bien simplemente poner los highlightcomandos .vimrc. El artículo dice que debe colocar syntax enabledespués de los highlightcomandos, pero esto no hizo ninguna diferencia.

Mi primera solución fue anteponer cada highlightcomando .vimrccon autocmd VimEnter *. Esto funcionó para algunos tipos de archivos, pero no para otros (los archivos C son un ejemplo).

¿Cuál es la razón de este comportamiento? ¿Cómo puedo highlightejecutar los comandos cuando se inicia Vim para que surtan efecto en todos los buffers durante toda la sesión de Vim?

Wolfgang Jeltsch
fuente
suena como el problema 542
Christian Brabandt
Sí, al agregar set compatibleal principio de .vimrc, el resaltado de sintaxis funciona como se esperaba. Así que esto realmente parece ser este error en acción.
Wolfgang Jeltsch
He precedido los highlightcomandos con autocmd ColorScheme *, que se propuso como solución alternativa en el informe de error. Que todavía no funciona. ☹
Wolfgang Jeltsch
Ahora estoy escribiendo mi propio esquema de color, que aparentemente también funciona alrededor de este error.
Wolfgang Jeltsch
Christian, ¿puedes escribir tu comentario como respuesta? Después de todo, esta es la respuesta correcta a mi problema. ¿O hay algún otro enfoque para tratar las preguntas que realmente revelan errores?
Wolfgang Jeltsch

Respuestas:

5

Esta no es una respuesta definitiva y su problema suena como el problema 542 . Aparentemente, puede solucionarlo escribiendo su propio esquema de colores básico, en lugar de escribir esas hi ...declaraciones directamente en su .vimrc.

Christian Brabandt
fuente
Creo que es por este problema de Vim; entonces su respuesta realmente parece ser la respuesta correcta a mi problema.
Wolfgang Jeltsch
3

En realidad, no debería poner sus aspectos destacados personalizados en su vimrc sino en archivos de sintaxis de aduanas.

Estos archivos deben ubicarse en ~/.vim/after/syntax/filetype.vimdonde filetypeestá el tipo de archivo esperado. Si está satisfecho con un archivo de sintaxis pero desea agregar algunos comandos, puede seguir estos pasos (tomados de :h mysyntaxfile-add):

  1. Cree un directorio allí llamado "after / syntax". Para Unix:

    mkdir ~/.vim/after
    mkdir ~/.vim/after/syntax
    
  2. Escriba un script de Vim que contenga los comandos que desea usar. Por ejemplo, para cambiar los colores para la sintaxis de C:

    highlight cComment ctermfg=Green guifg=Green
    
  3. Escriba ese archivo en el directorio "after / syntax". Use el nombre de la sintaxis, con ".vim" agregado. Para nuestra sintaxis C:

    :w ~/.vim/after/syntax/c.vim
    

Eso es. La próxima vez que edite un archivo C, el color del Comentario será diferente. Ni siquiera tiene que reiniciar Vim.

:h mysyntaxfilees un buen lugar para obtener información sobre cómo corregir sus propios archivos de sintaxis. Aprenda también Vimscript The Hard Way en varios capítulos sobre este tema.

statox
fuente
2
¿Qué pasa si quiero cambiar el resaltado para todos los tipos de archivos? Por ejemplo, quiero que el color de los comentarios sea azul oscuro, sin importar el tipo de archivo.
Wolfgang Jeltsch
Probé más o menos el enfoque que sugeriste. Agregué un archivo .vimrc/highlighting.vim, creé un directorio .vimrc/syntax/aftery agregué varios enlaces simbólicos del formulario * tipo de archivo * .vimque apuntan .vimrc/highlighting.vima este directorio. El resaltado de sintaxis aún no funciona.
Wolfgang Jeltsch
Sí @WolfgangJeltsch como mi puesto y el médico dice que el directorio debe ser ~/.vim/after/syntaxno~/.vimrc
statox
Eso es correcto. Sin embargo, esto fue solo un error tipográfico en mi comentario. En realidad, trabajé en el directorio .vimy el resaltado de sintaxis no funcionó, probablemente debido a este error 542.
Wolfgang Jeltsch
no! no funciona.
Yar
1

Por lo que vale, tuve este problema con MacVim (8.1.950 (155)). Colocar la declaración destacada después colorschemede .vimrc lo arregló para mí. P.ej:

highlight SpellCap guisp=Yellow
...
colorscheme evening

->

colorscheme evening
...
highlight SpellCap guisp=Yellow

Halil Özgür
fuente