VIM-如何删除缓冲区?

先来实在的,个人用法:
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 完全相同 只是看起来没那么顾名思义 它的优点是命令本身
很短 结果形如 :

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中有很多这样的折衷, 以较短的命令换取更具描述性的命令名


未被列出的缓冲区 |unlisted-buffer| [[ 既然未被列出你又怎么知道 ? :ls!  当前缓冲区
上一次的活动缓冲区
被载入并显示在某窗口中的缓冲区
被载入但隐藏的缓冲区 .
只读的缓冲区
不可编辑的缓冲区 其中 °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° 选项 .

你可能感兴趣的:(职场,vim,休闲,缓冲区)