Un buffer es un archivo cargado en memoria. Vim puede mantener docenas abiertos simultáneamente sin mostrarlos en pantalla. Saber navegar y gestionar buffers es esencial para trabajar con proyectos reales.
Abreviaciones de modos: N = Normal | I = Insert | V = Visual | C = Command | VB = Visual Block
Abrir archivos
Modo
Comando
Acción
C
:e {archivo}
Abre un archivo en el buffer actual
C
:e!
Recarga el archivo descartando cambios no guardados
C
:e #
Abre el buffer alternativo (último visitado)
C
:r {archivo}
Inserta el contenido de un archivo bajo el cursor
C
:r !{cmd}
Inserta la salida de un comando externo
N
gf
Abre el archivo cuyo nombre está bajo el cursor
N
<Ctrl-w>gf
Abre el archivo bajo el cursor en un nuevo tab
Listar y navegar buffers
Modo
Comando
Acción
C
:ls
Lista todos los buffers cargados con su estado
C
:buffers
Igual que :ls
C
:b {n}
Salta al buffer número n
C
:b {nombre}
Salta al buffer cuyo nombre coincide (parcial)
C
:bn
Salta al siguiente buffer
C
:bp
Salta al buffer anterior
C
:bf
Salta al primer buffer de la lista
C
:bl
Salta al último buffer de la lista
N
<Ctrl-^>
Alterna entre el buffer actual y el alternativo
C
:b#
Igual que <Ctrl-^>
Indicadores en :ls
Indicador
Significado
%
Buffer activo en la ventana actual
#
Buffer alternativo (el anterior)
a
Buffer activo y visible
h
Buffer oculto (cargado pero no visible)
+
Buffer con cambios no guardados
-
Buffer no modificable
=
Buffer de solo lectura
Cerrar y eliminar buffers
Modo
Comando
Acción
C
:bd
Elimina el buffer actual de la lista
C
:bd {n}
Elimina el buffer número n
C
:bd!
Elimina el buffer descartando cambios
C
:bw
Elimina el buffer completamente (wipe)
C
:%bd
Elimina todos los buffers
C
:%bd|e#
Elimina todos los buffers excepto el actual
Guardar archivos
Modo
Comando
Acción
C
:w
Guarda el buffer actual
C
:w {archivo}
Guarda como un archivo nuevo
C
:wa
Guarda todos los buffers modificados
C
:wq
Guarda y cierra la ventana actual
C
:x
Guarda solo si hay cambios y cierra
C
:wqa
Guarda todos y cierra Vim
C
:qa!
Cierra todo descartando cambios
Arglist (lista de argumentos)
Modo
Comando
Acción
C
:args
Muestra la arglist actual
C
:args {glob}
Define la arglist con un patrón glob
C
:next
Salta al siguiente archivo en la arglist
C
:prev
Salta al archivo anterior en la arglist
C
:first
Salta al primer archivo de la arglist
C
:last
Salta al último archivo de la arglist
C
:argdo {cmd}
Ejecuta un comando en cada archivo de la arglist
Operaciones en lote
Modo
Comando
Acción
C
:bufdo {cmd}
Ejecuta un comando en todos los buffers
C
:bufdo %s/foo/bar/ge
Reemplaza en todos los buffers (flag e ignora errores)
C
:bufdo update
Guarda los buffers modificados
C
:argdo %s/foo/bar/g | update
Reemplaza y guarda en toda la arglist
Tips
<Ctrl-^> es el atajo más infrautilizado: alterna entre los dos últimos buffers al instante, sin escribir nada.
:%bd|e# es el truco estándar para limpiar todos los buffers y quedarse solo con el actual; el e# reabre el buffer que se acaba de cerrar.
:b {nombre} acepta coincidencia parcial: :b main es suficiente si solo hay un buffer con “main” en el nombre.
El flag e en :bufdo %s/foo/bar/ge evita que Vim detenga la operación cuando un buffer no contiene el patrón; imprescindible en lote.
:args **/*.rs redefine la arglist con todos los archivos Rust del proyecto; combinado con :argdo permite refactors masivos sin plugins.