Vim ofrece varias opciones para realizar búsquedas de cadenas de texto en nuestros documentos. Veamos las opciones básicas.
Una tarea básica de un editor de texto, es la opción de realizar búsquedas en todo nuestro archivo de una cadena de texto. Vemos cómo realizar esas búsquedas en el editor Vim.
Este artículo viene a engrosar la pequeña lista de artículos que vengo dedicando al editor Vim con las cosas que voy aprendiendo y que puedes consultar en este enlace:
Suponemos que tenemos un archivo abierto en nuestro editor Vim y queremos buscar una palabra en todo el texto. Mientras que en otros editores y aplicaciones estamos acostumbrados a usar Ctrl+F en Vim se realiza de modo distinto y con muchas otras opciones.
Para realizar la búsqueda de una cadena de texto, en modo normal, escribiremos lo siguiente
/texto
Con la barra / indicamos que queremos realizar una búsqueda desde donde está el cursor hacia adelante en el archivo del texto indicado. Si en vez de hacer una búsqueda hacia adelante queremos realizarla hacia atrás en vez de la barra tendremos que utilizar el signo ? así:
?texto
Pulsamos Enter y Vim nos muestra la primera coincidencia, para seguir recorriendo el texto en la dirección que hemos indicado pulsamos la tecla n y continuará mostrando la siguiente coincidencia.
Si queremos revertir la dirección de búsqueda de las siguientes coincidencias, pulsaremos N y nos mostrará la coincidencia anterior. Tanto n como N funcionan con / y con ? pero en sentido inverso. Es más sencillo probarlo, que explicarlo, ya verás… 🙂
Después de pulsar / mientras estamos escribiendo el texto a buscar, Vim resalta la primera coincidencia que ha encontrando, si la palabra en cuestión es la que queremos pulsando Ctrl+r Ctrl+w nos copiará dicha palabra en el comando y pulsaremos Enter para ir buscándola.
Insensible
De manera predeterminada Vim hace las búsquedas diferenciando entre mayúsculas y minúsculas, por lo que no sería lo mismo Texto que texto. Pero yo prefiero que no sea así.
Por eso en el archivo .vimrc de configuración tengo añadido lo siguiente:
set ignorecase set smartcase
Con esto lo que hacemos es que si buscamos una cadena como texto no encontrará coincidencias si encuentra Texto o TEXTO.
Mientras que con smartcase, si en nuestra búsqueda buscamos Texto al tener una letra en mayúscula esto hará que sólo encuentre la cadena que coincide con ella.
Historial
Si queremos repetir una búsqueda que ya hemos realizado con anterioridad, Vim guarda un historial de nuestras búsquedas, por lo que solamente tendremos que escribir / y después con las flechas de cursor hacia arriba o abajo podremos ir navegando por todas las búsquedas que hemos realizado.
Buscando caracteres especiales
Imaginemos que queremos buscar una cadena como en todo el texto. Para realizar búsquedas de caracteres especiales, estos hay que «escaparlos» anteponiendo a ellos la contrabarra. Es decir que para realizar la búsqueda anterior escribiremos:
/\:\/
Como véis antes de cada símbolo : y / hemos añadido una contrabarra para «escapar» esos símbolos especiales. Algo que no he conseguido averiguar, es cómo realizar una búsqueda de la cadena \
Si sabéis la solución por favor compartidla en los comentarios! 🙂
Otras opciones rápidas
Estando en el texto, si queremos buscar la palabra sobre la que actualmente está el cursor, pulsando * hará que se busque esa palabra hacia adelante en el texto.
Si por el contrario queremos buscar la palabra sobre la que está el cursor pero hacia atrás en el texto, pulsaremos sobre # para realizar la búsqueda.
Conclusión
Como véis el uso de búsquedas en Vim es sencillo, y con muchas opciones, aunque aquí hemos visto solo las más básicas y las más utilizadas.
La contrabarra se busca escapando el propio carácter de escape: /\. Ej.: si buscamos cad\ena encontrará en el texto cad\ena, cad\enas, etc.
En el caso de que la contrabarra sea el último carácter de la búsqueda (ojo, en la búsqueda, no en el texto) no hace falta escaparla. Ej.: si buscamos cad\ encontrará en el texto cad\ pero también cad\ena, etc.
Pero lo mejor, para no liarse, es escaparla siempre.
hola!
Muuuchas gracias por la respuesta!
Gracias por tu colaboración, lo probaré…
Saludos y gracias por la visita!
Ya he probado…
Si queremos buscar \ena deberemos introducir en la búsqueda:
/\ena
okis
Al publicar el comentario convierte dos contrabarras seguidas en una sola.
«La contrabarra se busca escapando el propio carácter de escape: /\ [Deberían mostrarse una barra seguida de dos contrabarras]. Ej.: si buscamos cad\ena encontrará en el texto cad\ena [deberían mostrarse dos contrabarras], cad\enas [aquí está bien que muestre solo una contrabarra], etc.»
ok, muchas gracias por la aclaración… 🙂