ฉันมักจะต้องแก้ไขไฟล์ XML ต่าง ๆ ด้วย vim ซึ่งมีขนาดแตกต่างกันมาก - จากไฟล์การกำหนดค่าที่มีบรรทัด hunded สองสามบรรทัดไปยังไฟล์ข้อมูลการผลิตที่มีขนาดสูงสุด 2GB แน่นอนว่าการเปิดใช้งานการเน้นไวยากรณ์เป็นความคิดที่แย่มากเมื่อจัดการกับไฟล์ขนาดใหญ่ดังนั้นฉันจึงต้องการปิดใช้งานหากไฟล์มีขนาดใหญ่กว่าเกณฑ์
ฉันไม่สามารถใช้งานautocommand
ได้โดยตรงเพื่อปิดใช้งานการเน้นไวยากรณ์เนื่องจากคำสั่งถูกเรียกใช้ก่อนที่จะเปิดใช้งานไวยากรณ์เมื่อเริ่มต้น vim จากเชลล์:
" this autocmd has no effect except for the echo:
autocmd Filetype xml if getfsize(@%) > 1000000 | echom '!' | syntax off | endif
ฉันพบวิธีแก้ปัญหาในการที่ฉันสามารถปิดใช้งานการเน้นไวยากรณ์ทั่วโลกจากนั้นเปิดอีกครั้งสำหรับไฟล์ประเภทอื่นทั้งหมดกว่า xml และเปิดใช้งานสำหรับ filetype xml หากไฟล์ไม่ใหญ่กว่าเกณฑ์:
syntax off
autocmd Filetype * syntax off
autocmd Filetype * if &ft != 'xml' | syntax enable | endif
autocmd Filetype xml if getfsize(@%) < 1000000 | syntax enable | endif
ดูเหมือนว่าจะใช้งานได้ แต่รู้สึกผิดและจะไม่สามารถจัดการได้เมื่อฉันต้องการทำสิ่งนี้สำหรับประเภทไฟล์และเงื่อนไขเพิ่มเติม นอกจากนี้ยังมีผลต่อบัฟเฟอร์ทั้งหมด วิธีที่เหมาะสมในการปิดใช้งานการเน้นไวยากรณ์ในบัฟเฟอร์หนึ่งภายใต้เงื่อนไขที่เฉพาะเจาะจงคืออะไร?