Bunun eski bir soru olduğunu biliyorum ve @ mykola-golubyev'in yöntemi, OP sorusundaki belirli durum için en iyi cevaptır (ki, aynı değişken adlarına sahip birden çok bloğa sahip olabileceğiniz karmaşık kodlardan geçtiğini varsayıyorum) ; ancak, google aramalarından buraya gelen pek çok kişi, VIM'deki değişkenleri yeniden adlandırmak için daha az duruma özgü yollar arar ve bunlar daha kısa olabilir.
Kimsenin bu şekilde önermediğine şaşırdım:
*
:s//
YENİ İSİM /gc
*
Aynıdır gn
o imlecin altındaki sözcüğün sonraki gerçekleşmesinde arar VE geçen deseni aranır hale siz yedek komuta arama deseni atladığınızda yüzden, VIM bu aramak için kalıptır varsayar -.
Küçük miktarlarda değişken kopya için daha da hızlı:
*
cw
NEWNAME, <esc>
ardından n.
diğer durumlar için tekrarlayın
Oluşum ara, cw
için komut değişim sözcüğü , n
son aranır vadeli bir sonraki geçtiği gider ve .
(olan son komutu tekrarlar NEWNAME değişiklik kelime )
(Tüm bunları bilen krediler Reddit'te @doomedbunnies'e gidiyor )
Bir başka harika numara da şudur: ( @ nobe4 kredisi )
*
cgn
NEWNAME, <esc>
ardından .
diğer durumlar için tekrarlayın
cgn
"(sonraki tekrarı bul) sonucunu değiştir" dir. Artık bu son komutn
olduğuna göre, bir sonraki olaya gitmek için öğesine ihtiyacınız yok , bu nedenle tekrar daha az vuruş ve daha da önemlisi, değiştirmeye gerek yok n
ve .
. Ancak, belli ki, bunun dezavantajı, bir olayı atlamanın bir yolunu bulamamaktır.
İşte bazı avantajlar:
- eşleştirme yok, .vimrc (veya init.vim) yok, böylece karşılaştığınız herhangi bir VIM kopyasında kullanabilirsiniz (örneğin, VIM'i istediğiniz şekilde yapılandırmanın 'hızlı' amacını ortadan kaldıracağı bazı VPS veya arkadaşınızın makinesinde hızlı bir görev) )
- kelime seçimi için
*
veya kullanmak gn
çok hızlıdır - sadece bir tuş vuruşu (pekala, 1.5 diyelim)
- kullanarak
*
veya gn
başka kelimelerin içinde herhangi bir eşleşme olmadığından emin olmanızı sağlar :%s/<C-R>//gc
. :%s/\<OLDNAME\>/NEWNAME/gc
Elle yazarak vuruşlar : Kişisel olarak, \<
eşleşmeleri yalnızca tam kelimelerle sınırlamak için bazı şeyleri kullanmayı unutuyorum .
- Kapsam kullanmamak,
n
istenmeyen eşleşmeleri atlamak için yalnızca birkaç ekstra vuruşla sonuçlanır - muhtemelen kapsamı sınırlamak için gereken ekstra vuruşlardan bile daha az. Normal koşullar altında, değişkenleriniz büyük olasılıkla bir şekilde belirli bir kod bloğuna yerelleştirilmiştir.