Por qué uso vim

Creo que hay muchas personas como yo que, teniendo disponible el editor de texto de GNOME o algún equivalente de KDE, siguen usando vim como su editor principal.

Uso vim desde mis primeros días con Linux, allá por 1997. En ese momento era quizás la única opción, o una de las pocas. No era fácil, pero viniendo de WordStar y WordPerfect, no se veía tan intimidante como puede parecerle a alguien que lo descubre hoy. Esos editores también tenían modos y flujos de trabajo basados en el teclado, así que el modelo mental no era del todo ajeno.

Escribo esto como referencia propia de los comandos que más uso y que constantemente olvido, pues no los uso todos a diario. Lo actualizo con el tiempo.

Qué es vim

vim (Vi IMproved) es un editor de texto creado en 1991 por Bram Moolenaar, basado en el vi original escrito por Bill Joy en 1976 para sistemas Unix. Está disponible en prácticamente cualquier sistema Linux, BSD y macOS, lo que hace que valga la pena conocerlo — cuando te conectás a un servidor sin nada instalado, vim (o vi) casi siempre está ahí.

El concepto más importante: los modos

Vim tiene modos. Esto es lo que más confunde a los usuarios nuevos. No hay un único estado donde escribir texto e insertar comandos funcionen al mismo tiempo — son modos separados.

Modo Cómo entrar Qué hace
Normal Esc (desde cualquier modo) Navegar, borrar, copiar, pegar, ejecutar comandos
Inserción i, a, o Escribir texto
Visual v, V, Ctrl+v Seleccionar texto
Comando : (desde Normal) Guardar, salir, buscar/reemplazar, configuración

Al abrir vim estás en modo Normal. Presioná i para empezar a escribir. Presioná Esc para volver a Normal.

Abrir archivos

vim archivo.txt
vim /etc/nginx/nginx.conf

Abrir un archivo desde dentro de vim (modo Normal):

:e archivo.txt

Navegación (modo Normal)

Movimiento básico:

Tecla Acción
h Izquierda
j Abajo
k Arriba
l Derecha
w Palabra siguiente
b Palabra anterior
0 Inicio de línea
$ Fin de línea
gg Primera línea del archivo
G Última línea del archivo
:n Ir a la línea n (ej. :42)
Ctrl+f Página abajo
Ctrl+b Página arriba

Entrar en modo Inserción

Tecla Dónde inserta
i Antes del cursor
a Después del cursor
I Inicio de la línea
A Fin de la línea
o Nueva línea abajo
O Nueva línea arriba

Borrar texto (modo Normal)

Tecla Qué borra
x El caracter bajo el cursor
dw La palabra desde el cursor
dd La línea completa
d$ Desde el cursor hasta el fin de la línea
dgg Desde el cursor hasta la primera línea
dG Desde el cursor hasta la última línea

Los números multiplican cualquier comando: 5dd borra 5 líneas, 3dw borra 3 palabras.

Copiar y pegar (modo Normal)

y es "yank" (copiar), p es pegar.

Tecla Acción
yy Copiar la línea actual
yw Copiar la palabra
y$ Copiar hasta el fin de la línea
p Pegar después del cursor
P Pegar antes del cursor

Modo Visual — seleccionar texto

Presioná v para entrar en modo Visual, luego mové el cursor para seleccionar. Una vez seleccionado:

Tecla Acción
y Copiar selección
d Borrar selección
> Indentar selección
< Desindentar selección

V selecciona líneas completas. Ctrl+v selecciona un bloque rectangular.

Deshacer y rehacer

Tecla Acción
u Deshacer
Ctrl+r Rehacer

Búsqueda

Desde el modo Normal:

/patrón         buscar hacia adelante
?patrón         buscar hacia atrás
n               siguiente coincidencia
N               coincidencia anterior

Buscar y reemplazar

:%s/viejo/nuevo/g           reemplazar todo en el archivo
:%s/viejo/nuevo/gc          reemplazar todo, confirmar cada uno
:10,20s/viejo/nuevo/g       reemplazar en las líneas 10 a 20

Flags: g = todas las ocurrencias por línea, c = confirmar, i = sin distinguir mayúsculas, I = distinguir mayúsculas.

Guardar y salir

Comando Acción
:w Guardar
:w archivo Guardar como
:q Salir (falla si hay cambios sin guardar)
:q! Salir descartando los cambios
:wq Guardar y salir
ZZ Guardar y salir (atajo en modo Normal)
ZQ Salir sin guardar (atajo en modo Normal)

Configuración básica en .vimrc

~/.vimrc es el archivo de configuración de vim. Una configuración mínima:

syntax on           " resaltado de sintaxis
set number          " mostrar números de línea
set tabstop=4       " tab = 4 espacios
set expandtab       " usar espacios en lugar de tabs
set hlsearch        " resaltar coincidencias de búsqueda
set incsearch       " buscar mientras escribís
set ignorecase      " búsqueda sin distinguir mayúsculas...
set smartcase       " ...a menos que el patrón tenga mayúsculas

Aprender de forma interactiva

vim incluye un tutorial integrado. Ejecutalo desde la terminal:

vimtutor

Lleva unos 30 minutos y cubre todo lo de esta guía de forma práctica.

Ver también

man vim, :help dentro de vim (documentación integrada muy extensa).

  • Creado: 5 de noviembre de 2012
  • Última edición: 7 de julio de 2026