Perintah perintah otomatis dijalankan ketika satu peristiwa terjadi. Anda ingin perintah dieksekusi setelah urutan peristiwa telah terjadi. Salah satu cara untuk melakukannya adalah seperti ini:
autocmd FileType c,cpp,python
\ autocmd BufWritePre <buffer> call StripTrailingWhiteSpaces()
The <buffer>
Pola menyebabkan autocommand yang akan dipicu ketika buffer saat ditulis. Lihat
:help autocmd-buflocal
Memperbarui
Solusi di atas cukup sederhana dan memiliki beberapa kekurangan yang dibahas dalam Komentar. Berikut ini adalah solusi yang lebih lengkap untuk mengatasi beberapa kekurangan tersebut. Itu menempatkan autocommand dalam grup dan menghapus autocommand BufWritePre, jika ada, sebelum membuat yang baru. Itu masih membuat satu perintah otomatis per buffer, tetapi hanya satu.
augroup TrailSpace
autocmd FileType c,cpp,python
\ autocmd! TrailSpace BufWritePost <buffer> call SkipTrailingWhiteSpaces()
augroup END
Solusi lain, mirip dengan jawaban yang diposting oleh lcd047, sekarang dihapus, adalah untuk mengenali bahwa ketika peristiwa FileType terjadi, opsi 'filetype' diatur. Kemudian Anda dapat mengkondisikan respons terhadap acara BufWritePost pada nilai 'filetype', seperti dalam contoh berikut. Ini memiliki keunggulan dibandingkan solusi lain yang hanya dibuat satu autocommand.
autocmd BufWritePre * if count(['c','cpp','python'],&filetype)
\ | call SkipTrailingWhiteSpaces()
\ | endif