Spesso devo modificare vari file XML con vim, che variano di dimensioni selvagge - dai file di configurazione contenenti alcune righe allineate ai file di dati di produzione con dimensioni fino a 2 GB. Avere l'evidenziazione della sintassi abilitata è ovviamente una pessima idea quando si tratta di file di grandi dimensioni, quindi voglio disabilitarlo se il file è più grande di una soglia.
Non sono riuscito a farlo funzionare usando autocommand
direttamente per disabilitare l'evidenziazione della sintassi, poiché apparentemente il comando viene eseguito prima che la sintassi sia abilitata quando si avvia vim dalla shell:
" this autocmd has no effect except for the echo:
autocmd Filetype xml if getfsize(@%) > 1000000 | echom '!' | syntax off | endif
Ho trovato una soluzione in quanto posso disabilitare l'evidenziazione della sintassi a livello globale, quindi riaccenderlo per tutti gli altri tipi di file diversi da xml e attivarlo per il tipo di file xml se il file non è più grande della soglia:
syntax off
autocmd Filetype * syntax off
autocmd Filetype * if &ft != 'xml' | syntax enable | endif
autocmd Filetype xml if getfsize(@%) < 1000000 | syntax enable | endif
Questo sembra funzionare, ma sembra sbagliato e diventerà ingestibile quando voglio farlo per più tipi di file e condizioni. Inoltre, influenza tutti i buffer. Qual è il modo corretto di disabilitare l'evidenziazione della sintassi in un buffer in condizioni specifiche?