Você pode apagar completamente um buffer usando o comando: bwipeout (ou: bw). Isso remove completamente o buffer da memória, incluindo quaisquer marcas, configurações de opções etc. que você adicionou a ele. Da mesma forma,: bdelete (ou: bd) remove o buffer, mas o deixa na memória e mantém marcas e configurações de opções.
Conforme o comentário de Tom Hale, a documentação do Vim recomenda o uso de: bd over: bw, a menos que você saiba o que está fazendo. Eu costumo usar: bw porque gosto da idéia de remover completamente o buffer da memória e não uso muito de marcas, configurações de opções específicas do buffer, etc., a ponto de precisar que eles permaneçam após o fechamento do buffer.
Como o comando: quit (: q), o Vim apresentará um erro se o buffer tiver sido alterado. Para resolver isso, você pode acrescentar um ponto de exclamação após o comando para suprimir o prompt. Outra opção, em vez de adicionar pontos de exclamação a tudo, é adicionar "set confirm" ao seu vimrc. Com esse conjunto, o vim solicitará que você salve as alterações do arquivo ao fechar.
: bufdo é um comando útil que executa outro comando em todos os buffers ativos. A combinação do comando: bufdo com o comando: bw /: bd permite remover todos os buffers ativos de uma só vez. Ainda é possível usar o ponto de exclamação para suprimir erros, mas se você o colocar depois de: bufdo, after: bw ou after causa resultados diferentes para cada um:
:bd - deletes the current buffer, error if there are unwritten changes
:bd! - deletes the current buffer, no error if unwritten changes
:bufdo bd - deletes all buffers, stops at first error (unwritten changes)
:bufdo! bd - deletes all buffers except those with unwritten changes
:bufdo! bd! - deletes all buffers, no error on any unwritten changes
:bw - completely deletes the current buffer, error if there are unwritten changes
:bw! - completely deletes the current buffer, no error if unwritten changes
:bufdo bw - completely deletes all buffers, stops at first error (unwritten changes)
:bufdo! bw - completely deletes all buffers except those with unwritten changes
:bufdo! bw! - completely deletes all buffers, no error on any unwritten changes
:set confirm - confirm changes (Yes, No, Cancel) instead of error
Aqui estão alguns outros comandos úteis do buffer:
:ls - list open buffers
:b N - open buffer number N (as shown in ls)
:tabe +Nbuf - open buffer number N in new tab
:bnext - go to the next buffer (:bn also)
:bprevious - go to the previous buffer (:bp also)
Há muito mais para lidar com buffer que está fora do escopo desta questão. Dê uma olhada em:
http://vim.wikia.com/wiki/Vim_buffer_FAQ
http://vimdoc.sourceforge.net/htmldoc/windows.html#buffers