Saya sering harus mengedit berbagai file XML dengan vim, yang ukurannya sangat bervariasi - dari file konfigurasi yang berisi beberapa baris hunded hingga file data produksi dengan ukuran hingga 2GB. Memiliki penyorotan sintaks yang diaktifkan tentu saja merupakan ide yang sangat buruk ketika berhadapan dengan file besar, jadi saya ingin menonaktifkannya jika file lebih besar dari ambang.
Saya tidak bisa menggunakan ini autocommand
secara langsung untuk menonaktifkan penyorotan sintaks, karena tampaknya perintah dijalankan sebelum sintaks diaktifkan ketika memulai vim dari shell:
" this autocmd has no effect except for the echo:
autocmd Filetype xml if getfsize(@%) > 1000000 | echom '!' | syntax off | endif
Saya menemukan solusi di mana saya dapat menonaktifkan penyorotan sintaksis secara global, kemudian nyalakan lagi untuk semua tipe file selain xml, dan nyalakan untuk filetype xml jika file tidak lebih besar dari ambang:
syntax off
autocmd Filetype * syntax off
autocmd Filetype * if &ft != 'xml' | syntax enable | endif
autocmd Filetype xml if getfsize(@%) < 1000000 | syntax enable | endif
Ini tampaknya berhasil, tetapi terasa salah dan akan menjadi tidak dapat dikelola setelah saya ingin melakukan ini untuk lebih banyak jenis dan kondisi. Selain itu, ini mempengaruhi semua buffer. Apa cara yang tepat untuk menonaktifkan penyorotan sintaksis dalam satu buffer dalam kondisi tertentu?