:clo!
将其关闭。但是,即使我设置了nohidden
,这也会隐藏缓冲区,而不是完全卸载缓冲区。我感到很烦,因为我退出Vim时得到了一个额外的确认,关于已经(我认为)已经丢弃的内容。如果只剩下一个缓冲区,将完全退出Vim,这也很烦人。更糟糕的是,如果我打错了:q!
,我可能会失去很多工作。是否有中间立场?我真的很想命令杀死当前缓冲区,但不退出Vim。我不反对用Vimscript编写它,但是如果命令已经存在,我宁愿避免使用它。
#1 楼
有命令可以做到这一点::bdelete
或只是:bd
。默认情况下,它将卸载当前缓冲区。要卸载其他缓冲区,请首先使用:buffers
命令获取所有缓冲区的列表,然后可以在:bd
之后指定编号以将其删除。同样,:bd
+空格+制表符允许使用缓冲区名称完成。#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,然后按
–eli
18年9月5日10:00
这很棒!谢谢@ Soylent17!
–阿波罗
19年4月11日在13:05
评论
这将在最后一个打开的缓冲区上运行,这并不是我想要的,但是由于它不会退出,因此对我来说已经足够了。
–凯文
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