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