Vim打开文件进行编辑时其实编辑的是文件在内存中的映像(即Vim中的缓冲区)

当使用Vim对缓冲区进行操作时,磁盘文件内容与内存映像不再一致,执行wx等命令时便是将缓冲区的内容回写到文件

一、Vim缓冲区列表

Vim支持同时在多个缓冲区进行操作,每打开一个文件,Vim就会创建一个对应缓冲区。缓冲区不仅包含了文件的内容,也记录了该文件的编辑状态等配置信息,包括激活、隐藏、上次编辑行数等

假设通过vim命令vim *.txt同时打开了当前目录下的两个文件 1.txt2.txt

Vim文件缓存区

Vim启动时只会显示一个窗口,且窗口内的缓冲区对应着第一个文件,虽然另一个文件当前不可见,但其内容已经被载入到一个Vim的缓冲区

如下图所示,:ls:buffers 命令会列出所有被载入到内存中的缓冲区的列表,%符号指明哪个缓冲区在当前窗口中可见

Vim文件缓存区列表

二、使用Vim缓冲区列表

顾名思义,Vim缓冲区列表是个列表结构

Vim尾行模式下可通过 :bnext:bprev 命令正向或反向遍历列表,命令Ctrl + ^可以在当前文件和轮换文件间快速切换

:bfirst:blast 则分别用于跳转到Vim缓冲区列表的开头和结尾

Vim文件缓存区列表

此外,:ls命令获得的Vim缓冲区列表开头的数字是在缓冲区创建时由Vim自动分配的编号(且无法手动更改),使用:buffer n命令直接凭编号n跳转到该缓冲区

三、删除Vim缓冲区列表

可以用 :bdelete 命令删除Vim缓冲区

命令格式为:bdelete n1 n2 n3:n,m bdelete,前者用于删除特定缓冲区,后者用于删除一个编号区间段的缓冲区

注意,删除一个缓冲区并不会影响缓冲区所关联的磁盘文件,只是把该文件在内存中的映像删掉