Saya tahu itu pertanyaan lama, dan cara @ mykola-golubyev jelas ADALAH jawaban terbaik untuk kasus tertentu dalam pertanyaan OP (yang, saya asumsikan akan melalui kode yang dikaburkan di mana Anda cenderung memiliki beberapa blok dengan nama var yang sama) ; tetapi dengan nama pertanyaan seperti itu, banyak orang yang datang ke sini dari penelusuran google mungkin mencari cara yang tidak terlalu spesifik untuk situasi tertentu untuk mengganti nama variabel di VIM - dan itu bisa lebih ringkas
Saya terkejut tidak ada yang menyarankan seperti ini:
*
:s//
NAMA BARU /gc
Ini *
sama dengan gn
- ini mencari kemunculan berikutnya dari kata di bawah kursor DAN itu menjadi pola pencarian terakhir, jadi ketika Anda menghilangkan pola pencarian dalam perintah pengganti, VIM menganggap ini adalah pola yang akan dicari.
Untuk sejumlah kecil salinan var, bahkan lebih cepat:
*
cw
NEWNAME <esc>
kemudian ulangi n.
untuk kejadian lain
Cari kejadian, cw
adalah perintah untuk mengubah kata , n
pergi ke kejadian berikutnya dari istilah yang dicari terakhir dan .
mengulangi perintah terakhir (yaitu mengubah kata menjadi NEWNAME )
(Penghargaan untuk saya mengetahui semua ini masuk ke @doomedbunnies di Reddit )
Trik keren lainnya adalah ini: ( kredit untuk @ nobe4 )
*
cgn
NEWNAME <esc>
kemudian ulangi .
untuk kejadian lain
cgn
adalah "mengubah apa pun hasil dari (temukan kejadian berikutnya)". Sekarang ini adalah perintah terakhir , Anda tidak perlu n
pergi ke kejadian berikutnya, jadi lebih sedikit pukulan lagi, dan, yang lebih penting, tidak perlu bergantian n
dan .
. Tapi, jelas, yang satu ini memiliki kelemahan karena tidak memiliki cara untuk melewatkan kejadian.
Berikut beberapa manfaatnya:
- tanpa pemetaan, tidak ada .vimrc (atau init.vim), sehingga Anda dapat menggunakannya di salinan VIM apa pun yang Anda temui (misalnya, tugas cepat di beberapa VPS atau mesin teman Anda di mana mengkonfigurasi VIM dengan cara Anda akan mengalahkan tujuan 'cepat' )
- menggunakan
*
atau gn
untuk pemilihan kata sangat cepat - hanya satu penekanan tombol (yah, katakanlah 1,5)
- menggunakan
*
atau gn
memastikan Anda tidak mendapatkan kecocokan di dalam kata lain, seperti :%s/<C-R>//gc
halnya. Ketukan mengetik :%s/\<OLDNAME\>/NEWNAME/gc
dengan tangan: Saya pribadi cenderung lupa menggunakan \<
hal - hal untuk membatasi kecocokan hanya untuk seluruh kata.
- Tidak menggunakan cakupan hanya akan menghasilkan beberapa pukulan ekstra
n
untuk melewati pertandingan yang tidak diinginkan - bahkan mungkin lebih sedikit dari pukulan ekstra yang diperlukan untuk membatasi cakupan. Dalam keadaan normal, variabel Anda kemungkinan besar agak dilokalkan ke blok kode tertentu.