转自:http://blog.51cto.com/mslagee/311864
先来实在的,个人用法:
1、:ls 列出所有缓冲区
2、:bdelete #numb 删除所要关闭的缓冲区
以下为 VIM 手册中的描述:
Vim编辑器使用缓冲区这个词来描述被编辑的文件. 事实上, 一个缓
冲区是一个被编辑文件的副本. 通常你会在完成对一个缓冲区的编辑后保存该文件. 缓冲区不仅包含了文件的内容, 它也记录了该缓冲区中所有的标记, 设置以及其它跟缓冲区有关的东西.
隐藏缓冲区
假设你正在编辑文件"one.txt"现在需要转而编辑"two.txt". 你可
能会直接使用":edit two.txt"命令, 但是你已经对"one.txt"作出了改动, 所以这一命令会失败, 同时你又不希望现在就保存文件"one.txt"的内容. Vim对此的解决方案是:
:hide edit two.txt
缓冲区"one.txt"从屏幕上消失, 但Vim保存了它的当前状态. 这叫
做隐藏缓冲区: 缓冲区中确有内容但你看不到它.
":hide"命令的参数是另一个命令. 它使该命令工作于°hidden° 选项被设置的状态. 你也可以自行设置该选项. 其效果是当你的缓冲区看似被丢弃时, 它实际上只是隐藏了起来2
1译: 还记得吗? 想垂直分隔窗口的话可以用:vertical sfind
2译: 规律: hide与vertical都是这样的特殊命令, 它们以一个完整的命令作为参数, 只是以一种方式影响该命令的执行, 同时此类命令并非对所有命令都有效, 它只对那些涉及其影响效果的命令起使用, 如vertical命令只是影响新开窗口的布局, 是水平的还是垂直的.这样它对那些根本不会打开窗口的命令就形同虚设
小心! 如果你当前有一些被修改内容尚未保存的隐藏缓冲区时, 不
要草草地退出Vim 1
非活动缓冲区
一旦一个缓冲区曾被编辑过, Vim就会记下它的一些信息. 这样当它
不显示在窗口中并且又不是一个隐藏缓冲区时, 它还是会被保留在缓冲区列表中. 这叫非活动缓冲区. 缓冲区的大致类别如下:
Active 出现在窗口中, 内容被载入
Hidden 不显示在窗口中, 但内容被载入
Inactive 不出现在窗口中, 内容也未被载入
非活动缓冲区仍被记录在案, 因为Vim保留了它的相关信息, 比如在
其中定义的标记和它的文件名. 这样你可以看到曾经编辑过了哪些文件,也可以再次打开它们.
显示缓冲区列表
下面的命令可以列出整个缓冲区列表:
:buffers
命令
:ls
与:buffers完全相同, 只是看起来没那么顾名思义, 它的优点是命令本身
很短2 结果形如:
1 #h "help.txt" line 62
2 %l+ "usr_21.txt" line 1
3 "usr_toc.txt" line 1
第一列是缓冲区编号. 你可以在编辑该文件时以此代替文件名, 见下文. 缓冲区编号之后是缓冲区类型标志字符. 然后是文件名和上次退出时光标所在的行号. 可能的缓冲区类型标志字符如下(从左到右):
1译: 真要这样退出时Vim还是会提醒你有缓冲区的内容已被改变但尚未保存, 除非你
声明自己负全责: :qa! 或:wqa
2译: (1)ls之于ls就象:grep之于grep, 完全不同! (2)Vim中有很多这样的折衷, 以较短的命令换取更具描述性的命令名
u 未被列出的缓冲区|unlisted-buffer|[[译: 既然未被列出你又怎么知道? :ls! % 当前缓冲区
# 上一次的活动缓冲区
l 被载入并显示在某窗口中的缓冲区
h 被载入但隐藏的缓冲区.
= 只读的缓冲区
- 不可编辑的缓冲区, 其中°modifiable°选项被关闭
+ 有改动的缓冲区
编辑一个缓冲区
你可以以缓冲区编号指定要编辑的缓冲区. 这可以免于键入其文件
名:
:buffer 2
但是要知道缓冲区编辑的唯一办法就是查找缓冲区列表. 这本身需要执行另一个命令. 你可以用文件名或部分文件名1:
:buffer help
Vim会根据键入的部分文件名选择一个最为相近的缓冲区. 如果只有
一个缓冲区符合条件, 就那直接使用该缓冲区, 本例是"help.txt".
要在一个新窗口中打开一个缓冲区使用命令:
:sbuffer 3
当然这一命令也可以使用文件名.
使用缓冲区列表
你可以用下面的命令来遍历整个缓冲区列表:
:bnext 跳转到下一个缓冲区
:bprevious 跳转到前一个缓冲区
:bfirst 跳转到第一个缓冲区
:blast 跳转到最后一个缓冲区
1译: 可以看作Vim自动进行了命令补齐, 此时的命令补齐并不要求已经键入的文件名
一定是最终文件名的开头字符, 如对于文件filename.txt, 你可以键name然后使用命令补齐, 但同样也可以不用命令补齐, Vim根据键入的部分文件名选择一个最相近的缓冲区
要把一个缓冲区从列表中去除, 可以用命令:
:bdelete 3
同样, 可以使用文件名1.
如果被删除的缓冲区是活动缓冲区(也就是说被显示在另一口), 它
所在的窗口就会被关闭. 如果你删除的是当前缓冲区, 它所在的窗口也会被关闭. 如果它是最后一个窗口. Vim就会另找一个缓冲区显示在该
窗口中. 总不至于让你因此什么都没得编辑.
备注: 即使是用":bdelete"命令删除了一个缓冲区Vim还
是会记住它. 实际上它被打入"unlisted"列表中,
不再显示在":buffers"命令显示的缓冲区列表中.
但":buffers!"还是会让它再度现身(是的, Vim可以完成Misson Impossible). 要彻底清除一个缓冲区, 要使
用":bwipe". 同时请参考°buflisted°选项.