Sé que es una pregunta antigua, y la forma de @ mykola-golubyev obviamente ES la mejor respuesta para el caso particular en la pregunta OP (que, supongo, está pasando por un código ofuscado donde es probable que tenga varios bloques con los mismos nombres de var) ; pero con el nombre de la pregunta como ese, muchas personas que vienen aquí desde las búsquedas de Google probablemente buscan formas menos específicas de la situación para cambiar el nombre de las variables en VIM, y esas pueden ser más concisas
Me sorprende que nadie sugiera de esta manera:
*
:s//
NUEVO NOMBRE /gc
El *
es el mismo que gn
- se busca la siguiente aparición de la palabra bajo el cursor y se convierte en el último patrón buscado, por lo que cuando se omite el patrón de búsqueda en el comando sustituto, VIM asume éste es el patrón a buscar.
Para pequeñas cantidades de copias var, una aún más rápida:
*
cw
NEWNAME <esc>
luego repita n.
para otras ocurrencias
Buscar ocurrencia, cw
es el comando para cambiar palabra , n
pasa a la siguiente ocurrencia del último término buscado y .
repite el último comando (que es cambiar palabra a NEWNAME )
(Los créditos para que yo sepa todo esto van a @doomedbunnies en Reddit )
Otro truco genial es este: ( créditos a @ nobe4 )
*
cgn
NEWNAME <esc>
luego repita .
para otras ocurrencias
cgn
es "cambiar lo que sea el resultado de (encontrar la siguiente aparición)". Ahora que este es el último comando , no es necesario n
que vaya a la siguiente aparición, por lo que de nuevo hay menos trazos y, lo que es más importante, no es necesario alternar n
y .
. Pero, obviamente, este tiene el inconveniente de no tener una forma de omitir una ocurrencia.
A continuación se muestran algunos beneficios:
- sin mapeo, sin .vimrc (o init.vim), por lo que puede usarlo en cualquier copia de VIM que encuentre (por ejemplo, una tarea rápida en algún VPS o en la máquina de su amigo donde configurar VIM a su manera frustraría el propósito de 'rápido' )
- usar
*
o gn
para la selección de palabras es muy rápido: solo presionar una tecla (bueno, digamos 1.5)
- usando
*
o gn
se asegura de que no obtenga coincidencias dentro de otras palabras, al igual que lo :%s/<C-R>//gc
hace. Es mejor que escribir a :%s/\<OLDNAME\>/NEWNAME/gc
mano: personalmente, tiendo a olvidar usar las \<
cosas para limitar las coincidencias a palabras completas solamente.
- No usar el alcance solo resultará en unos pocos golpes adicionales de
n
para omitir coincidencias no deseadas, probablemente incluso menos que los golpes adicionales necesarios para limitar el alcance. En circunstancias normales, lo más probable es que sus variables estén algo localizadas en un determinado bloque de código de todos modos.