Saya memiliki yang berikut di vimrc saya:
func! AddSpaceBeforeEqual()
s/\([a-z)_0-9"'\[\]]\)=/\1 =/ge
endfunc
Saya menggunakan vint untuk lint vimrc saya, dan mendapat peringatan berikut:
ProhibitCommandWithUnintendedSideEffect Hindari perintah dengan efek samping yang tidak diinginkan. Hindari penggunaan: s [ubstitute] saat memindahkan kursor dan mencetak pesan kesalahan. Fungsi yang disukai (seperti pencarian ()) lebih cocok untuk skrip. Untuk banyak perintah vim, ada fungsi yang melakukan hal yang sama dengan efek samping yang lebih sedikit. Lihat: fungsi bantu () untuk daftar fungsi bawaan. Panduan Gaya Vimscript Google
Namun, saya tidak berpikir bahwa mereka adalah cara untuk melakukan substitusi tanpa menggunakan :s
perintah.
Misalnya, search()
fungsi memberikan garis yang cocok dengan pola, tetapi tidak ada cara untuk melakukan substitusi. The substitute()
Fungsi beroperasi pada string, dan tidak menggantikan pada seluruh file.
Haruskah saya menerapkan metode pengganti sendiri, atau apakah itu cara yang lebih cerdas untuk menulis ulang fungsi saya?
:help function-search-undo