A menudo tengo que editar varios archivos XML con vim, que varían enormemente de tamaño, desde archivos de configuración que contienen algunas líneas ocultas hasta archivos de datos de producción con tamaños de hasta 2 GB. Tener el resaltado de sintaxis habilitado es, por supuesto, una muy mala idea cuando se trata de archivos grandes, por lo que quiero desactivarlo si el archivo es más grande que un umbral.
No pude hacer que esto funcione autocommand
directamente para deshabilitar el resaltado de sintaxis, ya que aparentemente el comando se ejecuta antes de habilitar la sintaxis al iniciar vim desde el shell:
" this autocmd has no effect except for the echo:
autocmd Filetype xml if getfsize(@%) > 1000000 | echom '!' | syntax off | endif
Encontré una solución alternativa en la que puedo deshabilitar el resaltado de sintaxis a nivel mundial, luego volver a activarlo para todos los otros tipos de archivo que no sean xml, y activarlo para el tipo de archivo xml si el archivo no es mayor que el umbral:
syntax off
autocmd Filetype * syntax off
autocmd Filetype * if &ft != 'xml' | syntax enable | endif
autocmd Filetype xml if getfsize(@%) < 1000000 | syntax enable | endif
Esto parece funcionar, pero se siente mal y se volverá inmanejable una vez que quiera hacer esto para obtener más tipos de archivos y condiciones. Además, influye en todos los tampones. ¿Cuál es la forma correcta de deshabilitar el resaltado de sintaxis en un búfer en condiciones específicas?