Cambiar contenido dentro de llaves

Tips de productividad para Vim

Usar Vim ya es una cosa, pero usarlo bien y exprimirlo es otra. Personalmente no me considero un experto de Vim, pero me ha ahorrado bastante tiempo y te quiero compartir algunos trucos con Vim.

Básicamente es una lista de tips o recomendaciones de Vim que he aprendido y recomiendo en mi día a día como programador. No es un tutorial de introducción, pero si estás pensando en comenzar a aprender Vim te invito a ver lo que puedes hacer con él y cómo es que Vim ahorra tiempo al usarlo para programar.

Te repito, yo no me considero experto, solo te comparto mi conocimiento.

Nota: si usas Windows mira cómo comenzar a usar Vim aquí.

Cosas básicas y no tan básicas de vim

Antes de mostrarte los tips, te comparto algunas cosas básicas de Vim en caso de que no conozcas mucho sobre el tema. También muestro algunos comandos iniciales, no técnicamente hablando, sino cómo los uso yo.

  • Vim es independiente del lenguaje de programación, incluso puedes escribir tus notas con vim.
  • Vim no solo corre en consola, puede ser integrado en Visual Studio Code y los editores de JetBrains
  • Las posibilidades y combinaciones son infinitas. Solo debes aprender a hablarle a vim
  • Presionar Escape (ESC) es probablemente lo que más realizarás al usar este editor. Siempre que quieras cancelar el comando actual o pasar al modo de navegación presiona ESC. No es pecado presionar ESC, en serio
  • Puedes Ir arriba con k, bajar con j, izquierda con h y derecha con l (L de Luis pero en minúscula). No uses las flechas de navegación, están muy lejos.
  • Puedes usar b para ir hacia atrás más rápido
  • También puedes usar w y e para ir hacia adelante
  • $ va al final de la línea
  • ^ va al inicio de la línea
  • gg va al inicio del documento
  • G va al final del documento
  • dd – Eliminar línea
  • cc – Cambiar toda la línea
  • rX – Reemplazar carácter actual por X
  • s – Reemplazar carácter actual y comenzar a escribir
  • gg=G para indentar el documento. gg es para ir al inicio, = es para identar y G es para indicar el final. En español diría “Ve al inicio (gg), e indenta (=) hasta el fin (G)”
  • . (sí, el punto) para repetir la acción

Ahora sí, pasemos a la guía.

Insertar al inicio y final de línea

La letra I sirve para ir al inicio, poner el modo insert y estar listo para escribir. De manera similar, la letra A sirve para ir al final de la línea.

Insertar al inicio y al final de la línea con Vim
Insertar al inicio y al final de la línea con Vim

En este caso nos ahorramos presionar la flecha de izquierda y derecha varias veces, pues sin importar la posición, navegamos al inicio y final con Vim en pocos movimientos.

Insertar líneas en blanco

Con la letra o, sin importar el lugar en donde estemos, se inserta una nueva línea después de la actual y se comienza a escribir. Con la letra O se inserta una línea en blanco antes de la actual.

Insertar línea
Insertar línea

Me gusta este comando porque te ahorra ir al final y presionar Enter, además de que en varias ocasiones ya inserta la tabulación o indentación adecuada.

Navegación hasta determinado carácter con ‘til

En modo normal, presionar tX en donde X es un carácter nos llevará hasta ese carácter en donde más tarde podemos presionar i para empezar a escribir. También sirve TX (fíjate en que la T es mayúscula) pero para ir en retroceso. Ejemplos:

  1. t“ navegar hasta las comillas siguientes
  2. t) navegar hasta el siguiente paréntesis
Navegación en vim usando til
Navegación en vim usando til

Si bien parece muy simple, sirve para navegar hasta determinado lugar y tomarlo como punto de partida para aplicar otro comando.

ciX: Change inside X

Cambiar lo que hay dentro de X, en donde X es “algo”. Pueden ser comillas ", paréntesis (, corchetes [, llaves {, etcétera.

Cambiar dentro de las llaves

  • Cambiar el contenido dentro de las llaves con ci{ o ci}
  • ci{ también sirve para cambiar valores en las plantillas cuando se usan mostachos {{}}
  • Sirve para cambiar el contenido de arreglos en algunos lenguajes (como Java o C)
Cambiar contenido dentro de llaves
Cambiar contenido dentro de llaves

Me funciona cuando estoy en una plantilla de Angular o Vue y quiero cambiar todo el contenido, o cuando necesito cambiar todo el contenido de una función.

Cambiar dentro de las comillas

  • Cambiar el contenido dentro de las comillas con ci"
  • También se puede hacer ci' para la comilla simple
  • Nota: en la grabación dice Shift + 2, que en mi teclado (latinoamericano) producen las comillas
Cambiar dentro de las comillas
Cambiar dentro de las comillas

Ahora tendrías que haber navegado hasta el final de las comillas y presionar backspace varias veces. O seleccionar con el mouse y borrar la selección. Con Vim te ahorras esto, presionas tres letras y ya está (sin mover los dedos del teclado).

Cambiar dentro de los corchetes

El único uso que me ha tocado es el de cambiar el contenido de arreglos que tienen la sintaxis [] como Python, PHP o JavaScript.

Puede ser con ci[ o ci]

Nota: en mi teclado, Shift + } colocan el corchete ]

Cambiar dentro de los corchetes
Cambiar dentro de los corchetes

ctX – Change ‘til X

Cambiar lo que hay desde la posición actual hasta X, en donde X es “algo”. Pueden ser comillas ", paréntesis, corchetes [, llaves {, puntos o cualquier carácter.

  • Puedes cambiar desde la posición actual hasta lo que quieras (dentro de la línea)
  • Por ejemplo, cambiar hasta el cierre de comillas con ct"
  • Cambiar hasta el punto con ct.
  • Cambiar hasta los paréntesis con ct)
  • Cambiar hasta una letra
  • Igualmente sirve la T en mayúscula. Por ejemplo cambiar hasta la anterior comilla sería cT'

Sin la t igual puedes cambiar usando los caracteres especiales como:

  • Cambiar hasta el final con c$
  • Cambiar hasta el inicio con c^

Aquí el ejemplo:

Cambiar hasta determinado carácter
Cambiar hasta determinado carácter

Para la primer línea habrías seleccionado con el mouse, manteniendo shift con las flechas de dirección, etcétera. Con vim ahorras eso y le hablas al editor para que haga lo que quieres con pocas teclas presionadas.

En el segundo caso podemos detectar un carácter y cambiar solo hasta él. Y en el final, podemos ver cómo podemos cambiar todos los argumentos de una función desde la posición actual hasta el final.

dtX – Delete til X

Lo mismo que con change, pero ahora elimina. No pondré ejemplos pues sería repetitivo.

Repetir la acción con el punto

Realizar la última modificación hecha (no navegación, solo los cambios hechos). Recuerda que cada que presionas ESC se cambia el modo y se eliminan “los recuerdos” así que el . solo sirve para la última acción hecha desde el último ESC.

En este caso estoy eliminando todo lo que hay hasta el cierre de comillas con dt". Para no hacer eso por cada línea, lo hago una vez y luego básicamente presiono j para bajar la línea y luego el . para repetir la misma acción.

Repetición de modificaciones en vim con el punto
Repetición de modificaciones en vim con el punto

T de tag – Podemos usar la t para referirnos a la etiqueta

Ahora la t es como $ o ^, es decir, no es una letra, es algo. Y ese algo es una etiqueta XML o HTML. Podemos:

  • Cambiar lo que hay dentro de la etiqueta con cit
Cambiar contenido dentro de etiqueta
Cambiar contenido dentro de etiqueta
  • Eliminar lo que hay dentro de la etiqueta con dit
  • Cambiar alrededor de la etiqueta con cat (change around tag)
Cambiar alrededor de etiqueta
Cambiar alrededor de etiqueta
  • Eliminar alrededor de la etiqueta con dat
  • Copiar la etiqueta con yat (yank around tag)

Nota: en algunos casos esta “sintaxis” no se reconoce. Por ejemplo en repl.it.

Números

Podemos usar los números para repetir la acción determinada cantidad de veces. Por ejemplo:

  • Bajar 5 líneas con 5j
  • Reemplazar 5 caracteres por la M con 5rM
  • Eliminar 3 líneas con 3dd
  • Cambiar 3 caracteres y pasar al modo inserción con 3s
  • Repetir 5 veces la última acción con 5.

Aquí un gif:

Números con Vim - Repetir acciones
Números con Vim – Repetir acciones

Conclusión

Aunque parezca repetitivo, simple o aburrido estoy seguro de que varias veces cuando programas has tenido que presionar una tecla varias veces para navegar hasta determinado lugar, o usar el mouse para posicionar el cursor en determinada posición.

Vim ahorra eso y hace que todo se haga con el teclado. No es un pecado usar el mouse ni las flechas de navegación, pero verás que una vez que uses y domines vim, lo demás te parecerá demasiado lento.

Por cierto, he grabado los Gifs con ScreenToGif. Te dejo dos guías de Vim que puedes usar para consulta:

Mira más sobre vim aquí, y sobre productividad aquí. Te dejo el código (por si quieres practicar) y los GIFs en mi GitHub.

Encantado de ayudarte


Estoy disponible para trabajar en tu proyecto, modificar el programa del post o realizar tu tarea pendiente, no dudes en ponerte en contacto conmigo.

No te pierdas ninguno de mis posts

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario