VIM学习笔记 缓冲区 (Buffers)

缓冲区(Buffer)是一块内存区域,用于存储着正在编辑的文件。在保存缓冲区并退出时,内容也随之被写回原始文件。

增加缓冲区

在启动vi时,可以指定多个文件做为参数,例如vi file1 file2 file3,参数中的所有文件都会被载入缓冲区,但vi只会在窗口中显示第一个文件。你可以使用以下命令,为每一个缓冲区打开一个窗口。

:ball

使用:badd filename命令将新增一个缓冲区。指定的文件会被加载到缓冲区列表中,但是对这个文件的编辑过程只有切换到那个缓冲区时才会开始。在命令中,还可以指明为这个缓冲区打开窗口时,光标所处的位置:

:badd +linenum filename

列示缓冲区

:buffers:files:ls命令将会列出当前编辑中的(除“u”类型之外)缓冲区信息。在列表中,第一个数字是缓冲区的标号;第二个标记是缓冲区当前的状态;紧接着是与缓冲区所关联的文件名。

Buffers

缓冲区状态包含以下几种:

-Readonly buffer,禁用了modifiable选项,只读缓冲区
=Readonly buffer,只读缓冲区
aActive buffer,活动缓冲区,当前显示在屏幕上
hHidden buffer,隐藏缓冲区,已载入但没有显示在屏幕上
+Modified buffer,已经更改的缓冲区
xError buffer,读入时报错的缓冲区
%Current buffer,当前缓冲区
#Alternate buffeer,交换缓冲区
uUnlisted buffer,只有在列示命令中使用!修饰符才能显示的缓冲区

使用“!”修饰符的:buffers!:files!:ls!命令将会列出包括“u”类型在内的所有缓冲区信息。如下图所示,窗口中使用:help buffers命令查询帮助信息,而:buffers!命令则列示了其打开windows.txt文件的“u”类型缓冲区。

Buffers_u

选择缓冲区

可以使用number参数,选择指定标号的缓冲区:

:buffer number

也可以使用文件名来选择缓冲区:

:buffer filename

我们可以用:sbuffer number命令,来分割当前窗口开始编辑一个缓冲区。如果指明了数字,那么当前窗口就会显示数字所标记的缓冲区中的内容;如果没有指明数字,那么就会显示当前缓冲区的内容。当然,这个命令也可以用文件名来做为参数:

:sbuffer filename

切换缓冲区

:bnext到下一个缓冲区;:bprevious:bNext到前一个缓冲区;:blast到最后一个缓冲区;:bfirst到第一个缓冲区。

根据默认设置,在切换到另一缓冲区之前,Vim将提示你保存当前缓冲区。你也可以使用:set hidden命令,允许在未保存的情况下切换缓冲区。

删除缓冲区

可以使用:bdelete filename:bdelete 3:3 bdelete命令来删除一个缓冲区。也可以使用:1,3 bdelete命令来删除指定范围的缓冲区。所删除缓冲区引用的文件名,也将会随之从缓冲区列表中删除。

如果缓冲区被改动过,那么该命令将失败。如果使用了!选项的:bdelete! filename命令,强制删除缓冲区,那么在缓冲区中的所有改动都会被放弃。

卸载缓冲区

命令:bunload会从内存中卸载一个缓冲区,所有为这个缓冲区打开的窗口也会关闭。但是这个文件名仍然会存在于缓冲区列表中。如果缓冲区被改动过,那么该命令将失败。你也可以使用!选项的:bunload!命令,强制卸载缓冲区,但所有的改动也将会丢失。

帮助信息

可以使用:help buffers命令,查看关于缓冲区的帮助信息。

命令小结
:badd增加缓冲区
:ls列示缓冲区状态
:files
:buffers
:buffer编辑指定缓冲区
:ball编辑所有缓冲区
:bnext到下一缓冲区
:bprevious到前一缓冲区
:blast到最后一个缓冲区
:bfirst到第一个缓冲区
:bmodified到修改过的缓冲区
:bdelete删除缓冲区
:bunload卸载缓冲区

Ver: 2.0 | YYQ<上一篇 | 目录 下一篇>