คำสั่ง autocommand จะถูกดำเนินการเมื่อมีเหตุการณ์หนึ่งเกิดขึ้น คุณต้องการให้คำสั่งถูกเรียกใช้งานหลังจากมีลำดับเหตุการณ์เกิดขึ้น วิธีหนึ่งในการทำเช่นนี้:
autocmd FileType c,cpp,python
\ autocmd BufWritePre <buffer> call StripTrailingWhiteSpaces()
<buffer>
รูปแบบที่ทำให้เกิด autocommand ที่จะถูกเรียกเมื่อบัฟเฟอร์ปัจจุบันเป็นลายลักษณ์อักษร ดู
:help autocmd-buflocal
ปรับปรุง
วิธีการแก้ปัญหาข้างต้นค่อนข้างง่ายและมีข้อบกพร่องบางอย่างที่กล่าวถึงในความคิดเห็น นี่คือวิธีแก้ปัญหาที่สมบูรณ์มากขึ้นที่ระบุข้อบกพร่องบางอย่าง มันทำให้ข้อความอัตโนมัติในกลุ่มและลบ Autocommand BufWritePre ถ้ามีอยู่ก่อนที่จะสร้างใหม่ มันยังคงสร้างคำสั่งอัตโนมัติหนึ่งรายการต่อบัฟเฟอร์ แต่มีเพียงรายการเดียวเท่านั้น
augroup TrailSpace
autocmd FileType c,cpp,python
\ autocmd! TrailSpace BufWritePost <buffer> call SkipTrailingWhiteSpaces()
augroup END
โซลูชันอื่นซึ่งคล้ายกับคำตอบที่โพสต์โดย lcd047 ที่ถูกลบไปแล้วในตอนนี้คือการรับรู้ว่าเมื่อเกิดเหตุการณ์ FileType ตัวเลือก 'filetype' จะถูกตั้งค่า จากนั้นคุณสามารถกำหนดเงื่อนไขการตอบสนองต่อเหตุการณ์ BufWritePost ตามค่าของ 'filetype' ดังตัวอย่างต่อไปนี้ มันมีข้อได้เปรียบเหนือโซลูชันอื่น ๆ ที่มีเพียงรายการสร้างอัตโนมัติเท่านั้น
autocmd BufWritePre * if count(['c','cpp','python'],&filetype)
\ | call SkipTrailingWhiteSpaces()
\ | endif