Это не полностью проверено, поэтому сначала используйте его осторожно!
function! DeleteHiddenBuffers()
let i=1
let lastbuf=bufnr("$")
while i <= lastbuf
if buflisted(i) && bufwinnr(i) == -1
sil exe "bdelete" i
endif
let i=i+1
endwhile
endfunction
Примечание buflisted
проверяет, существует ли буфер, и bufwinnr
возвращает -1, если он скрыт (то есть не имеет назначенного окна). Вы можете позвонить, используя
call DeleteHiddenBuffers()
или создайте отображение.