En esta pagina vas a encontrar los principales atajos de VIM, no es una guía completa ni mucho menos, pero te ayudará a no quedarte dentro de el editor de VIM sin saber como salir.

TIP

Si has llegado a esta pagina porque no puedes salir de vim:

:qa! (Sin guardar)
:qwa! (Guardando todo)

Básico

Modos

En vim existen tres modos fundamentales, normal, insert y replace. Normal: Te permite navegar por el fichero sin modificarlo Insert: Te permite editar el fichero, añadiendo o eliminando caracteres (como un editor normal) Replace: Reemplaza los caracteres existentes por los que escribas

.                       Repites el ultimo comando ejecutado
i                       Modo Insert
I                       Modo Insert al inicio del fichero
a                       Modo Insert un caracter después del cursor
A                       Modo Insert al final de la linea
<esc>                   Salir del modo insert
s                       Eliminar el caracter bajo el cursor y entrar al modo Insert
R                       Modo Replace
<insert>                Modo Replace
gR                      Modo Replace virt, trata tabulaciones como un único espacio
r{char}                 Reemplaza un solo caracter
gr{char}                Reemplaza un solo caracter en modo Replace Virtual
Vr-                     Selecciona una linea y reemplaza todos los caracteres por -

Movimiento

Para moverte por el texto

Escribir y atajos

Salir de vim

Hay distintas formas de salir de vim, ya sea guardando o no, sobrescribiendo, forzando root

:q                  Cerrar el archivo actual
:qa                 Cerrar todos los archivos
:w                  Guarda el archivo actual
:wq/:x              Igual que :w pero saliendo de vim al finalizar
ZZ                  Guardar y salir  
ZQ                  Salir sin comprobar cambios

Comandos

Vim también permite ejecutar comandos en la shell desde el propio editor

:!                  Accede a la shell
:!ls                Ejecuta ls en la shell (:ls solo muestra la lista del buffer)
%                   Variable que almacena el nombre actual del archivo
:!{cmd} %           Ejecuta un comando en la shell dando como argumento el archivo
:shell              Inicia una shell interactiva en el editor de vim
:read !{cmd}        Almacena la salida del comando en el buffer actual
:write !{cmd}       Usa el buffer actual como entrada para el comando
:write {archivo}    Guarda el buffer actual en el archivo
:write! {archivo}   Guarda el buffer actual en el archivo sobreescribiendo el mismo
:[rango]!{cmd}      Pasa las lineas del rango al cmd y las reemplaza con la salida
:!mkdir -p %:h      Crea los directorios necesarios para almacenar el archivo

Archivos y buffers

En vim existen comandos internos que nos permiten editar archivos (similar a un explorador de archivos)

:cd {ruta}           Cambia la ruta de trabajo de vim
:pwd                 Muestra la ruta actual de trabajo de vim
:edit {archivo}      Edita el archivo
:edit/:e!            Recarga el archivo actual sin guardar cambios
:find {archivo}      Edita un archivo sin una ruta completa, se puede usar <tab>