मुझे अक्सर विभिन्न XML फ़ाइलों को विम के साथ संपादित करना पड़ता है, जो आकार में बेतहाशा भिन्न होता है - कॉन्फ़िगरेशन फ़ाइलों से कुछ हंड्रेड लाइनों से लेकर डेटा फ़ाइलों का उत्पादन 2GB तक के आकार के साथ। सिंटैक्स हाइलाइटिंग सक्षम होना निश्चित रूप से एक बहुत बुरा विचार है जब विशाल फ़ाइलों के साथ काम किया जाता है, इस प्रकार मैं इसे अक्षम करना चाहता हूं यदि फ़ाइल थ्रेशोल्ड से बड़ी है।
मैं autocommand
सिंटैक्स हाइलाइटिंग को अक्षम करने के लिए सीधे काम करने के लिए इसे प्राप्त नहीं कर सका , क्योंकि जाहिरा तौर पर कमांड को निष्पादित किया जाता है जब शेल से विम शुरू करने से पहले सिंटैक्स को सक्षम किया जाता है:
" this autocmd has no effect except for the echo:
autocmd Filetype xml if getfsize(@%) > 1000000 | echom '!' | syntax off | endif
मुझे इसमें एक वर्कअराउंड मिला कि मैं सिंटैक्स हाइलाइटिंग को विश्व स्तर पर अक्षम कर सकता हूं, फिर इसे xml की तुलना में अन्य सभी फ़िलाटाइप्स के लिए फिर से चालू कर दूं, और फ़ाइल फ़ाइल थ्रेश से बड़ा नहीं होने पर इसे फ़िल्टाइप xml के लिए चालू करें:
syntax off
autocmd Filetype * syntax off
autocmd Filetype * if &ft != 'xml' | syntax enable | endif
autocmd Filetype xml if getfsize(@%) < 1000000 | syntax enable | endif
यह काम करने लगता है, लेकिन गलत लगता है और एक बार मैं असहनीय हो जाएगा, क्योंकि मैं इसे और अधिक filetypes और स्थितियों के लिए करना चाहता हूं। इसके अलावा, यह सभी बफ़र्स को प्रभावित करता है। विशिष्ट परिस्थितियों में एक बफ़र में सिंटैक्स हाइलाइटिंग को अक्षम करने का उचित तरीका क्या है?