Original article: How to Use Vim – Tutorial for Beginners

Vim es uno de los editores de texto más populares entre los usuarios de Linux. Los administradores de sistemas Linux lo prefieren especialmente frente a otros editores.

En este artículo, aprenderá mucho sobre Vim y verá cómo puede comenzar a usar Vim rápidamente como si fuera un desarrollador.

¿Qué es Vim?

Vim es un acrónimo de Vi IMproved. Es un editor de texto multiplataforma gratuito y de código abierto. Fue lanzado por primera vez por Bram Moolenaar en 1991 para variantes de UNIX.

Vim se basa en el editor Vi original, que fue creado por Bill Joy en 1976. En los años 90, comenzó a quedar claro que a Vi le faltaban algunas funciones en comparación con el editor Emacs. Así que Bram implementó muchas funciones que faltaban y lo lanzó con el nombre de Vim.

Cómo instalar Vim

Vim se ejecuta en varias plataformas, como Windows, Linux y Mac.

Para instalar Vim en Windows, descargue el archivo ejecutable del sitio de Vim y ejecútelo. Siga las instrucciones que se muestran en la pantalla y estará listo para comenzar.

Vim viene preinstalado en la mayoría de los sistemas operativos *nix. Pero si no está instalado en su sistema, puede instalarlo con un administrador de paquetes de su elección.

Aquí está el comando de instalación para sistemas operativos basados en Debian:

sudo apt-get update
sudo apt-get install vim
Terminal commands to install Vim on Debian based operating systems

Para asegurarse de que esté instalado correctamente, ejecute which vim y debería obtener /usr/bin/vim en su output.

Cómo iniciar con Vim

Puede comenzar con Vim escribiendo su nombre en la terminal de esta manera:

image-274
Start Vim

Una vez que ingrese el comando anterior, podrá ver una pantalla que muestra información sobre Vim y algunas instrucciones para encontrar ayuda y salir de Vim.

image-276
Vim Introduction

Modos de Vim

Debe conocer el concepto más importante en Vim antes de continuar: los modos en Vim.

Todo en Vim se considera un modo. Puedes lograr lo que quieras si entiendes los modos en Vim. Hay muchos modos en Vim. Pero, veremos los 4 modos más importantes.

Ellos son:

  1. Modo Comando
  2. Modo Línea de Comandos
  3. Modo Insertar
  4. Modo Visual

Explorémoslos uno por uno.

¿Qué es el Modo Comando?

Este es el modo predeterminado (también llamado modo Normal) en Vim. Siempre que se inicie Vim, estarás en este modo. Puede cambiar a cualquier modo desde este modo. No puede hacer esto en ningún otro modo.

Básicamente, para cambiar de un modo a otro, primero debe ingresar al Modo Comando y luego navegar al otro modo. Los comandos que ejecuta sin ningún prefijo (dos puntos) indican que está ejecutando el comando en Modo Comando.

¿Qué es el Modo Insertar?

Este modo se utiliza para editar el contenido del archivo. Puede cambiar al Modo  Insertar presionando i desde el Modo Comando. Puede usar la tecla Esc para volver al Modo Comando.

¿Qué es el Modo Línea de Comandos?

Puede usar este modo para jugar con algunos comandos. Pero los comandos en este modo tienen el prefijo de dos puntos (:). Puede cambiar a este modo presionando : (dos puntos) en el Modo Comando.

¿Qué es el Modo Visual?

Utiliza este modo para seleccionar visualmente algún texto y ejecutar comandos sobre esa sección de código. Puede cambiar a este modo presionando v desde el Modo Comando.

Los 4 modos anteriores son suficientes para realizar un conjunto básico de operaciones de archivo en Vim.

Ok, terminamos con la teoría. Exploremos Vim de manera práctica.

Operaciones comunes del editor de texto en Vim

Crear un nuevo archivo con Vim es simple. Puedes hacerlo desde el Modo Línea de Comandos.

Ejecute el siguiente comando para crear un nuevo archivo:

:edit sample.txt
Command to create (if it doesn't exist)/edit a file

El comando anterior abre un archivo sample.txt en Modo de Edición, si existe, y crea un nuevo archivo de lo contrario.

image-278
Create a new file with the name sample.txt

Después de ejecutar ese comando, estará en el Modo Comando (como se muestra en la siguiente captura de pantalla) y no podrá ingresar ningún texto:

image-279
Command mode showing new file created

Para agregar algo de texto al archivo creado, presione i en el teclado. Utiliza el comando i para ingresar texto en el archivo. Una vez que presione i, podrá ver que ingresó al Modo Insertar en Vim mirando la parte inferior izquierda del archivo.

image-280
Insert mode in sample.txt file in Vim

En este modo, puede escribir lo que quiera en el archivo.

image-281
Added some content in sample.txt file

Hemos terminado de escribir nuestro contenido. Y ahora querremos guardar el archivo. Si no llegas a guardar y simplemente cierras la terminal en este punto, todo su contenido se perderá.

Cómo guardar un archivo

Para guardar un archivo, debe cambiar del Modo Insertar al Modo Línea de Comandos. Recuerde que le dije antes: siempre que desee cambiar de un modo a otro, primero debe cambiar al Modo Comando y luego puede cambiar fácilmente al modo que desee.

Para cambiar al Modo Comando desde el Modo Insertar, debe presionar la tecla Esc.

Después de presionar la tecla  Esc, no podrá ver --INSERT-- en la parte inferior izquierda. Esto indica que ya no está en Modo Insertar y ahora está en Modo Comando.

image-283
Command mode in sample.txt file

Para guardar el archivo, escriba el siguiente comando:

:w
Vim command to save the file
image-284
Command to save the file

Cómo cerrar un archivo y salir de Vim

Una vez que guarde el archivo, puede cerrar Vim cerrando la terminal. Pero, la forma correcta de cerrar el archivo y el editor Vim es usando el siguiente comando:

:q
Vim command to close file and quit Vim
image-285
Close the file and vim editor

El comando anterior cierra el archivo y sale del editor Vim.

Alternativamente, puede usar un comando que es la combinación de los 2 comandos anteriores (guardar y salir) para guardar y salir rápidamente de Vim. El comando es:

:wq
Vim command to save the file and close immediately

El comando anterior cierra el editor Vim inmediatamente después de guardar el archivo.

Cómo editar un archivo en Vim

Para editar un archivo, debe abrir el archivo usando Vim y cambiar al Modo Insertar.

Abramos el archivo sample.txt que creamos arriba:

vim sample.txt
Vim command to edit sample.txt file
image-287
Open sample.txt file using Vim

Ahora estamos en Modo Comando. Para editar el archivo, tenemos que cambiar al Modo Insertar. Como vimos anteriormente, al presionar i desde el Modo Comando cambiará al Modo Insertar.

image-289
Switch to Insert mode by pressing i

Siga el mismo procedimiento para guardar el archivo y salir de Vim. Presione Esc en el teclado y escriba :w para guardar el archivo y :q para salir de Vim.

Sin embargo, es posible que se pregunte qué sucede si quiero cerrar el archivo sin guardar los cambios. (Ignorar los cambios que hice y devolver el archivo al estado anterior).

Cómo cerrar el archivo sin guardar los cambios

Para cerrar el archivo sin guardar los cambios, debe ejecutar :q! desde el Modo Comando.

Exploremos esto con un ejemplo:

image-292
Content in sample.txt file

He agregado algo más de contenido al archivo.

image-293
Added some content in sample.txt file

Pero no quiero guardar los cambios que hice ahora. Para cerrar el archivo sin guardar este cambio, tenemos que cambiar al Modo Comando (pulsando la tecla Esc). Escribe :q! en el Modo Comando. Esto cerrará el archivo ignorando los cambios realizados.

image-294
Ignore saving the sample.txt file

Veamos el archivo y confirmemos si obtenemos el resultado esperado:

image-295
View sample.txt file

Vemos que el archivo no tiene la última línea que agregamos recientemente. Por lo tanto, los cambios no se guardaron.

Cómo cortar, copiar y pegar texto de un archivo usando Vim

Puede cortar, copiar y pegar de 2 maneras en Vim. Estas son:

  1. Usando el Modo Visual
  2. Usando el teclado

De estas dos formas, el Modo Visual es más fácil de entender. Dado que esta es una guía para principiantes, exploremos cómo cortar, copiar y pegar en el modo Visual.

Abramos el archivo en Modo Comando antes de continuar:

image-231
sample.txt file opened in command mode in Vim

Supongamos que desea copiar la palabra "Hola" de la primera línea y pegarla en la tercera línea.

El primer paso es colocar el cursor en el lugar desde donde desea copiar el texto (estando en modo comando).

image-232
Moved the cursor to the beginning of the word Hello

Ingrese al modo Visual presionando la tecla v en el teclado.

image-233
Enter Visual mode

El texto -- VISUAL –- en la parte inferior izquierda indica que estamos en Modo Visual.

Mueva el cursor al lugar donde termina el texto que desea copiar.

En este caso, muevo el cursor a la letra o de la palabra Hello.

Mientras mueve el cursor, el Modo Visual resalta el texto desde el principio hasta el cursor.

image-235
Highlighted text in Visual mode

Una vez que haya terminado de mover el cursor al lugar correcto, presione y para copiar el texto o presione d para cortar el texto.

En este caso, estoy copiando el texto. Entonces, presiono y en mi teclado.

Mueva el cursor al lugar donde desea pegar el texto.

image-296
Move the cursor to the place where you want to paste the text

En nuestro caso, tenemos que mover el cursor a la 3ra línea.

Presione p (en minúsculas) para pegar el texto después del cursor y P (en mayúsculas) para pegar el texto antes del cursor.

image-236
Hello text pasted on 3rd line

Presione :wq para guardar y cerrar el archivo.

Cómo encontrar y reemplazar texto en Vim

Encontrar texto y reemplazarlo con otro texto es simple y directo en Vim. Hay un comando de una línea que simplifica todo este proceso.

Está es la sintaxis:

:[range]s/{pattern}/{string}/[flags]
Vim command syntax to find and replace a text

Desmontemos cada parte y comprendamos cómo funciona todo.

  • [range] indica que puede pasar el rango de líneas. Pase % para buscar y reemplazar en todas las líneas. El rango está separado por una coma. Para encontrar y reemplazar entre las líneas 5 a 10, pase 5,10. Usar . para representar la línea actual y $ para representar la última línea del archivo.
  • {pattern} indica el patrón para encontrar el texto. Puede pasar patrones de expresiones regulares aquí.
  • {string} es la cadena a reemplazar en el texto encontrado.
  • [flags] indica si desea pasar banderas adicionales (por ejemplo, la bandera c se pasa para confirmar antes de reemplazar el texto). De forma predeterminada, esto hace una búsqueda que distingue entre mayúsculas y minúsculas. Puede cambiarlo para realizar una búsqueda que no distinga entre mayúsculas y minúsculas pasando la bandera i .

Muy bien, exploremos esto con un ejemplo.

image-237
sample.txt file content

Nuestro archivo sample.txt tiene 2 "Hello". Reemplacemos "Hello" con "Hi" en ambos lugares.

El comando para hacer eso es:

:%s/Hello/Hi/g
Vim command to replace "Hello" with "Hi"
  • %s indica reemplazar el contenido en todo el archivo
  • Hello es el patron de búsqueda
  • Hi es el texto a reemplazar
  • g indica hacer el cambio globalmente
image-238
While running the command to change "Hello" with "Hi"
image-239
After running the command

Entendamos esto con otro ejemplo.

Esta vez, quiero cambiar la palabra "Hi" (búsqueda que no distingue entre mayúsculas y minúsculas) que aparece entre las líneas 2 y 3 y reemplazarla con "Hello and Welcome", con una confirmación para cambiar cada aparición.

El comando para hacer eso es:

:2,3s/Hi/Hello and Welcome/gci
Vim command to change "Hi" with "Hello and Welcome" in 2nd and 3rd line
image-297
Running the command to change the text from line 2 to line 3
image-241
Asking for confirmation to change the occurrence

Aquí hay una descripción por cada bandera:

  • y - Reemplazar el patron
  • n - Saltar el patron
  • a - Sustituye el patron y todas las ocurrencias restantes del patron
  • q o Esc - Cancelar sustitución
  • l - Reemplazar el patron y salir
  • CTRL+Y - Desplazar la pantalla hacia abajo
  • CTRL+E - Desplazar la pantalla hacia arriba

Quiero aceptar el cambio. Entonces, presiono y. Aquí está la salida después de presionar y.

image-242
After replacing the word

Dado que solo tenemos una ocurrencia de"Hi" entre las líneas 2 y 3, no solicitó más confirmación y la operación se completó.

Cómo deshacer o rehacer en Vim

Para deshacer un cambio en Vim, presione u en el Modo Comando. Para rehacer, presione CTRL + R. Puede anteponer un número (n) con u para deshacer n veces. por ejemplo, 2u deshará 2 veces. Para enumerar las opciones de deshacer disponibles, escriba :undolist n el modo comando.

Entendamos esto con un ejemplo.

Este es el estado actual de nuestro archivo sample.txt:

image-254
Current state of sample.txt file

Tengo mi cursor en "a" en el texto "Hello and Welcome" en la tercera línea. Eliminemos la palabra "and" escribiendo dw en el Modo Comando:

image-257
Removed the word and by typing dw in command mode

Vamos a deshacer para traer de vuelta la palabra "and" al archivo. Para hacerlo, presione u en el modo comando

image-258
Changes are undone after typing u in command mode

Rehagamos y eliminemos la palabra "and" escribiendo CTRL + R en el Modo Comando.

image-298
Changes were applied again on redo by pressing CTRL + R in command mode

Conclusion

En este artículo, ha aprendido los conceptos básicos de Vim. Este artículo debería ser suficiente para comenzar y realizar algunas operaciones básicas de lectura/escritura de archivos con Vim.

Solo tenga en cuenta que ni siquiera he cubierto el 1% de Vim. Pero estoy seguro de que estos conceptos básicos te ayudarán a explorar Vim de forma rápida y segura.