Guía definitiva para Vim y Neovim: instalación, comandos y trucos

Curso de Introducción a la Terminal y Línea de Comandos

Toma las primeras clases gratis

COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE

Un día estás concentrada resolviendo el código más complejo que nunca antes has resuelto y por fin la iluminación llegó a ti, lo tienes, la respuesta está en la punta de tus dedos, los despegas un segundo del teclado para cambiar el cursor de línea y… lo perdiste, la iluminación se fue y olvidaste por completo la maravilla que tu mente acababa de descubrir.

Eso no te hubiera pasado si trabajaras con Vim, es lo que te dice esa vocecita molesta de tu cabeza a la que algunos llaman Pepegrillo.

Para que a ti no te pase y domines Vim al derecho y al revés, descubre sus características y funcionamiento junto conmigo.

Qué es Vim

Si queremos entender qué es Vim primero entendamos a su predecesor: Vi.

Vi es un editor bastante antiguo que nació para funcionar dentro de las terminales y una de sus características principal es que funciona a partir de modos, es decir, tiene un modo para insertar texto y otro para ejecutar acciones como buscar dentro del archivo.

Vim se vuelve la evolución de ese editor inicial y se convierte en uno de los editores más populares para administrar y trabajar en servidores, pero no solo eso, entre desarrolladores también se vuelve muy popular para trabajar en su día a día. Se volvió tan popular entre desarrolladores que hoy en día puedes encontrar plugins para integrar Vim en casi todos los editores e IDE, por ejemplo, Visual Studio Code.

Por otro lado, también tenemos a Neovim es un fork del proyecto Vim, que ofrece un código fuente más limpio y según las palabras de sus desarrolladores, trae lo bueno de Vim con una mejor experiencia fuera de la caja para el usuario, por ejemplo, soporta resaltado de sintaxis…

Por qué usar Vim

Los superpoderes de Vim los descubrimos al instante en que podemos navegar por todo nuestros archivos sin la necesidad de despegar las manos del teclado, esto es porque nos ofrece una formas de interactuar con el texto completamente nueva (para nosotros los jovenzuelos que crecimos en la época de Sublime Text y Visual Studio Code) que aporta muchísima fluidez.

Un usuario hábil con Vim puede hacer magía al editar textos, ya que Vim:

  • Te vuelve más rápido.
  • Mejora tu precisión.
  • Reduce la interfaz entre tu cerebro y el ordenador.
  • Te vuelve más cool cuando compartes tu pantalla y te ven usándolo 😎.
  • Te olvidas de utilizar el ratón casi que para cualquier cosa, el teclado manda.

Vim es para los programadores que quieren subir de nivel. En manos de un experto, Vim destroza el texto a la velocidad del pensamiento.
Drew Neil, autor de Practical Vim

Me convenciste… ¿Cómo empiezo?

Primero hay que validar que lo tengamos instalado, si estas en un entorno UNIX o Linux, seguramente ya esté instalado en tu terminal de confianza.

Abre tu terminal y escribe vim, sin olvidarte de dar ENTER para ejecutar el comando. Si te sale una pantalla como la siguiente es que ya lo tienes listo y puedes empezar a trabajar con Vim.

Untitled.png

En caso de que el resultado de tu terminal no sea como en la imagen anterior toca instalarlo. En la página oficial de Vim podremos descargarlo para el sistema operativo de nuestra preferencia.

Una vez instalado podrás acceder a cualquier archivo usando el comando vim seguido del directorio donde se encuentra el archivo que quieras editar.

nvim downloads/index.js
Untitled 1.png

Neovim

Si quieres probar Neovim, ese hermano más joven de Vim, también lo podemos descargar desde su página oficial.

En el caso de ser usuario macOS la instalación se puede realizar a través de Homebrew.

brew install neovim

En Windows necesitas tener Windows 8 o superior y la instalación la puedes dejar en manos de Scoop, un gestor de paquetes para Windows.

scoop install neovim

Y si estas en Linux, la instalación dependerá de tu distribución. Sí estas en una distribución basa en Debian apt-get es tu chico de confianza.

sudo apt-get install neovim

Una vez instalado, para abrir cualquier archivo usa el comando nvim seguido del directorio donde se encuentra tu archivo.

nvim downloads/index.js
Untitled 2.png

Visual Studio Code

Sí como lees podemos instalar Vim en Visual Studio Code. Por un lado, tenemos a Vim, un fantástico editor de texto plano que aumenta la productividad hacía límites insospechados y, por otro lado, está Visual Studio Code, el editor favorito de muchos y con una capacidad de personalización facilísima.

Cuando ambos trabajan en conjunto tenemos la experiencia de desarrollo de Visual Studio Code con las increíbles características propias de Vim, dándonos la experiencia casi perfecta.

¿Cómo llevas la maravilla de Vim al interior de Visual Studio Code? Lo consigues con cuatro sencillos pasos:

  1. Abre Visual Studio Code.
  2. Ve a extensiones.
  3. Busca Vim.
  4. Instala el primero de la lista.
Untitled 3.png

Una vez instalado, es posible que tengas que reiniciar el editor para que los cambios surtan efecto. Si al abrir un archivo de código de uno de tus proyectos el cursor parece un rectángulo, lo has hecho, bienvenida a Vim.

Untitled 4.png

En lo personal prefiero trabajar de esta forma, con Vim instalado dentro de Visual Studio Code, siéntente libre de usarlo como prefieras 💚.

Los modos

Al intentar escribir en un archivo podrás notar que no pasa nada o no pasa exactamente lo que tú esperas que pase, esto es porque el modo por defecto al abrir un archivo es el modo normal.

Vim tiene cuatro modos que son:

  • Modo normal: permite al usuario navegar por el archivo.
Untitled 5.png
  • Modo insert: permite editar el texto del archivo, añadir nuevo contenido o eliminarlo.

    Se accede a este modo presionando la tecla i desde el modo NORMAL.

    Si queremos salir de este modo basta con presionar ESC.

Untitled 6.png
  • Modo visual: es utilizado para seleccionar texto.

    Se accede a este modo con la tecla v desde el modo NORMAL.

    Si queremos salir de este modo basta con presionar ESC.

Untitled 7.png
  • Modo comando: permite realizar acciones administrativas sobre el archivo, como lo puede ser buscar en el texto, salir, guardar, borrar líneas y más.

    Se accede a este modo escribiendo : seguido del comando a ejecutar.

    Comando Acción
    :q Sale del archivo, siempre y cuando no haya cambios pendientes de guardar.
    :q! Sale del archivo descartando los cambios sin guardar.
    :w Guarda los cambios del archivo, pero se continúa editando.
    :wq Guarda los cambios y sale de Vim.
Untitled 8.png

Moviéndonos por los archivos

Ahora que ya sabemos cambiar entre los diferentes modos de Vim, veamos cómo movernos a lo largo de un archivo. Si estamos en el modo normal al presionar algunas teclas no sucede lo esperado, ya que este modo es un modo lectura y lo podemos usar para revisar todo un archivo sin cambiar nada.

Si estamos en Vim las teclas de dirección no funcionarán, por otro lado, dentro de Visual Studio Code sí funcionan, pero supongamos que no y aprendamos a movernos como sería en Vim nativo para ser unas ases con esta herramienta.

En Vim nos movemos con HJKL, donde:

  • H es a la izquierda.
  • J es hacia abajo.
  • K es hacia arriba.
  • L es a la derecha.

Utilizar esta combinación de teclas para moverse por Vim proporciona una navegación más ágil dentro el modo normal por lo cual a pesar de que Visual Studio Code soporta el movimiento con flechas yo te recomienda que te familiarices con esta combinación.

Si quieres acostumbrarte a navegar con HJKL, te recomiendo este jueguito llamado VIM Adventures donde te moverás usando esta combinación de teclas para completar cada nivel.

Una vez que dominas estos movimientos podrás trabajar con comandos un poco más complejos, llamados motions, que nos harán quedar como The Flash cuando estemos en Vim.

Antes de empezar a ver los motions que tiene Vim, déjame hablarte sobre una característica particular y es que si has trabajado con otros editores estarás acostumbrada a usar combinaciones de teclas, por ejemplo, CMD + c para copiar y CMD + v para pegar. A esto se le conoce como chords y aunque Vim también los utiliza, está basado en melodies.

Las melodies no es otra cosa que presionar una tecla después de otra, por lo que si en Vim tenemos el comando ge significa que primero hay que presionar la g y después la e.

Una vez explicado esto, continuemos.

Palabra por palabra

Entre los motions de Vim existe uno que permite que el cursor se mueva de forma horizontal desde la palabra en que se encuentra el cursor hasta el inicio de la siguiente.

  • w salta de una palabra al inicio de la siguiente, o sea, de izquierda a derecha.
  • b tiene la misma acción que w pero en sentido opuesto.

Por otro lado si no queremos ir al inicio de la siguiente sino al final también tenemos motions para esto.

  • e salta de una palabra al final de la siguiente, o sea, de izquierda a derecha.
  • ge tiene la misma acción que w pero en sentido opuesto.

Una palabra en Vim incluye únicamente letras y números, no están considerados los caracteres especiales. Si queremos que los caracteres especiales sean considerados parte de una palabra entonces utilizaremos las variantes en mayúsculas de las teclas anteriores W, B, E y GE.

Pero Alex… ¿Cómo uso esas teclas en mayúsculas?

Tenemos dos opciones para esto:

  1. Activar las mayúsculas de nuestro teclado con caps locks.
  2. Usar la combinación shift + tecla

Y listo, con eso incluyes caracteres especiales al moverte entre palabras.

Buscando un caracter específico

Vim incluye movimientos horizontales a caracteres específicos, esto se logra con la tecla f seguida del caracter que estemos buscando. Por ejemplo: fl llevará el cursor a la siguiente l de la línea de código.

Después de encontrar la primera ocurrencia, con la tecla ; el cursor se moverá a la siguiente y con , se moverá a la ocurrencia anterior.

Por otro lado si quieres mover el cursor justo antes de la aparición del caracter que estas buscando, en lugar de usar f{caracter}, utiliza t{caracter}.

Movimientos horizontales extremos

Ya sabes ir palabra por palabra o a un caracter en específico, pero ¿qué pasa si quieres ir hasta el final de una línea o al principio en un solo movimiento?

Bueno Vim tiene los comandos para que vayas a donde quieras dentro de tus archivos:

  • 0 desplaza el cursor al primer carácter de una línea.
  • $ desplaza el cursor al final de la línea
  • ^ desplaza el cursor al primer caracter que no sea vacío de una línea.
  • g_ desplaza el cursos al último caracter que no sea vacío de una línea.

Yendo de una línea a otra

Ya te hablé de los movimientos horizontales, ahora veamos como ir de una línea a otra. Si bien tenemos k y j para ir de arriba a abajo como si fueran nuestras flechas de dirección Vim ofrece las siguientes opciones:

  • } salta párrafos enteros de arriba hacía abajo.
  • { salta igualmente párrafos pero en sentido opuesto, o sea, de abajo hacia arriba.
  • CTRL + D mueve la vista del archivo media página hacia abajo.
  • CTRL + U mueve la vista del archivo media página hacia arriba.

Precisión de arriba hacia abajo

Vim permite buscar patrones dentro de los archivos, esto permite buscar coincidencias de palabras como si utilizáramos el find del navegador. Como todos los comandos en Vim, está la opción para buscar hacia adelante /{pattern} o buscar hacia atrás ?{pattern}.

A medida que se escribe el patrón, las palabras que coincidan con este resaltarán y al dar ENTER el cursor saltará a la primera coincidencia y podrás editar si así lo requieres.

Untitled 9.png

Al usar los patrones para buscar también se puede usar n que tiene como acción saltar a la siguiente coincidencia y N para la coincidencia anterior.

Como a Vim le encanta que seamos rápidos y aprovechemos el tiempo, puedes usar / ENTER o ? ENTER para ejecutar la última búsqueda nuevamente.

Por último puedes utilizar * para buscar la palabra en la que se encuentra el cursor.

Contadores

Los contadores son números que se anteponen a un comando para multiplicar su efecto, por ejemplo: 4w mueve el cursor cuatro palabras hacia adelante. Puedes utilizar {count}motion para multiplicar un comando N cantidad de veces.

Definiciones

El comando gd salta a la definición de lo que sea que esté debajo del cursor, en este caso la función helloWorld().

Untitled 10.png

Por otro lado el comando gf es utilizado para moverse a un archivo en una importación.

Movimientos bonus

Repasando, en este momento ya tienes maestría para moverte en Vim, sabes ir de palabra en palabra, buscar caracteres y patrones, ir a las definiciones y también hacer movimientos verticales. Ahora revisemos un par de trucos adicionales para que te muevas a lo largo de los archivos.

  • gg mueve el cursos al inicio del archivo.
  • {#line}gg mueve el cursos a la línea indicada.
  • G mueve el cursos al final del archivo.

## Operadores

Los motions que has estado aprendiendo no son solo para moverse a través de los diferentes archivos en los que trabajas, también pueden usarse en conjunto con los operadores para editar el tu código en el modo Normal.

Es por esto que tenemos la siguiente estructura:

Untitled 11.png
  • Operador: es la acción a realizar como puede ser editar, borrar, etcétera.
  • Contador: establece cuántas veces se va a realizar una acción.
  • Motion: representa una fracción de texto al que se le aplicará la acción definida por el operador.

Por ejemplo: d5j borra las siguientes cinco lineas hacia abajo desde la posición del cursor.

Los operadores que encontramos dentro de Vim son:

  • Delete d este operador se utiliza para borrar el contenido desde la posición actual del cursor hasta el final de la línea
  • Change c este operador borra y cambia al modo insert habilitando la escritura.
  • Yank y este operador es lo que en otros editores conoces como copiar.
  • Put p este operador es conocido también en otros editores como pegar.

Si al usar estos operadores los duplicamos ejecutan su acción en toda la línea, por ejemplo dd borra toda la línea sobre la que se encuentra el cursor. Por otro lado si el operador lo utilizas en mayúsculas tomará acción desde la posición del cursor, o sea, al usar D borra desde el cursor al final de la línea.

Hay un operador considerado mágico en Vim, este es el operador . que permite repetir el último cambio realizado. Por ejemplo: imagina que ejecutas dd para borrar un línea, si quieres repetir esta acción simplemente usas . y la acción vuelve a suceder.

Edición con objetos de texto

Lo que en Vim se conoce como objetos de texto se pueden entender como las entidades de un modelo de dominio de documento… pero ¿de qué se compone un documento? Bueno, se compone de palabras, frases, párrafos, etiquetas, etcétera y todo estos son objetos de texto.

La forma en que se especifica un objeto de texto dentro de un comando es combinando la a que representa la unión entre la acción y el objeto incluyendo espacios o i que representa la misma unión pero sin considerar los espacios en blanco.

Los objetos de texto se representan como:

  • w para palabras
  • s para frases
  • ’ o " para comillas
  • p para párrafos
  • b para bloques entre paréntesis
  • B para bloques entre llaves
  • t para etiquetas

Con esto puedes obtener las siguientes combinaciones:

  • daw para borrar una palabra.
  • das para borrar una frase.
  • da" para borrar algo entre comillas dobles, incluyendo las comillas.
  • ci" para cambiar algo entre comillas dobles.
  • dap para borrar un párrafo
  • dab da( o da) para borrar un bloque entre paréntesis.
  • daB da{ o da} para borrar un bloque entre llaves
  • dat para borrar una etiqueta HTML.
  • cit para cambiar el contenido de una etiqueta HTML.

Veamos un ejemplo, digamos que quieres cambiar el contenido de la siguiente cadena:

const saludo = 'Aprendiendo Vim en Platzi'

Si utilizas la combinación ci'Hola ESC obtendrás:

const saludo = 'Hola'

Por cosas como estas es que Vim ofrece una mayor productividad, ya que con sencillas combinaciones se obtienen poderosas acciones.

Listos para escribir

Ahora que ya dominas como moverte por Vim toca escribir algo de código y si recuerdas los modos de los que hablamos al inicio para escribir tienes que estar en el modo insert.

Hay dos comandos principales que ponen a Vim en el modo de inserción: i para insertar y a para anexar. La diferencia entre ambos comandos es que i te pone en modo de inserción antes del cursor. Mientras que a te pone en modo inserción después del cursor.

En este momento debes de sospechar que tanto i como a tienen su contraparte en mayúsculas como otros tantos comandos en Vim y sí, tienes razón. I inicia el modo de inserción al principio de la línea actual mientras que A lo hace al final de la línea.

Los dos comandos que acabamos de revisar aunque son los principales para comenzar a escribir en Vim no son los únicos, también puedes usar:

  • o inserta una nueva línea debajo de donde se encuentra el cursor y se queda listo para escribir.
  • O inserta una nueva línea encima de la actual y también se queda listo para empezar a ingresar texto.
  • gi inicia el modo de inserción en el último lugar donde dejaste de estar en modo de inserción. Imagina que dejaste el modo de inserción por error y quieres volver al mismo punto donde lo dejaste, bueno, para esa esa situación este comando será tu mejor amigo.

Pero esto no es todo, dentro del modo de inserción hay comandos útiles que te ayudarán a corregir typos sin tener que regresar al modo normal.

  • CTRL + h borra el último carácter escrito.
  • CTRL + w borra la última palabra escrita.
  • CTRL + u borra la última línea escrita.

Una vez que esta estás en el modo de inserción Vim se comporta casi como cualquier otro editor de texto, estando en este modo si deseas volver al modo norma basta con presionar ESC.

Explorando el modo visual

El modo visual de Vim equivale en otro editor al momento en que quieres seleccionar texto y lo haces con el ratón, pero obviamente estando en Vim no quieres usar el ratón, para eso están los motions. Este modo lo encuentro muy útil ya que te da una respuesta visual mientras vas seleccionando el texto.

Existen tres formas de iniciar el modo visual, que son:

  1. v inicia el modo visual por carácter, esto quiere decir que cuando te desplazas se va seleccionando carácter por carácter.
  2. V inicia el modo visual línea a línea, lo cual quiere decir que al desplazarse se seleccionan líneas completas.
  3. CTRL + V inicial el modo visual por bloque, en este modo al desplazarse se van seleccionado bloques de texto.

Hay que tener en cuenta que el modo visual funciona de forma opuesta al modo normal. Esto significa que mientras en el modo normal primero se define el operador y luego el texto al que se le aplica la acción, en el modo visual primero se selecciona el texto y luego se escribe el operador.

Trabajar en más de un archivo a la vez

Vim soporta dividir pantalla con más de un archivo y también pestañas. Tiene la versatilidad de que permite crear, redimensionar, reorganizar y moverte entre las divisiones y las pestañas de forma bastante sencilla.

Divisiones de pantalla

Dividir tu espacio de trabajo nunca había sido tan sencillo, puedes dividir tu espacio de trabajo en ventanas divididas de forma vertical y horizontal.

Para dividir el espacio de trabajo tenemos dos comandos:

  1. :sp {archivo} genera una división horizontal.
  2. :vsp {archivo} genera una división vertical.

La combinación de teclas (CTRL + W) + hjkl permite que te muevas entre cada archivo.

Pestañas

Si prefieres trabajar en pestañas en lugar de dividir la pantalla los comandos para lograr esto son:

  • :tabnew {archivo} para abrir el archivo en una nueva pestaña.
  • :tabn para ir a la siguiente pestaña.
  • :tabp para ir a la pestaña anterior.

Key maps útiles en Visual Studio Code

El equipo de VSCodeVim creó algunas combinaciones super útiles y únicas para VSCode:

  • gb en el modo de inserción añade otro cursor en la siguiente palabra que coincida con la palabra que está en el cursor actual.
  • af en el modo visual permite seleccionar bloques de texto cada vez más grandes.
  • gh es el equivalente a pasar por encima el ratón en la posición que se encuentra el cursor. Este comando te permite disfrutar de características como mensajes de error, tipos, etcétera que solo están disponibles a través del ratón.

Descubre más acerca de las direcciones MAC

¿Y ahora que sigue?

Ahora que tienes las herramientas para empezar tu camino con este gran editor, es momento de ensuciarse las manos y practicar, practicar, practicar. Te recomiendo tomar nuestro curso de terminal y línea de comandos con Enrique Devars y así pulir aún más tus habilidades. Lo mejor de todo: puedes empezarlo sin costo.

Curso de Introducción a la Terminal y Línea de Comandos

Toma las primeras clases gratis

COMPARTE ESTE ARTÍCULO Y MUESTRA LO QUE APRENDISTE

0 Comentarios

para escribir tu comentario

Artículos relacionados