Busque y reemplace cadenas en vim en varias líneas
Puedo hacerlo :%s/<search_string>/<replace_string>/g
para reemplazar una cadena en un archivo o :s/<search_string>/<replace_string>/
para reemplazar en la línea actual.
¿Cómo puedo seleccionar y reemplazar palabras de líneas selectivas en vim?
Ejemplo: reemplazar texto de líneas 6-10
, 14-18
pero no de 11-13
.
Reemplaza todo:
:%s/foo/bar/g
Encuentre cada aparición de 'foo' (en todas las líneas) y reemplácela con 'bar'.
Para líneas específicas:
:6,10s/foo/bar/g
Cambie cada 'foo' a 'bar' para todas las líneas desde la línea 6 hasta la línea 10 inclusive.
El :&&
comando repite la última sustitución con las mismas banderas. Puede proporcionarle los rangos adicionales (y concatenar tantos como desee):
:6,10s/<search_string>/<replace_string>/g | 14,18&&
Sin embargo, si tienes muchos rangos , prefiero usar un bucle:
:for range in split('6,10 14,18')| exe range 's/<search_string>/<replace_string>/g' | endfor
Como nota al margen, en lugar de tener que escribir los números de línea, simplemente resalte las líneas donde desea buscar/reemplazar en uno de los modos visuales:
VISUAL
modo ( V)VISUAL BLOCK
modo ( Ctrl+ V)VISUAL LINE
modo ( Shift+ V, funciona mejor en su caso)
Una vez que haya seleccionado las líneas para reemplazar, escriba su comando:
:s/<search_string>/<replace_string>/g
Notarás que el rango '<,'>
se insertará automáticamente:
:'<,'>s/<search_string>/<replace_string>/g
Aquí '<
simplemente significa primera línea resaltada y '>
última línea resaltada .
Tenga en cuenta que el comportamiento puede ser inesperado en el NORMAL
modo: '<
y '>
apunte al inicio y al final del último resaltado realizado en uno de los VISUAL
modos. En cambio, en modo, se puede utilizar NORMAL
el número de línea especial , que simplemente significa línea actual . Por lo tanto, puede buscar/reemplazar solo en la línea actual de esta manera:.
:.s/<search_string>/<replace_string>/g
Otra cosa a tener en cuenta es que insertar un segundo :
entre el rango y el comando buscar/reemplazar no hace daño; en otras palabras, estos comandos seguirán funcionando:
:'<,'>:s/<search_string>/<replace_string>/g
:.:s/<search_string>/<replace_string>/g
Buscar y reemplazar
:%s/search\|search2\|search3/replace/gci
g => búsqueda global
c => Solicitar confirmación primero
i => No distingue entre mayúsculas y minúsculas
Si desea un reemplazo directo sin confirmación, utilice el siguiente comando
:%s/search/replace/g
Si desea confirmación para cada reemplazo, ejecute el siguiente comando
:%s/search/replace/gc
Primero solicite confirmación; aquí la búsqueda no distinguirá entre mayúsculas y minúsculas.
:%s/search/replace/gci