Esto podría ser un problema con el sistema de vim para reconocer y luego resaltar las "palabras clave" sintácticas que no obtienen suficiente contexto para reconocer las palabras clave.
Los conceptos básicos del sistema de sintaxis de vim (encontrar y etiquetar elementos de sintaxis básicos) se explican en :h usr_44
Básicamente, vim usa expresiones regulares para reconocer elementos sintácticos en un archivo, una vez que se identifican, luego se aplican reglas de resaltado para colorear esas construcciones de código (es decir, para hacer "resaltado de sintaxis"), pero como se explica en :h 44.10
vim no comienza a analizar desde el al comienzo del archivo, comienza un número de líneas (por ejemplo, 10 o 100 líneas) hacia arriba desde la parte superior de su ventana gráfica actual.
Si una construcción sintáctica, por ejemplo, una etiqueta HTML de apertura o una definición de función, etc., comienza más alto que el punto en que vim comienza a analizar, la sintaxis de vims se rompe.
Por lo general, para solucionar esto, aumenta el punto en que vim comienza a analizar.
Para saber cuántas líneas sobre la línea superior de la ventana gráfica de visualización está comenzando su uso de análisis:
:syntax sync
Aquí está mi salida al ver un archivo HTML:
:syntax sync
--- Syntax sync items ---
syncing on items; minimal 10, maximal 100 lines before top line
[lots of other output here...]
si tuviera un problema con la sincronización, solo para ese archivo, aumentaría las minlines con
:syntax sync minlines=200
Si en repetidas ocasiones se soluciona este problema, es un poco más difícil. Esto se debe a que el valor de sincronización a menudo se establece en un archivo de sintaxis dedicado al tipo de archivo que está editando, por ejemplo, para mí, los syntax sync minlines
tipos de archivo html se configuran en el archivo de sintaxis
/usr/share/vim/vim74/syntax/html.vim
el análisis sintáctico y los valores de configuración para archivos CSS están en
/usr/share/vim/vim74/syntax/css.vim
Shell está adentro sh.vim
y así sucesivamente.
Estas secuencias de comandos de sintaxis sólo se ejecutan en el momento de abrir un archivo del tipo foo.css
, bar.html
, baz.sh
etc, por lo que establecer una línea en su vimrc no funcionará porque estas secuencias de comandos serían soplar sus ajustes de distancia, una solución es utilizar un autocmd que desencadena cuando se ingrese el archivo
autocmd BufEnter *.html :syntax sync minlines=200