Comandos LinuxExplicados en español
/
Ficha41 / 104
Categoría
Texto
Ejemplos
6
Ver también
nano · less · chmod · grep

vim

Vim, vi improved (vi mejorado)

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.

Sintaxisvim [opciones] [archivo]
Precaución

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.

§ 1

Despiece

6 ejemplos
Abrir un archivo para editarlo

Abrir un archivo para editarlo

2 piezas
Lámina01 / 06
Comandovim notas.txt
Piezas2
Escala1:1
N.ºPiezaTipoQué hace
1vimComandoEl editor; si el archivo no existe, lo crea.
2notas.txtArgumentoEl archivo que quieres abrir.
Resultado

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

3 piezas
Lámina02 / 06
Comandovim +42 servidor.log
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1vimComandoEl editor de texto.
2+42OpciónColoca el cursor en esa línea al abrir, sin que tengas que buscarla tú.
3servidor.logArgumentoEl log que quieres revisar.
Resultado

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

3 piezas
Lámina03 / 06
Comandovim -R notas.txt
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1vimComandoEl editor de texto.
2-ROpciónReadonly: abre en modo solo lectura y no deja escribir cambios.
3notas.txtArgumentoEl archivo que quieres leer.
Resultado

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

3 piezas
Lámina04 / 06
Comandosudo vim /etc/hosts
Piezas3
Escala1:1
N.ºPiezaTipoQué hace
1sudoComandoEjecuta lo que sigue como root, que es el dueño de /etc/hosts.
2vimComandoEl editor, abriendo y guardando los archivos con permisos de root.
3/etc/hostsArgumentoEl archivo del sistema que vas a modificar.
Resultado

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

4 piezas
Lámina05 / 06
Comandovim -d config.local config.produccion
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1vimComandoEl editor de texto.
2-dOpciónModo diff: abre los dos archivos en columnas y resalta lo que cambia.
3config.localArgumentoTu archivo local, que queda en la columna izquierda.
4config.produccionArgumentoEl archivo contra el que comparas, en la columna derecha.
Resultado

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

4 piezas
Lámina06 / 06
Comandovim -p notas.md tareas.md
Piezas4
Escala1:1
N.ºPiezaTipoQué hace
1vimComandoEl editor de texto.
2-pOpciónCada archivo se abre en su propia pestaña, arriba.
3notas.mdArgumentoEl primer archivo.
4tareas.mdArgumentoEl segundo archivo, en la segunda pestaña.
Resultado

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.

§ 2

Opciones

Las que sí vas a usar
OpciónQué hace
+NUMAbre el archivo con el cursor en esa línea. Con solo el signo más, sin número, abre al final del archivo.
-R--readonlyAbre 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.
-nNo 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.
-cEjecuta 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--diffAbre 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.
-pAbre cada archivo en su propia pestaña, arriba, para saltar entre ellos con gt.
-u NONEArranca sin leer tu archivo de configuración ~/.vimrc. Sirve cuando un ajuste que hiciste te dejó vim roto o lentísimo.
§ 3

Fallas comunes

FallaRemedio
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.
§ 4

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.
§ 5

Ver también