Cukup sering saya merasa perlu melakukan substitusi yang akan memiliki kecocokan tersebar di seluruh file besar dan dengan pencarian non-sepele dan ekspresi pengganti.
Sebagai contoh, katakan saya memiliki beberapa panggilan fungsi seperti okFunction(arg1, arg2 arg3)
. Args akan berbeda dengan setiap pemanggilan fungsi, tentu saja. Sekarang katakan saya telah menemukan fungsi yang lebih baik yang tidak perlu arg2
. Saya dapat dengan mudah mengatur seluruh file dengan
:%s/\<okFunction(\(\w\+\), \(\w\+\), \(\w\+\))/betterFunction(\1, \3)/gc
Meskipun secara konsep sederhana, saya tidak yakin saya sudah mendapatkan sintaks yang tepat dalam pola yang agak panjang ini. The c
flag benar-benar membantu di sini, tapi masalahnya adalah bahwa ketika meminta konfirmasi, vim tidak akan menunjukkan apa pertandingan akan diganti dengan. Maksud saya, ini akan menunjukkan ekspresi pengganti, tetapi bukan hasil yang dievaluasi. Jika saya mengkonfirmasi penggantian dengan y
, vim akan segera melompat ke pertandingan berikutnya dan saya tidak akan dapat melihat apakah saya melakukan kesalahan.
Saya telah menemukan plugin vim-over yang sebagian menyelesaikan masalah, tetapi hanya jika semua matematika terlihat di layar saat Anda mengetik perintah. Setelah Anda menekan enter, perilaku adalah sama persis seperti yang saya jelaskan di atas dan saya tidak mendapatkan pratinjau.
Jadi, apakah ada cara untuk mendapatkan vim untuk mengevaluasi ekspresi pengganti ketika meminta konfirmasi tentang perintah pengganti?
%
, periksa hasilnya adalah apa yang saya harapkan dan kemudian gunakan substitusi dengan %
(hanya beberapa penekanan tombol:) :<up><c-b>%
. Jelas opsi pratinjau akan jauh lebih efisien dari itu. Meskipun tidak ada tambalan yang tersedia, mungkin orang dapat membungkus substitusi dalam fungsi vimscript dengan opsi semacam ini tetapi kedengarannya seperti banyak pekerjaan ...