通常,我会将一些信息加载到临时缓冲区中,然后使用:clo!将其关闭。但是,即使我设置了nohidden,这也会隐藏缓冲区,而不是完全卸载缓冲区。我感到很烦,因为我退出Vim时得到了一个额外的确认,关于已经(我认为)已经丢弃的内容。如果只剩下一个缓冲区,将完全退出Vim,这也很烦人。更糟糕的是,如果我打错了:q!,我可能会失去很多工作。

是否有中间立场?我真的很想命令杀死当前缓冲区,但不退出Vim。我不反对用Vimscript编写它,但是如果命令已经存在,我宁愿避免使用它。

#1 楼

有命令可以做到这一点::bdelete或只是:bd。默认情况下,它将卸载当前缓冲区。要卸载其他缓冲区,请首先使用:buffers命令获取所有缓冲区的列表,然后可以在:bd之后指定编号以将其删除。同样,:bd +空格+制表符允许使用缓冲区名称完成。

评论


这将在最后一个打开的缓冲区上运行,这并不是我想要的,但是由于它不会退出,因此对我来说已经足够了。

–凯文
2015年4月25日在5:23

vim-bbye插件可能就是您想要的:github.com/moll/vim-bbye

– alxndr
2015年4月25日在17:08

这在vi中不起作用

–香甜
17年8月16日在13:36

此外,内置别名:ls更易于记忆(imo),其作用与:buffers相同

– Kuzyn
17-10-6在10:52



这不会卸载缓冲区。实际上,它甚至都没有关闭它。它只是取消了“ buflisted”。 vim.wikia.com/wiki/Vim_buffer_FAQ

– BTRUE
18-2-16在7:32



#2 楼

您可以使用:bwipeout(或:bw)命令完全清除缓冲区。这会从内存中完全删除缓冲区,包括您添加到缓冲区中的所有标记,选项设置等。类似地,:bdelete(或:bd)删除缓冲区,但将其留在内存中并保留标记和选项设置。 bw,除非您知道自己在做什么。我倾向于使用:bw,因为就像从内存中完全删除缓冲区的想法一样,我并没有过多地使用标记,特定于缓冲区的选项设置等,以至于在关闭缓冲区后仍需要保留它们。

像:quit(:q)命令一样,如果缓冲区已更改,Vim将给出错误。要解决此问题,您可以在命令后附加一个感叹号以禁止显示提示。除了向所有内容添加感叹号之外,另一种方法是在vimrc中添加“设置确认”。有了这个设置,vim会提示您在关闭时保存文件更改。将:bufdo命令与:bw /:bd命令结合使用,可以一次删除所有活动缓冲区。您仍然可以使用感叹号来抑制错误,但是无论将其放在:bufdo之后,:bw之后还是之后都导致不同的结果:

: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
以下是一些其他有用的缓冲区命令:看看:http://vim.wikia.com/wiki/Vim_buffer_FAQ
http://vimdoc.sourceforge.net/htmldoc/windows.html#buffers

评论


您能为这个答案添加一些解释吗?

–EvergreenTree
2015年11月5日,0:56

帮助说:“除非您知道自己在做什么,否则不要使用它”,表明:bd在大多数情况下是首选

–汤姆·黑尔
17年7月29日在9:07

@TomHale很高兴知道:bw除了“与缓冲区有关的所有内容均丢失。此缓冲区中的所有标记均无效,选项设置丢失等”以外的其他功能。如果我想“关闭”缓冲区,就像我完全退出Vim那样,这对我来说似乎是完全合理的。

–肯尼·埃维特(Kenny Evitt)
18年7月16日在20:52

我更喜欢:bw而不是:bd,因为如果使用:bd,然后按转到上一个使用的缓冲区,它将从内存中调出它。 :bw给了我更多控制权,做了我想要的事^^

–eli
18年9月5日10:00

这很棒!谢谢@ Soylent17!

–阿波罗
19年4月11日在13:05