Un comando autocommand viene eseguito quando si verifica un evento. Si desidera eseguire un comando dopo che si è verificata una sequenza di eventi. Un modo per farlo è così:
autocmd FileType c,cpp,python
\ autocmd BufWritePre <buffer> call StripTrailingWhiteSpaces()
Il <buffer>
modello provoca l'attivazione del comando automatico quando viene scritto il buffer corrente. Vedere
:help autocmd-buflocal
Aggiornare
La soluzione sopra è piuttosto semplice e presenta alcuni difetti che sono stati discussi nei commenti. Ecco una soluzione più completa che risolve alcuni di questi difetti. Inserisce i comandi automatici in un gruppo ed elimina il comando automatico BufWritePre, se presente, prima di crearne uno nuovo. Crea ancora un comando automatico per buffer, ma solo uno.
augroup TrailSpace
autocmd FileType c,cpp,python
\ autocmd! TrailSpace BufWritePost <buffer> call SkipTrailingWhiteSpaces()
augroup END
Un'altra soluzione, simile alla risposta pubblicata da lcd047, ora eliminata, è riconoscere che quando si verifica l'evento FileType, viene impostata l'opzione 'filetype'. Quindi puoi condizionare la risposta all'evento BufWritePost sul valore di 'filetype', come nell'esempio seguente. Ha il vantaggio rispetto alle altre soluzioni che viene creato un solo autocomando.
autocmd BufWritePre * if count(['c','cpp','python'],&filetype)
\ | call SkipTrailingWhiteSpaces()
\ | endif