WikiJuanan: BúsquedasVim

Editor Vim


Lo que sigue es copia de http://moranar.com.ar/lin/lvim1.html

Búsqueda de texto

Una de las funciones más importantes para un programador o un administrador de un sistema Linux, en Vim se hace con el comando /. Por ejemplo:

/rogelio

buscará la palabra “rogelio” entre el cursor y el final del archivo. Si la encontró, y quiere ver otras apariciones, pulse n (next, siguiente). Para buscar entre el cursor y el principio del documento, use ? y luego n:

?rogelio

busca la primera aparición de esa palabra antes del cursor; n busca la anterior a esa, etc. Como puede que el nombre esté en mayúsculas (Rogelio), puede usar :set ignorecase para que las búsquedas no hagan distinción entre mayúsculas y minúsculas, o :set noignorecase para el comportamiento normal. Por último, pongamos que usted está ante la palabra variabledenombrelargo y quiere buscar la siguiente aparición de esa palabra en el texto. Para evitar errores de tipeo, ponga el cursor encima de alguna letra de esa palabra, y use el comando *, que toma la palabra bajo el cursor como patrón de búsqueda.

Con esto usted puede editar perfectamente archivos de configuración. Lo sabemos, porque hasta hace poco, era nuestra única experiencia con Vi y eso nunca nos impidió tener un sistema perfectamente funcionante. Sin embargo, seguiremos con algunos otros conceptos para darle una mejor visión de lo que el editor puede hacer.

Búsquedas avanzadas

Ya vimos la manera más básica de hacer búsquedas, simplemente con / y?. Ahora veamos algunos trucos más.

Supongamos que usted quiere buscar la palabra “cien”, pero no las palabras “ciento” o “ciencia”. Para hacer la distinción, la búsqueda debe ser: /cien\>. Ese \> quiere decir «aquí termina la palabra que busco”. Del mismo modo, podemos delimitar la búsqueda para evitar “conciencia” usando /\<cien\>.

Lo que veremos a continuación no es exclusivo de Vim. Las expresiones regulares son una de las herramientas más importantes en muchos lenguajes de programación, y están disponibles en el shell Bash, en Vim, en otros editores de texto... Una expresión regular es una manera de expresar un patrón de búsqueda. El comando “buscar una cadena de texto que comience con la frase foo y termine con la frase bar” es una expresión regular, o por lo menos podría expresarse con una. En realidad, cualquiera de las búsquedas anteriores usa expresiones regulares (aunque las más simples).

Veamos primero los casos simples: una palabra al principio de una línea puede buscarse con /^palabra, donde el ^ indica «comienzo de la línea». Así mismo, /palabra$ buscamos “palabra” al final de una línea.

El punto equivale al comodín ? del shell: es un reemplazo por cualquier carácter: buscar la expresión r.ma encontraría tanto rama como rema, rima, etc. Incluso encontraría r ma. Ahora, puede ocurrírsele "¿Qué pasa si quiero buscar una frase que contenga un punto?" Bueno, la manera de que se busque un punto (o algún otro caracter, como $ o ^, que forman parte de expresiones y tienen significado aparte, es “desreferenciarlos” con una barra inversa (el caracter \) antes: la expresión /\.com buscará específicamente la frase “.com”.

Las expresiones regulares son un tema enorme, y merecen verse aparte. Usar Google puede devolverle varios tutoriales buenos para empaparse más en el tema. El mismo Vi dispone, en la ayuda, de una sección dedicada al manejo de esta poderosa herramienta.