Une commande de commande automatique est exécutée lorsqu'un événement se produit. Vous souhaitez qu'une commande soit exécutée après qu'une séquence d'événements s'est produite. Une façon de le faire est la suivante:
autocmd FileType c,cpp,python
\ autocmd BufWritePre <buffer> call StripTrailingWhiteSpaces()
Le <buffer>
modèle provoque le déclenchement de l'autocommande lorsque le tampon actuel est écrit. Voir
:help autocmd-buflocal
Mise à jour
La solution ci-dessus est assez simple et présente des défauts qui ont été discutés dans les commentaires. Voici une solution plus complète qui corrige certains de ces défauts. Il place les commandes automatiques dans un groupe et supprime la commande automatique BufWritePre, le cas échéant, avant d'en créer une nouvelle. Il crée toujours une autocommande par tampon, mais une seule.
augroup TrailSpace
autocmd FileType c,cpp,python
\ autocmd! TrailSpace BufWritePost <buffer> call SkipTrailingWhiteSpaces()
augroup END
Une autre solution, similaire à la réponse publiée par lcd047, maintenant supprimée, consiste à reconnaître que lorsque l'événement FileType se produit, l'option «filetype» est définie. Vous pouvez ensuite conditionner la réponse à l'événement BufWritePost sur la valeur de "type de fichier", comme dans l'exemple suivant. Il a l'avantage sur les autres solutions qu'une seule autocommande est créée.
autocmd BufWritePre * if count(['c','cpp','python'],&filetype)
\ | call SkipTrailingWhiteSpaces()
\ | endif