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í.
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.
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 seriok
, 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.b
para ir hacia atrás más rápidow
y e
para ir hacia adelante$
va al final de la línea^
va al inicio de la líneagg
va al inicio del documentoG
va al final del documentodd
– Eliminar líneacc
– Cambiar toda la línearX
– Reemplazar carácter actual por X
s
– Reemplazar carácter actual y comenzar a escribirgg=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ónAhora sí, pasemos a la guía.
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.
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.
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.
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.
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:
Si bien parece muy simple, sirve para navegar hasta determinado lugar y tomarlo como punto de partida para aplicar otro comando.
Cambiar lo que hay dentro de X
, en donde X es “algo”. Pueden ser comillas "
, paréntesis (
, corchetes [
, llaves {
, etcétera.
ci{
o ci}
ci{
también sirve para cambiar valores en las plantillas cuando se usan mostachos {{}}
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.
ci"
ci'
para la comilla simpleShift + 2
, que en mi teclado (latinoamericano) producen las comillasAhora 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).
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 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.
ct"
ct.
ct)
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:
c$
c^
Aquí el ejemplo:
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.
Lo mismo que con change, pero ahora elimina. No pondré ejemplos pues sería repetitivo.
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.
Ahora la t
es como $
o ^
, es decir, no es una letra, es algo. Y ese algo es una etiqueta XML o HTML. Podemos:
cit
dit
cat
(change around tag)dat
yat
(yank around tag)Nota: en algunos casos esta “sintaxis” no se reconoce.
Podemos usar los números para repetir la acción determinada cantidad de veces. Por ejemplo:
5j
5rM
3dd
3s
5.
Aquí un gif:
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.
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Ayer estaba editando unos archivos que son servidos con el servidor Apache y al visitarlos…
Esta web usa cookies.