Al buscar, he resaltado la cadena que quiero cambiar. Ahora quiero reemplazar solo el texto resaltado. Estoy usando n
para avanzar a la siguiente instancia de la cadena de búsqueda. Estaba pensando que podría hacer algo como ciw
eso, pero eso cambia la palabra completa no solo el texto resaltado.
Estoy familiarizado :%s/old/new/g
pero no quiero cambiar todas las instancias. En cambio, quiero avanzar mi cursor a cada instancia y luego decidir si cambiarlo.
gn
, así que aquí hay un método similar que acabo de descubrir:c//e<CR>FooBar<Esc>//<CR>
:%s/oldtext/newstuff/g
cambiará todos los partidos deoldtext
anewstuff
..
varias veces, puedo usar:%norm .
( fuente ).Si ya buscó una palabra con
/word
o?word
.Puede usar
:%s//newword/gc
para reemplazar la palabra que buscó anteriormentenewword
, dejandos//..
vacío el término de búsqueda ( ).La
c
bandera dice que cada cambio debe confirmarse presionandoy
sí on
no.Echa un vistazo
:help :s_flags
para obtener más información sobre la bandera de confirmación.fuente
l
,a
yq
(o<Esc>
) para ver diferentes formas para concluir el ciclo de confirmación.Método 1
Puede aprovechar las asignaciones
gn
ygN
para lograr lo que desea.gn
buscará el último término de búsqueda utilizado y seleccionará visualmente la coincidencia.gN
hace exactamente lo mismo, excepto que busca hacia atrás. Cuando se combina con un operador comoc
, el operador se aplicará a la coincidencia. Por ejemplo, si su última cadena de búsqueda es "foo" y usted escribecgn
, buscará la siguiente instancia de "foo", la borrará y ponerlo en modo de inserción para ingresar el texto de reemplazo.Para más información sobre estos, vea
:help gn
y:help gN
.Método 2
Puedes usar el
:substitute
comando con lac
bandera. Esto le pedirá que confirme cada sustitución. Por ejemplo, supongamos que desea reemplazar foo con barra en todo el archivo, pero desea confirmar cada reemplazo:Para más información sobre este tema, consulte estos temas:
:help :s_flags
,:help cmdline-ranges
, y:help :substitute
.fuente