Saya ingin mengoptimalkan alur kerja "temukan dan ganti" saya di Vim. Itu adalah sesuatu yang sering saya lakukan, karena saya yakin sebagian besar dari Anda juga. Biasanya sesuatu di sepanjang baris - salin blok dan ubah nama variabel di beberapa tempat. Saya tahu, saya tahu, itu mungkin memicu refleks "mengapa Anda menyalin dan menempelkan kode", tapi jangan sampai menyimpang ... Ada banyak kasus penggunaan yang valid :)
Saya sangat menyadari pencarian dan mengganti perintah: :s
atau :%s
tetapi saya tidak menyukainya. Itu memaksa saya untuk mengetikkan nama variabel lengkap yang saya cari dan untuk apa saya mengubahnya. Mungkin ada cara yang lebih baik untuk memperbaiki jumlah pengetikan :%s
? Saya sering menggunakan nama variabel deskriptif panjang, jadi itu benar-benar pemecah kesepakatan bagi saya. Saya juga tidak suka bagaimana mengetik nama variabel dari awal adalah salah ketik dan dapat menghabiskan waktu dan tenaga otak memburu kesalahan ketik. Saya lebih suka mengetiknya sekali, lalu menyalin dan menempel untuk menghindari ini sepenuhnya jika memungkinkan.
Alur kerja saya saat ini menggunakan beberapa kombinasi gerakan / yank / select / search / put untuk bergerak di sekitar file dan mengganti satu per satu. Itu tidak bagus tetapi memiliki manfaat menghindari mengetikkan nama variabel lengkap. Saya mungkin hanya perlu mengetik beberapa huruf pertama dengan /
atau menggunakan perintah gerakan lain (misalnya fx
) tergantung pada apa yang ada di sekitar dan kemudian tekan ve
untuk memilih seluruh kata. Saya juga tidak keberatan harus mengulangi untuk setiap contoh. Saya tidak pernah melakukan penggantian temuan lengkap tanpa mengonfirmasi setiap perubahan. Tetapi akan jauh lebih disukai jika saya bisa mengulangi tindakan penggantian dengan penekanan tombol tunggal (yang saya tidak bisa lakukan dengan metode ini). setiap penggantian biasanya sesuatu seperti n
itu ve
maka p
(atau bahkan lebih buruk "0p
)
Apakah ada cara yang lebih cepat?
n
ve
"0p
. Yang sayangnya tidak dapat ditiru hanya dengan.
n ce ctrl-r 0 <esc> n.n.n.n.n.n.
.
mengulangi "blok perintah" terakhir (tidak yakin dengan istilah yang tepat. misalnya: memindahkan + tindakan + teks. untuk contoh:cwtoto<Esc>
(ubah dari kursor ke akhir kata dengan "toto"),c/foo<enter>bar<Esc>
(ubah dari kursor ke sebelum " foo ", dan ganti dengan" bar "). Anda kemudian dapat memindahkan (dengan kursor, hjkl, atau angka + hjkl (melakukannya n kali), G (pergi ke akhir file), / sesuatu (pergi sebelum" sesuatu "), dll) dan kemudian tekan.
untuk mengulangi" blok perintah "yang sama