So che è una vecchia domanda, e il modo di @ mykola-golubyev è ovviamente la migliore risposta per il caso particolare nella domanda OP (che, presumo stia attraversando un codice offuscato in cui è probabile che tu abbia più blocchi con gli stessi nomi var) ; ma con il nome della domanda come quello molte persone che vengono qui dalle ricerche su Google probabilmente cercano modi meno specifici per la situazione per rinominare le variabili in VIM - e quelli possono essere più concisi
Sono sorpreso che nessuno abbia suggerito in questo modo:
*
:s//
NUOVO NOME /gc
Lo *
è lo stesso che gn
- esso cerca la prossima occorrenza della parola sotto il cursore e diventa l'ultimo ricercato modello, in modo che quando si omette il modello di ricerca nel comando sostituto, VIM assume questo è il modello da cercare.
Per piccole quantità di copie var, anche più veloce:
*
cw
NEWNAME <esc>
quindi ripetere n.
per altre occorrenze
Cerca occorrenza, cw
è il comando per cambiare parola , n
va alla prossima occorrenza dell'ultimo termine cercato e .
ripete l'ultimo comando (che è cambia parola in NUOVONOME )
(I crediti per me che so tutto questo vanno a @doomedbunnies su Reddit )
Un altro trucco interessante è questo: ( crediti a @ nobe4 )
*
cgn
NEWNAME <esc>
quindi ripetere .
per altre occorrenze
cgn
è "cambia qualunque sia il risultato di (trova la prossima occorrenza)". Ora che questo è l' ultimo comando , non è necessario n
che passi all'occorrenza successiva, quindi di nuovo meno tratti e, cosa più importante, non è necessario alternare n
e .
. Ma, ovviamente, questo ha l'inconveniente di non avere un modo per saltare un evento.
Ecco alcuni vantaggi:
- nessuna mappatura, nessun .vimrc (o init.vim), quindi puoi usarlo in qualsiasi copia VIM che incontri (ad esempio un'attività rapida su alcuni VPS o sulla macchina di un tuo amico in cui configurare VIM a modo tuo vanificherebbe lo scopo di 'veloce' )
- usare
*
o gn
per la selezione delle parole è molto veloce: basta premere un tasto (beh, diciamo 1.5)
- usando
*
o gn
si assicura di non ottenere corrispondenze all'interno di altre parole, proprio come :%s/<C-R>//gc
fa. Beats digitando :%s/\<OLDNAME\>/NEWNAME/gc
a mano: personalmente tendo a dimenticare di usare le \<
cose per limitare le corrispondenze solo a parole intere.
- Il mancato utilizzo dell'oscilloscopio comporterà solo alcuni colpi extra
n
per saltare le corrispondenze indesiderate, probabilmente anche meno dei colpi extra necessari per limitare l'ambito. In circostanze normali, le tue variabili sono molto probabilmente localizzate comunque in un certo blocco di codice.