Vim:如果缓冲区列表为空则退出

Kyl*_*and 3 vim

如果在删除当前缓冲区后,缓冲区列表为空(即,如果在执行or之前,我在缓冲区列表中只有当前缓冲区),我想:bd:bw实际退出我的 vim 会话。我怎样才能做到这一点?我认为它应该很容易,但是谷歌搜索并没有真正产生任何有用的东西,到目前为止我还没有设法编写一个来完成这个。:bd:bwautocmd

Ing*_*kat 7

要检查单个缓冲区,您需要遍历所有潜在的缓冲区并检查它们是否仍被列出(例如在 中:ls)。每当删除缓冲区时都会触发检查:

:autocmd BufDelete * if len(filter(range(1, bufnr('$')), '! empty(bufname(v:val)) && buflisted(v:val)')) == 1 | quit | endif
Run Code Online (Sandbox Code Playgroud)