Je dois souvent éditer divers fichiers XML avec vim, dont la taille varie énormément - des fichiers de configuration contenant quelques lignes hunded aux fichiers de données de production avec des tailles allant jusqu'à 2 Go. L'activation de la coloration syntaxique est bien sûr une très mauvaise idée lorsque vous traitez des fichiers volumineux, donc je veux la désactiver si le fichier est plus grand qu'un seuil.
Je n'ai pas pu faire fonctionner cela en utilisant autocommand
directement pour désactiver la mise en évidence de la syntaxe, car apparemment, la commande est exécutée avant que la syntaxe ne soit activée lors du démarrage de vim à partir du shell:
" this autocmd has no effect except for the echo:
autocmd Filetype xml if getfsize(@%) > 1000000 | echom '!' | syntax off | endif
J'ai trouvé une solution de contournement en ce sens que je peux désactiver la mise en évidence de la syntaxe à l'échelle mondiale, puis la réactiver pour tous les autres types de fichiers que xml et l'activer pour le type de fichier xml si le fichier n'est pas plus grand que le seuil:
syntax off
autocmd Filetype * syntax off
autocmd Filetype * if &ft != 'xml' | syntax enable | endif
autocmd Filetype xml if getfsize(@%) < 1000000 | syntax enable | endif
Cela semble fonctionner, mais se sent mal et deviendra ingérable une fois que je veux le faire pour plus de types de fichiers et de conditions. De plus, il influence tous les tampons. Quelle est la bonne façon de désactiver la mise en évidence de la syntaxe dans un tampon dans des conditions spécifiques?