我怎么能关闭所有缓冲区在Vim除了一个我目前正在编辑?


当前回答

注意:正如注释中提到的,这会关闭窗口而不是缓冲区。

通过使用

:on[ly][!]

and

:h only

其他回答

我把Alejandro的评论和badteeth的评论结合起来:

command! Bonly silent execute "%bd|norm <C-O>"

范数<C-O>跳转到跳转列表中的最后一个位置,这意味着游标在%bd之前的位置。 我用silent代替了silent!这样,如果任何打开的缓冲区被修改,Vim就会打印一条错误消息,这样我就知道发生了什么。修改后的缓冲区在我的测试中保持打开状态。

无关:这是我的第500个答案!

注意:正如注释中提到的,这会关闭窗口而不是缓冲区。

通过使用

:on[ly][!]

and

:h only

你可以从vim.org上使用这个脚本:

http://www.vim.org/scripts/script.php?script_id=1071

只要把它放到你的。vim/plugin目录下,然后使用:BufOnly命令关闭所有的缓冲区,但激活的缓冲区除外。您还可以在.vimrc中将它映射到您喜欢的其他地方。

来源Github(通过vim-scripts镜像):https://github.com/vim-scripts/BufOnly.vim/blob/master/plugin/BufOnly.vim

如果你不关心当前的,更简单的做法是(不需要脚本):

1,100bd

我喜欢1100bd (juananruiz建议),这似乎对我有用。

我添加了一个退出!我的地图给我

nnoremap <leader>bd :1,100bd<CR>
nnoremap <leader>bdq :1,100bd<CR>:q!<CR>

这会杀死所有缓冲区并关闭Vim,这正是我最想要的。