Vim mantiene internamente una lista de los buffers que han estado activos durante toda la sesión, aunque se refieran a ficheros que hayan sido ya guardados en el disco. Esta lista ayuda a Vim a reabrir con rapidez los ficheros implicados y a recordar de ellos detalles tales como las marcas o la posición del cursor. Es también gracias a esta lista que los saltos mediante CTRL-O y CTRL-I permiten cambiar el buffer activo.
Los buffers de la lista pueden encontrarse en tres situaciones: activos (los que se están mostrando en alguna ventana), ocultos (los que no se ven pero aun están cargados en memoria) e inactivos: los que ya se descargaron de la memoria, pero aun se recuerdan cosas sobre ellos. Para ver la lista de buffers pueden usarse dos comandos: 0 0«:buffers0 0» y 0 0«:ls0 0». En ambos casos los buffers de la lista se muestran numerados. Para cada buffer, además, se muestran a su izquierda ciertos indicadores de estado, y a su derecha el número de línea en el que se encuentra (o encontraba) el cursor. Estos indicadores son:
Para editar uno de los buffers de la lista por su número basta con el comando 0 0«:buffer Num0 0», donde Num es el número asignado al buffer en la lista. Si en lugar de ``:buffer'' escribimos 0 0«:sbuffer Num0 0» el buffer se abrirá en una nueva ventana. También podemos ir moviéndonos entre los distintos buffers con los comandos 0 0«:bnext0 0», 0 0«:bprevious0 0», 0 0«:bfirst0 0» y 0 0«:blast0 0», de modo similar al caso de tener abiertos varios ficheros simultáneamente.
La lista de buffers es un procedimiento alternativo para abrir y cerrar ficheros en Vim, porque podemos conseguir esos resultados por el procedimiento de añadir o eliminar expresamente un buffer de la lista. Para añadir un buffer se usa el comando 0 0«:badd fichero0 0» y para eliminarlo se usa 0 0«:bdelete Número0 0», donde Número es el número asignado al buffer que se quiere eliminar. También es posible eliminar simultáneamente varios buffers, indicando sus números como un rango e indicar mediante el operador ``!'' detrás del comando, que se descarten los cambios en el buffer a eliminar.
No tan drástico como eliminar un buffer es descargarlo de memoria. Para ello se usa el comando 0 0«:bunload0 0» que tiene la misma sintaxis que 0 0«:bdelete0 0». Al descargar de la memoria, el buffer se mantiene en la lista, pero pasa a ser un buffer inactivo, por lo que cualquier ventana que estuviera editándolo se cierra.