Más allá de la edición básica en Vim

Hoy continuamos con el curso de Vim para Julia y para quien lo quiera aprovechar. Si en las últimas entradas estuvimos aprendiendo acerca de los comandos de edición, hoy entramos en destrezas más avanzadas que van más allá de la pura edición básica de texto. ¡Vamos allá!

Hacer un breve inciso antes de empezar para saludar a Kenneth y a Pedro, antiguos lectores de ESDLV, y que ayer por la tarde dejaron sendos comentarios anunciando su presencia. ¡Qué alegría verlos de nuevo por aquí!

Ahora, continuemos aprendiendo acerca de las bondades y posibilidades de Vim.

Localizando y moviendo el cursor

La edición de textos es como la vida: a veces nos perdemos. Afortunadamente, siempre nos podemos volver a encontrar si estamos dispuestos a ello. En Vim es fácil:

<CTRL> g

nos abre el “mapa” de Vim y, en la parte inferior izquierda, nos muestra:

  • El fichero que estamos editando
  • La línea en la que estamos del total de líneas del fichero
  • El porcentaje del archivo recorrido
  • La columna en la que se encuentra el cursor

Para ir al final del archivo:

G

Go. Pero a lo grande: hasta el final.

Para ir al principio del fichero:

gg

Je je, vamos al principio del fichero. ¡Qué risa!

Para ir a una línea en particular, introduce el número de línea y pulsa G (mayúscula) después en una combinación letal. Por ejemplo:

42G

nos lleva volando a la línea 42, donde se nos revela el sentido de la vida, del Universo y de todo lo demás. ¡Go!

Encontrando cosas

Naturalmente, en ocasiones necesitaremos encontrar cosas en el interior del texto. Vim tiene una manera sencilla y directa de buscar y encontrar.

En modo comando, introduce

/

Verás que ese símbolo aparece en la parte inferior izquierda de la pantalla junto con el cursor, esperando a que añadas algo más. Añade lo que quieres buscar y pulsa Enter. El cursor se desplazará hasta la primera coincidencia.

Para repetir la búsqueda, pulsa

n

Eso hará la búsqueda nuevamente.

Para buscar lo mismo hacia atrás, introduce

N

Si lo que quieres es, en primera instancia, hacer la búsqueda hacia atrás en lugar de hacia delante, usa

?

en lugar de /.

Finalmente, para regresar al lugar desde el que iniciaste la búsqueda:

<CTRL> o

Eso te devuelve al origen.

Haciendo búsquedas poderosas

Vamos a ver todavía un par de cosas más relacionadas con las búsquedas antes de terminar por hoy.

Encontrando parejas de paréntesis

Encontrar parejas de paréntesis es una de las tareas recurrentes de todo programador. Un paréntesis por cerrar puede hacer la diferencia entre una satisfacción inmediata y diez minutos de aprender a gestionar la frustración. Vim tiene, recién sacado de la caja, una manera directa de solventar esto.

Pon el cursor sobre un paréntesis e introduce

%

Esto llevará el cursor a la pareja complementaria. Útil, ¿eh?

El famoso comando de sustitución

Digo famoso porque, en los foros, a menudo se usa el formato Vim cuando se quiere indicar a alguien que haga una sustitución en un texto de una cierta manera. Conocer esto es una de esas cosas que distinguen a los pros de los aficionados. Yo soy un aficionado que quiere parecer pro, de ahí que conozca esto.

Agárrate, porque aquí viene mucha potencia pero también más complejidad.

Sustitución de una coincidencia

Supongamos que tenemos una línea en la que queremos sustituir la primera coincidencia palabra “viejo” por “nuevo”. El comando a introducir desde el modo comando es:

:s/viejo/nuevo

Es decir: sustituye viejo por nuevo. Esto no es fácil de recordar así de entrada, de modo que requiere algo de práctica.

Además, nota que este comando solamente sustituye la primera coincidencia en la línea.

El comando de sustitución permite algunas variaciones que ofrecen posibilidades extendidas:

Sustituir globalmente en la línea

:s/viejo/nuevo/g

Esto hará la situación de todas las coincidencias en la misma línea, globalmente, pero en la misma línea.

Sustituir en un rango de líneas

Si queremos hacer esta sustitución solamente en una parte del fichero, debemos introducir el rango de líneas. Por ejemplo, para hacer nuestra sustitución solamente entre las líneas 100 y 200 del archivo:

:100,200s/viejo/nuevo/g

Sustituir en todo el fichero

Si queremos hacer la sustitución en todo el fichero, debemos añadir un símbolo de porcentaje entre los dos puntos y la s:

:%s/viejo/nuevo/g

Yo lo recuerdo porque el % equivale a * en muchas sintaxis, lo que viene a decir “Todo lo que coincida”. Tal vez eso te sirva. Si no, construye ahora algo que sí que lo haga.

Sustituir preguntando

Finalmente, si queremos que nos pregunte cada vez, para cada coincidencia, si queremos hacer la sustitución:

:%s/viejo/nuevo/gc

Eso nos permitirá cuestionarnos la sustitución.

Despedida y cierre

Now, since I noticed some of you are learning english, I thought it would be a good exercise to add a little piece in that language. What do you think of it? I think it can make a good practice. Let us practice and learn english. English is easy and fun!

How is this Vim course so far? Do you have any feedback? Are you practicing? Do you need any help? Are you missing anything? Please let me know.

See you tomorrow!

3

#buscar#cursor#encontrar#sustituciones#vim

Respuestas

  1. Dani - 16 de diciembre de 2020 @ 07:38

    Este trocito en inglés sí lo he entendido perfectamente 🙂

    Gracias!

    Lo intento: This part in English, I understand very good 🙂

    Thank you!

    • Javier - 16 de diciembre de 2020 @ 16:28

      Hey, that’s good! I am glad, that you understood it very well. Good job!

      And that must be the first comment in english ever in the history of this blog. So that is some kind of record and also very brave!

      You are welcome 🙂

      • Dani - 17 de diciembre de 2020 @ 07:29

        I´m very happy for that!

        something is something! jaja

        😀

        • Javier - 17 de diciembre de 2020 @ 17:46

          Ja ja! Eso me suena a “for if the flies” (por si las moscas).

          Me parece que los ingleses dicen: That’s something! (Ya es algo!).

          Por cierto, yo también acepto correcciones.

  2. Ed - 17 de diciembre de 2020 @ 00:31

    Décadas usando vim, y siempre aprendo algún comando nuevo en EDSLV 🙂

    • Javier - 17 de diciembre de 2020 @ 17:42

      Jajaja, a mí me está pasando lo mismo 🙂

Deja una respuesta

Tu direción de email permanecerá oculta.
Los campos requeridos tienen un asterisco (*).