VIM Find and Replace

Vi/Vim es uno de los legendarios editores de texto que todavía encuentra su lugar en el arsenal de los usuarios avanzados y profesionales. Vim es especialmente popular entre los programadores. Todas las distribuciones de Linux incluyen Vim por defecto. Si estás ejecutando un sistema que no es Linux, deberías poder disfrutar de este editor de texto de calidad desde cualquier sistema. Obtenga Vim.

¿Por qué esta antigua pieza de software sigue siendo relevante? Porque es ligero, tiene atajos de teclado para casi cualquier función, búsquedas de expresiones incorporadas y un ecosistema de plugins robusto, estable y saludable. Por no mencionar otras características de los editores de texto modernos, como el hermoso resaltado de sintaxis. Encontrarás que Vim es más popular entre los programadores porque requiere una fuerte concentración en el teclado. Esa es una buena práctica para los programadores.

Como sugiere el título del artículo, el objetivo de esta guía es ofrecerte una mejor comprensión de las funcionalidades de búsqueda y reemplazo de Vim. Vim no es nada que deba temer. De hecho, es uno de los superpoderes que siempre tendrás a tu lado.

Al principio, necesitamos un texto de demostración. Para aprender Vim, lo más seguro es crear un archivo de texto desechable y hacer lo que quieras con él. De esta manera, incluso si algo sale mal, no se pierde nada importante.

Estoy usando Manjaro Linux como mi sistema Linux. Aprende a instalar Manjaro Linux. Es una distro basada en Arch que utiliza pacman como gestor de paquetes por defecto. He generado un archivo de texto que contiene todos los paquetes instalados en mi sistema.

pacman -Qqe >> PackageList.txt

cat PackageList.txt

¡Ahora, lanza el archivo de texto en Vim!

vim PackageList.txt

Búsqueda en Vim

Para la búsqueda, Vim utiliza la siguiente estructura.

?<search_string>

Por ejemplo, busquemos «python».

?python

Por defecto, la búsqueda se sentará en un resultado fijo. Para ir al siguiente/anterior resultado de búsqueda, utilice las siguientes teclas.

Nota: No olvide pulsar Enter antes de utilizar las siguientes teclas. De lo contrario, ¡el término de búsqueda cambiará!

n – Buscar la siguiente coincidencia
N – Buscar la coincidencia anterior

Esta es sólo la forma básica de buscar. Vamos a probar un método un poco más potente.

/<search_string>>

Aquí, \< se encarga de indicar el inicio de la cadena de búsqueda y /> es para el final de la cadena.

Al igual que en el ejemplo anterior, utiliza n o N (depende de las mayúsculas y minúsculas) para navegar por los resultados de la búsqueda.

La búsqueda también admite el uso de comodines. Por ejemplo, hay un montón de paquetes con extensión «python-«.

Para buscarlos todos, podemos usar «python*». Aquí, el asterisco está diciendo que cualquier cosa después del prefijo «python». Para cualquier búsqueda, el asterisco puede estar en cualquier parte del término de búsqueda. Esté donde esté, le dice a Vim que rellene el hueco con todos los datos posibles de todo el archivo de texto.

/<python*/>

Cuando estés buscando, Vim siempre pondrá el cursor en el carácter inicial de las coincidencias. Esta es la acción por defecto. No te preocupes; Vim permite cambiar la posición por defecto del aterrizaje del cursor.

/python/e

Aquí, la última «e» indica que el cursor llegue al final de la frase coincidente. Usando el siguiente ejemplo, también puedes decir que el cursor llegue por debajo o por encima del resultado de la búsqueda.

/<search_string>/+2

/<search_string>/-3

También es posible desplazar el cursor desde el principio/final de las coincidencias de búsqueda. Por ejemplo, el siguiente comando hará aterrizar el cursor en 3 caracteres al lado del principio.

/<search_string>/s+3

/<search_string>/b+3

Aquí, la «s» indica el comienzo, «+3» indica 3 caracteres desde el comienzo. «b» significa «comienzo». También funciona de forma similar a la «s». A partir de la captura de pantalla, Vim traducirá automáticamente «b» a «s».

Si te interesa desplazarte desde el final de las coincidencias de búsqueda, utiliza «e».

/<search_string/e-2

Aquí tienes otra forma impresionante de realizar una búsqueda en un archivo de texto.

:%s/<search_pattern>//gn

Una explicación detallada del comando está en la siguiente sección del artículo.

Vim replace

Buscar y reemplazar es otra función común e imprescindible para cualquier editor de texto de calidad. Vim, al ser una leyenda, ofrece una forma robusta de encontrar y reemplazar el texto deseado de forma sencilla. El comando de la función es sencillo pero permite hacer trabajos realmente complejos.

:<range> s/<search_string><replace_string><modifier>

Desglosemos cada parte.

  • rango – Define el rango de realizar la función «buscar y reemplazar». Hay 2 valores diferentes.
    • % – Realiza en todo el archivo
    • <Inicio _línea><fin_línea> – Realiza la acción en un determinado conjunto de líneas.
  • Cadena_de_búsqueda – La cadena que necesitas reemplazar.
  • Cadena_de_reemplazo – La nueva cadena que reemplazará a la anterior.
  • Modificador – Determina el comportamiento del reemplazo. Hay un par de valores diferentes.
    • g – Opción «global». Realiza el reemplazo en cada ocurrencia de una línea.
    • gc – Pide confirmación antes de realizar cada reemplazo.
    • gn – Ignora la función de reemplazo y resalta los hallazgos.

Por ejemplo, vamos a reemplazar todos los «python» por «Python3».

:%s/python/Python3/g

Simple, ¿verdad? Ahora, veamos el siguiente.

:%s/python3/gc

Hay un puñado de acciones que puedes elegir. Aunque algunas de ellas son conocidas, otras no. Veamos qué significan.

  • y – Permitir realizar el cambio.
  • n – No permitir realizar el cambio.
  • a – Sustituir todo.
  • q – Salir de la tarea.
  • l – Sólo sustituir esta ocurrencia. Luego, salir.
  • ^E (Ctrl + E) – Desplazarse hacia arriba una pantalla
  • ^Y (Ctrl + Y) – Desplazarse hacia abajo una pantalla
  • Ahora, vamos a probar la parte del rango. En el ejemplo anterior, ya utilizamos el rango «%». Ahora, es el momento de confinar nuestras búsquedas dentro de un número de líneas.

    :200,250 s/python/Python3/g

    La búsqueda comenzará en la línea 200 y terminará en la 250. Entre los límites, toda la entrada «python» se cambiará por «Python3».

    Esta función no se limita a un solo término de búsqueda. ¡Puede incluir múltiples términos de búsqueda!

    :%s/<search_term_1><search_term_2><search_term_3>
    /<replace_string>/g

    Probemos a cambiar todas las entradas «python» y «py» por «Python3».

    :%s/python\|py/Python3/g

    Sensibilidad a las mayúsculas y minúsculas

    Todos los trucos descritos anteriormente en la guía son altamente sensibles a las mayúsculas y minúsculas. Tienes que asegurarte realmente de que siempre que estés trabajando, estás escribiendo los caracteres en el caso correcto. Por ejemplo, «Python», «python», «PYTHON», etc., todas son entradas diferentes.

    Si no recuerdas las mayúsculas y minúsculas, ¡simplemente dile a Vim que no las distinga!

    /<search_term>\c
    :%s/<buscar_término>\c/<reemplazar_término>/g

    Esta insensibilidad también se puede habilitar directamente desde el archivo vimrc.

    set ignorecase

    Aquí tienes otra opción interesante.

    set smartcase

    El «ignorecase» obligará a Vim a ignorar la sensibilidad a las mayúsculas. Sin embargo, si hay alguna letra mayúscula en tu búsqueda, el «smartcase» permitirá que Vim vuelva a distinguir entre mayúsculas y minúsculas.

    Nota: Para que «smartcase» funcione, necesitas primero «ignorecase».

    Pensamientos finales

    Hay un montón de cosas que puedes realizar con Vim. Es como el editor de texto definitivo que necesitarás. Todo lo que necesitas es sólo paciencia y algo de práctica.

    ¡Disfruta!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *