Добавьте это к вашему .vimrc:
function! CloseHiddenBuffers()
let i = 0
let n = bufnr('$')
while i < n
let i = i + 1
if bufloaded(i) && bufwinnr(i) < 0
exe 'bd ' . i
endif
endwhile
endfun
Затем вы можете сделать это, чтобы закрыть скрытые буферы:
:call CloseHiddenBuffers()
(Возможно, вы захотите связать с ним клавишу или команду.)
Обновление:
Вот версия, обновленная для поддержки вкладок. (Я сам не использую вкладки, поэтому я не понял, что bufwinnr работает только для окон на текущей странице).
function! CloseHiddenBuffers()
" figure out which buffers are visible in any tab
let visible = {}
for t in range(1, tabpagenr('$'))
for b in tabpagebuflist(t)
let visible[b] = 1
endfor
endfor
" close any buffer that's loaded and not visible
for b in range(1, bufnr('$'))
if bufloaded(b) && !has_key(visible, b)
exe 'bd ' . b
endif
endfor
endfun