जब कोई ईवेंट आता है, तो एक स्वतः पूर्ण आदेश निष्पादित किया जाता है। आप चाहते हैं कि घटनाओं के अनुक्रम के बाद एक कमांड निष्पादित हो। ऐसा करने का एक तरीका इस प्रकार है:
autocmd FileType c,cpp,python
\ autocmd BufWritePre <buffer> call StripTrailingWhiteSpaces()
<buffer>
पैटर्न जब वर्तमान बफर लिखा है autocommand शुरू किया जा जा करने के लिए कारण बनता है। देख
:help autocmd-buflocal
अद्यतन करें
उपरोक्त समाधान बहुत सरल है और इसमें कुछ खामियां हैं जिनकी टिप्पणियों में चर्चा की गई थी। यहां एक अधिक संपूर्ण समाधान है जो उन कुछ दोषों को संबोधित करता है। यह ऑटोकॉमैंड्स को एक समूह में रखता है और BufWritePre ऑटोकॉमैंड को हटाता है, यदि कोई मौजूद है, तो नया बनाने से पहले। यह अभी भी प्रति बफर एक ऑटोकॉमैंड बनाता है, लेकिन केवल एक।
augroup TrailSpace
autocmd FileType c,cpp,python
\ autocmd! TrailSpace BufWritePost <buffer> call SkipTrailingWhiteSpaces()
augroup END
Lcd047 द्वारा पोस्ट किए गए उत्तर के समान एक और समाधान, जिसे अब हटा दिया गया है, यह पहचानने के लिए कि जब फ़ाइल टाइप घटना होती है, तो 'फ़िलाटाइप' विकल्प सेट होता है। फिर आप निम्न उदाहरण के रूप में, 'filetype' के मूल्य पर BufWritePost घटना के लिए प्रतिक्रिया कर सकते हैं। अन्य समाधानों के मुकाबले यह फायदा है कि केवल एक ऑटोकॉमैंड बनाया जाता है।
autocmd BufWritePre * if count(['c','cpp','python'],&filetype)
\ | call SkipTrailingWhiteSpaces()
\ | endif