Często muszę edytować różne pliki XML za pomocą vima, które różnią się ogromnie rozmiarem - od plików konfiguracyjnych zawierających kilka setek linii po pliki danych produkcyjnych o rozmiarach do 2 GB. Włączanie podświetlania składni jest oczywiście bardzo złym pomysłem w przypadku dużych plików, dlatego chcę je wyłączyć, jeśli plik jest większy niż próg.
Nie mogłem tego uruchomić, używając autocommand
bezpośrednio do wyłączania podświetlania składni, ponieważ najwyraźniej polecenie jest wykonywane przed włączeniem składni podczas uruchamiania vima z powłoki:
" this autocmd has no effect except for the echo:
autocmd Filetype xml if getfsize(@%) > 1000000 | echom '!' | syntax off | endif
Znalazłem obejście polegające na tym, że mogę wyłączyć globalne podświetlanie składni, a następnie włączyć je ponownie dla wszystkich typów plików innych niż xml i włączyć dla typu pliku xml, jeśli plik nie jest większy niż próg:
syntax off
autocmd Filetype * syntax off
autocmd Filetype * if &ft != 'xml' | syntax enable | endif
autocmd Filetype xml if getfsize(@%) < 1000000 | syntax enable | endif
Wydaje się, że to działa, ale wydaje się złe i stanie się niemożliwe do zarządzania, gdy chcę to zrobić dla większej liczby typów plików i warunków. Ponadto wpływa na wszystkie bufory. Jaki jest właściwy sposób wyłączenia podświetlania składni w jednym buforze w określonych warunkach?