Sustituir texto con VIM, parte 1

Publicado el mar 15 febrero 2011

VIM tiene un comando para sustituir, lo que hace es buscar un patrón de texto y lo reemplaza por otro.

El comando sería:

:[rango]s/patrón_a_buscar/texto_de_reemplazo[/opciones]

Si no especificamos el rango, se sustituye sólo en la línea actual, el rango lo podemos expresar como:

  • % para todo el documento
  • 2, 4 para sustituir entre las líneas 2 y 4
  • ., $ para sustituir desde la línea actual (.) hasta la última ($)
  • ., +2 para sustituir desde la actual y las siguientes dos

Entre las opciones posibles tenemos:

  • g para sustituir todas las coincidencias dentro del rango (por defecto sólo sustituye la primera)
  • c solicita confirmación antes de sustituir
  • i sustituye sin considerar sensibilidad a mayúsculas o minúsculas.
  • podemos mezclarlas: gc sustituirá todas las coincidencias pero solicitará confirmación antes.

Ejemplos:

//Sustituir la primera aparición de foo por bar entre la líneas 4 y 10 del documento
:4,10s/foo/bar
//Igual que el ejemplo anterior pero para todas las ocurrencias
:4,10s/foo/bar/g

En el próximo post mostraré el empleo de caracteres especiales para construir patrones de textos.