Tôi thường phải chỉnh sửa các tệp XML khác nhau bằng vim, có kích thước khác nhau - từ các tệp cấu hình có chứa một vài dòng cho đến các tệp dữ liệu sản xuất với kích thước lên tới 2GB. Tất nhiên có bật tính năng tô sáng cú pháp là một ý tưởng rất tệ khi xử lý các tệp lớn, do đó tôi muốn tắt nó nếu tệp lớn hơn ngưỡng.
Tôi không thể làm việc này bằng cách sử dụng autocommand
trực tiếp để tắt tính năng tô sáng cú pháp, vì rõ ràng lệnh được thực thi trước khi cú pháp được bật khi bắt đầu vim từ trình bao:
" this autocmd has no effect except for the echo:
autocmd Filetype xml if getfsize(@%) > 1000000 | echom '!' | syntax off | endif
Tôi đã tìm thấy một cách giải quyết khác là tôi có thể vô hiệu hóa cú pháp tô sáng trên toàn cầu, sau đó bật lại cho tất cả các kiểu tệp khác ngoài xml và bật nó cho filetype xml nếu tệp không lớn hơn ngưỡng:
syntax off
autocmd Filetype * syntax off
autocmd Filetype * if &ft != 'xml' | syntax enable | endif
autocmd Filetype xml if getfsize(@%) < 1000000 | syntax enable | endif
Điều này có vẻ hiệu quả, nhưng cảm thấy sai và sẽ trở nên không thể quản lý được một khi tôi muốn làm điều này cho nhiều kiểu và điều kiện hơn. Hơn nữa, nó ảnh hưởng đến tất cả các bộ đệm. Cách thích hợp để tắt tính năng tô sáng cú pháp trong một bộ đệm trong các điều kiện cụ thể là gì?