vim
Edita archivos de texto desde la terminal, con modos y atajos de teclado.
Es el editor de texto clásico de la terminal: abres un archivo, lo modificas y lo guardas, todo con el teclado. Lo usas para editar configuraciones en /etc, scripts y código en servidores sin interfaz gráfica. Muchas instalaciones solo traen vi (la versión mínima, vim-tiny); para el vim completo: sudo apt install vim.
vim [opciones] [archivo]Si editas un archivo del sistema, como /etc/fstab o la configuración de SSH, y guardas un error, el equipo puede no arrancar o dejarte sin SSH. Haz una copia antes con cp archivo archivo.bak.
Despiece
6 ejemplosAbrir un archivo para editarlo
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | vim | Comando | El editor; si el archivo no existe, lo crea. |
| 2 | notas.txt | Argumento | El archivo que quieres abrir. |
Ves el contenido del archivo y el cursor al principio, pero vim abre en modo normal: si presionas las letras no se escribe nada, porque ahí las teclas son comandos. Para escribir presiona i, para volver a modo normal presiona Esc y para salir :q.
Abrir en una línea específica
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | vim | Comando | El editor de texto. |
| 2 | +42 | Opción | Coloca el cursor en esa línea al abrir, sin que tengas que buscarla tú. |
| 3 | servidor.log | Argumento | El log que quieres revisar. |
El cursor queda en la línea 42 del log. Muy útil cuando ya sabes en qué línea está el error: si la línea no existe, vim se para en la última. También sirve vim + servidor.log, sin número, para abrir al final del archivo.
Ver un archivo sin poder guardarlo
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | vim | Comando | El editor de texto. |
| 2 | -R | Opción | Readonly: abre en modo solo lectura y no deja escribir cambios. |
| 3 | notas.txt | Argumento | El archivo que quieres leer. |
Lo abres para leer y vim no deja guardarlo: si escribes :w te responde E45: 'readonly' option is set. Es la forma segura de ojear un archivo sin miedo a cambiarlo por accidente. Para sí poder modificarlo tendrías que abrirlo con sudo, si es que tienes permisos.
Editar un archivo del sistema
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | sudo | Comando | Ejecuta lo que sigue como root, que es el dueño de /etc/hosts. |
| 2 | vim | Comando | El editor, abriendo y guardando los archivos con permisos de root. |
| 3 | /etc/hosts | Argumento | El archivo del sistema que vas a modificar. |
Guardas con :w y los cambios se escriben, porque vim se abrió como root. Ojo: todo lo que borres o escribas aquí pasa sin pedir confirmación, así que revisa bien la línea antes de hacer :wq.
Comparar dos archivos
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | vim | Comando | El editor de texto. |
| 2 | -d | Opción | Modo diff: abre los dos archivos en columnas y resalta lo que cambia. |
| 3 | config.local | Argumento | Tu archivo local, que queda en la columna izquierda. |
| 4 | config.produccion | Argumento | El archivo contra el que comparas, en la columna derecha. |
Ves las dos versiones lado a lado y vim resalta las líneas que cambian. Con ]c saltas al siguiente cambio, con [c al anterior y con Ctrl+W w pasas de una columna a la otra. Sales de las dos con :qa.
Abrir varios archivos en pestañas
| N.º | Pieza | Tipo | Qué hace |
|---|---|---|---|
| 1 | vim | Comando | El editor de texto. |
| 2 | -p | Opción | Cada archivo se abre en su propia pestaña, arriba. |
| 3 | notas.md | Argumento | El primer archivo. |
| 4 | tareas.md | Argumento | El segundo archivo, en la segunda pestaña. |
Cada archivo queda en su pestaña. Pasas a la siguiente con gt y regresas a la anterior con gT. :q cierra la pestaña en la que estás; :qa cierra todas.
Opciones
Las que sí vas a usar| Opción | Qué hace |
|---|---|
| +NUM | Abre el archivo con el cursor en esa línea. Con solo el signo más, sin número, abre al final del archivo. |
| -R--readonly | Abre en modo solo lectura. Vim se queja con E45: 'readonly' option is set si intentas guardar, así que sirve para leer logs sin arriesgarte a cambiarlos. |
| -n | No crea el archivo de intercambio (swap), donde vim guarda lo que hiciste por si se cierra de golpe. Útil en /tmp, en un USB o en un contenedor donde no quieres archivos extra. |
| -c | Ejecuta un comando de vim al abrir, por ejemplo -c 'set number' para ver los números de línea o -c '/ERROR' para saltar a la primera coincidencia. |
| -d--diff | Abre dos archivos uno al lado del otro y resalta las líneas que difieren. Para comparar tu configuración local contra la de otra máquina. |
| -p | Abre cada archivo en su propia pestaña, arriba, para saltar entre ellos con gt. |
| -u NONE | Arranca sin leer tu archivo de configuración ~/.vimrc. Sirve cuando un ajuste que hiciste te dejó vim roto o lentísimo. |
Fallas comunes
| Falla | Remedio |
|---|---|
| Presionar Ctrl+S para guardar y que no pase nada. | En vim Ctrl+S no guarda, solo congela la terminal y tienes que recuperarla con Ctrl+Q. El guardado es :w y para cerrar :q; :wq hace las dos cosas. El atajo Ctrl+S pertenece a la terminal, no al editor, por eso no te sirve. |
| Escribir letras y no aparecer nada, y concluir que vim está colgado. | vim abre en modo normal, donde cada tecla es un comando. Presiona i para escribir y Esc para volver al modo normal. Si presionaste Ctrl+Z, vim quedó suspendido: regresa a él escribiendo fg. |
| Cerrar con ZZ o :wq! sin querer y pisar lo que había. | En modo normal ZZ guarda y cierra, igual que :wq; el signo ! fuerza el guardado aunque el archivo sea de solo lectura o no haya cambios. Antes de tocar un archivo del sistema haz una copia con cp archivo archivo.bak. |
| Tocar tu ~/.vimrc y que vim se sienta raro, lento o directamente roto. | Casi siempre es un ajuste mal escrito en tu configuración. Ábrelo con vim -u NONE archivo para trabajar sin leer ~/.vimrc; si con eso se arregla, ya sabes dónde está el problema. Para recuperar vim del todo: mv ~/.vimrc ~/.vimrc.malo. |
Preguntas frecuentes
- ¿Cómo guardo y cierro en vim?
- Con :w guardas y con :q cierras; :wq hace las dos cosas de una vez. También sirve ZZ en modo normal. Si cambiaste algo y prefieres no guardarlo, :q! sale de todos modos y descarta los cambios, que es la razón de existir del signo !.
- ¿Cómo salgo de vim sin guardar los cambios?
- Con :q! (q de quit y el signo ! de forzar). Si solo pones :q y tienes cambios sin guardar, vim te avisa y te pregunta si quieres salir de todos modos. Y si lo que quieres es dejar de lado la pantalla sin cerrarla, eso es Ctrl+Z, que lo manda a segundo plano.
- ¿Cuál es la diferencia entre vi y vim?
- vi es el editor original de Unix, muy básico. vim significa Vi IMproved (vi mejorado): trabaja igual, con modos, y agrega deshacer ilimitado, resaltado de sintaxis, búsqueda mejorada y mucho más. En Linux, cuando escribes vi casi siempre estás usando alguna versión de vim.
- ¿Por qué en vim las teclas escriben comandos en vez de letras?
- Porque vim tiene modos. En modo normal las teclas son comandos: x borra una letra, dd borra la línea, u deshace. Para escribir entras a modo inserción con i, y para guardar o salir escribes : y el comando (:w, :q). Con Esc siempre vuelves al modo normal.
- ¿Cómo busco y reemplazo texto en vim?
- Con / escribes lo que buscas y Enter saltas a la primera coincidencia; con n y N avanzas y retrocedes entre los resultados. Para cambiar, :s/viejo/nuevo/g reemplaza las coincidencias de la línea donde estás y :%s/viejo/nuevo/g las de todo el archivo. Si pides :s/viejo/nuevo/gc te pregunta en cada una.