LinuxParty

NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.

Ratio: 3 / 5

Inicio activadoInicio activadoInicio activadoInicio desactivadoInicio desactivado
 

Para hacer una búsqueda en Vim, bastará pulsar la tecla [ / ]. Recuerda que si estás en el "modo insertar", puedes pulsar la tecla [ Esc ] o la combinación de teclas [ Ctrl ]+[ O ], pasas puntualmente al modo normal. Una vez introducida la cadena de búsqueda, pulsas [ enter ], y aparecerán todas las coincidencias resaltadas. Si quieres quitar ese resaltado simplemente utiliza el comando [ :noh ].

En el caso de que veas que no se resaltan los resultados, y realmente existan resultados correspondientes a la búsqueda que estás realizando, simplemente utiliza la opción [ :set highlight ].

Una vez realizada la búsqueda conforme te he indicado anteriormente, y resaltados todos los resultados puedes navegar entre ellos utilizando,

  • [ N ] para ir al siguiente resultado
  • [ Mayúsc ]+[ N ] para ir al resultado anterior

Indicarte que si en lugar de utilizar [ / ] utilizas [ ? ] realizarás la búsqueda hacia atrás. Es decir, con [ / ] realizas las búsquedas desde la posición que te encuentras hacia adelante. Mientras que con [ ? ] realizas las búsquedas desde donde te encuentras hacia atrás.

Pero no solo esto, si te encuentras en el modo normal, te sitúas sobre una palabra y pulsas [ * ], se resaltarán todas las coincidencias de esa misma palabra a lo largo de todo el documento. Por supuesto, puedes desplazarte como he indicado anteriormente.

Resumiendo

  • [ / ]<texto> busca [ <texto> ] hacia adelante
  • [ ? ]<texto> busca [ <texto> ] del cursor hacia atrás.

Menos usados, pero también conviene saberlo, referentes a un caracter.

  • [ t ]<caracter> salta hasta el [ <caracter> ] siguiente
  • [ T ]<caracter> salta hasta el [ <caracter> ] precedente
  • [ f ]<caracter> salta sobre el [ <caracter> ] siguiente
  • [ F ]<caracter> salta sobre el [ <caracter> ] precedente

De localización.

  • [ n ] te mueve a la siguiente localización de la palabra que buscas
  • [ N ] en este caso salta a la localización precedente
  • [ ; ] salta sobre el siguiente cárácter, relativo al último que te moviste
  • [ , ] idem que en el caso anterior, pero en lugar de al siguiente, al precedente

Reemplazando en Vim

Pero de verdad, si hay algo que me tiene completamente enamorado es reemplazar en Vim. Es algo realmente espectacular. Tener al alcance de tus dedos todo el potencial de las expresiones regulares para buscar y reemplazar en Vim, es algo que, sinceramente, me fascina.

Sintaxis

Aquí si me quiero detener un poco, y dejar mas o menos clara la sintaxis a la hora de buscar y reemplazar en Vim. Fíjate,

[ :rango s/patron/reemplazo/[cgil] ]

Lo que estás buscando y más vas a usar es lo siguiente:

:%s/texto-a-cambiar/texto-remplazado/g

No obstante, esta es su sintaxis

Respecto al rango, puede ser alguno de los enumerados abajo, una combinación o ninguno de ellos.  el [ rango ] es totalmente opcional, siempre puedes omitirlo

  • [ numero ] se refiere a la búsqueda y reemplazo en una línea concreta
  • [ inicio,fin ] de la línea [ inicio ] a la línea [ fin ]
  • [ . ] para la línea actual
  • [ $ ] se refiere a la última línea del archivo
  • [ % ] se refiere a todo el archivo

Existen algunas opciones mas de las que te he indicado, pero con estas, seguro que abarcas la mayor parte de los casos que necesites. Algunos ejemplos,

  • [ :5,10s/casa/caso/g ] reemplaza [ casa ] por [ caso ] entre las líneas 5 y 10 del documento.
  • [ :%s/casa/caso/g ] se comporta igual que el caso anterior, pero lo hace en todo el documento.

Por otro lado, respecto a las opciones [ cgil ] que aparecen en la sintaxis indicadas anteriormente,

  • [ c ] te obliga a confirmara cada una de las sustituciones.
  • [ g ] reemplaza todas las ocurrencias de la línea. Si no se añade esta opción solo cambiará la primera de las apariciones en la línea.
  • [ i ] no distingue entre mayúsculas y minúsculas.
  • [ l ] diferencia entre mayúsculas y minúsculas.

Así, por en general, la forma de cambiar todas las apariciones de la palabra [ casa ] en un texto, es tan sencillo como [ :%s/casa/caso/g ] si además no quieres hacer distinción entre mayúsculas y minúsculas [ :%s/casa/caso/gi ]

Expresiones regulares

Llegados a este punto, y para sacar el máximo provecho, tendrás que hacer uso de las expresiones regulares. Para ello, de nuevo te remito al capítulo comodines y expresiones regulares del tutorial sobre el terminal

Algunos ejemplos

A continuación te dejo algunos ejemplos para que te hagas una idea del potencial que tienen tanto las expresiones regulares como el uso de reemplazar con Vim.

  • :5,10s/casa/caso/g reemplaza casa por caso entre las líneas 5 y 10 del documento.
  • :%s/casa/caso/g se comporta igual que el caso anterior, pero lo hace en todo el documento.

Por otro lado, respecto a las opciones cgil que aparecen en la sintaxis indicadas anteriormente,

  • c te obliga a confirmara cada una de las sustituciones.
  • g reemplaza todas las ocurrencias de la línea. Si no se añade esta opción solo cambiará la primera de las apariciones en la línea.
  • i no distingue entre mayúsculas y minúsculas.
  • l diferencia entre mayúsculas y minúsculas.

Así, por en general, la forma de cambiar todas las apariciones de la palabra casa en un texto, es tan sencillo como :%s/casa/caso/g si además no quieres hacer distinción entre mayúsculas y minúsculas :%s/casa/caso/gi

 

Comentarios  

# Jesús 10-04-2023 11:51
¿Y cómo puedo cambiar todos los saltos de línea seguidos de - por saltos de linea seguido de --?

No estás registrado para postear comentarios



Redes:



   

 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Filtro por Categorías