Answers:
有命令可以做到这一点::bdelete
或:bd
。默认情况下,它将卸载当前缓冲区。要卸载其他缓冲区,请首先使用:buffers
命令获取所有缓冲区的列表,然后您可以指定后面:bd
要删除的编号。此外:bd
+ space+ tab允许使用缓冲区名完成。
:ls
更易于记忆(imo),其作用与:buffers
您可以使用:bwipeout(或:bw)命令完全清除缓冲区。这会从内存中完全删除缓冲区,包括您添加到缓冲区中的所有标记,选项设置等。同样,:bdelete(或:bd)删除缓冲区,但将其保留在内存中并保留标记和选项设置。
根据Tom Hale的评论,除非您知道自己在做什么,否则Vim文档建议使用:bd而不是:bw。我倾向于使用:bw,因为就像从内存中完全删除缓冲区的想法一样,并且我并没有过多地使用标记,特定于缓冲区的选项设置等,以至于在关闭缓冲区后仍需要保留它们。
与:quit(:q)命令一样,如果缓冲区已更改,Vim也会给出错误消息。要解决此问题,您可以在命令后附加一个感叹号以禁止显示提示。除了向所有内容添加感叹号之外,另一种方法是在vimrc中添加“设置确认”。有了这个设置,vim会提示您关闭时保存文件更改。
:bufdo是一个有用的命令,它对所有活动缓冲区执行另一个命令。将: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
以下是一些其他有用的缓冲区命令:
:ls - list open buffers
:b N - open buffer number N (as shown in ls)
:tabe +Nbuf - open buffer number N in new tab
:bnext - go to the next buffer (:bn also)
:bprevious - go to the previous buffer (:bp also)
还有更多的缓冲区处理超出了这个问题的范围。看看:
http
: //vim.wikia.com/wiki/Vim_buffer_FAQ http://vimdoc.sourceforge.net/htmldoc/windows.html#buffers
:bw
除了“与缓冲区有关的所有内容均丢失。该缓冲区中的所有标记均无效,选项设置丢失等”之外的其他功能。如果我要“关闭”缓冲区,就像我完全退出Vim一样,这对我来说似乎是完全合理的。