Cela pourrait être un problème avec le système de vim pour reconnaître puis mettre en évidence les "mots-clés" syntaxiques ne recevant pas suffisamment de contexte pour reconnaître les mots-clés.
Les concepts de base du système de syntaxe de vim (recherche et balisage des éléments de syntaxe de base) sont expliqués dans :h usr_44
Fondamentalement, vim utilise l'expression régulière pour reconnaître les éléments syntaxiques dans un fichier, une fois ceux-ci identifiés, puis des règles de mise en surbrillance sont appliquées pour coloriser ces constructions de code (c'est-à-dire pour faire une "mise en évidence de la syntaxe"), mais comme expliqué dans :h 44.10
vim ne commence pas l'analyse à partir de la au début du fichier, il démarre un certain nombre de lignes (par exemple 10 ou 100 lignes) vers le haut à partir du haut de votre fenêtre actuelle.
Si une construction syntaxique, par exemple une balise HTML d'ouverture ou une définition de fonction, etc. démarre plus haut que le point où vim commence l'analyse, la syntaxe reims de vims se casse.
Habituellement, pour résoudre ce problème, vous augmentez le moment où vim commence l'analyse.
Pour savoir combien de lignes au-dessus de la ligne supérieure de la fenêtre de visualisation commencent son utilisation d'analyse:
:syntax sync
Voici ma sortie lors de la visualisation d'un fichier HTML:
:syntax sync
--- Syntax sync items ---
syncing on items; minimal 10, maximal 100 lines before top line
[lots of other output here...]
si j'avais un problème avec la synchronisation - juste pour ce fichier - j'augmenterais les minlines avec
:syntax sync minlines=200
Si vous rencontrez ce problème à plusieurs reprises, il est un peu plus difficile. En effet, la valeur de synchronisation est souvent définie dans un fichier de syntaxe dédié au type de fichier que vous modifiez, par exemple pour moi syntax sync minlines
pour les types de fichiers html est défini dans le fichier de syntaxe
/usr/share/vim/vim74/syntax/html.vim
l'analyse syntaxique et les valeurs de configuration pour les fichiers css sont dans
/usr/share/vim/vim74/syntax/css.vim
shell est dedans sh.vim
et ainsi de suite.
Ces scripts de syntaxe fonctionnent uniquement au moment où vous ouvrez un fichier du type foo.css
, bar.html
, baz.sh
etc, donc définir une ligne dans votre vimrc ne fonctionnera pas parce que ces scripts soufflaient vos paramètres de distance, une solution consiste à utiliser un autocmd qui se déclenche lorsque vous entrer dans le fichier
autocmd BufEnter *.html :syntax sync minlines=200