Vim基础篇(三)——缓存操作
Vim基础篇(三)——缓存操作
前言:
Buffer是一块内存缓冲区,Vim打开文件实际是把文件的内容读取到缓冲区中,未保存时修改内容实际是修改缓冲区中的内容,保存文件就是把缓存中的内容写入到文件中(文件是存储在硬盘)。对Vim的缓冲区有一定熟悉了解,并掌握一些基础的Buffer操作将会使我们的编辑过程更加随心所欲。
1 Buffer的创建或删除
Vim打开文件实质是将处于硬盘的文件内容读取到内存中,也即只要是打开文件的操作Vim都将为打开的文件创建一个缓存空间。例如vim file1 file2 file3
即为同时打开三个文件,相应的创建了三个Buffer。
Buffer与窗口不是一一对应的关系,但Buffer必须借助Window才能显示。
将当前缓冲区内容写入文件,也就是保存文件,如果设置了readonly
则不能写入,如果加上!
表示”强制“,即使只读也可强制写入文件。
1 | :w[rite][!] {file} |
将当前所有窗口已修改的缓存都写入文件,进行保存。
1 | :wa[ll][!] |
重新将当前文件的内容加载到缓冲区,如果对当前缓冲区有修改则无法加载,使用!
可强制放弃对当前缓冲区的修改,重新加载文件内容到缓冲区。
1 | :e[dit][!] {file} |
为当前每一个缓存都打开一个窗口进行显示。
1 | :ba[ll] |
从缓冲区删除编号为N的缓存,如果当前已在Window中显示则也会关闭该Window。
1 | :bd {N} |
从缓冲区删除名称为”file”的缓存,如果当前已在Window中显示则也会关闭该Window。
1 | :bd {file} |
将”file”文件加载到缓冲区,但不会为其打开Window。
1 | :badd {file} |
2 Buffer的种类
符号 | 解释 |
---|---|
- | Readonly buffer,禁用了modifiable选项,只读缓冲区 |
= | Readonly buffer,只读缓冲区 |
a | Active buffer,活动缓冲区,当前显示在屏幕上 |
h | Hidden buffer,影藏缓冲区,已载入但没有显示在屏幕上 |
+ | Modified buffer,已经更改的缓冲区 |
x | Error buffer,读入时报错的缓冲区 |
% | Current buffer,当前缓冲区 |
# | Alternate buffer,交换缓冲区 |
u | Unlisted buffer,只有在列示命令中使用!修饰符才能显示的缓冲区 |
1 | :buffers |
1 | :files |
1 | :ls |
以上三种方式效果一样,都是列出当前所有Buffer的信息。
Vim基础篇(三)——缓存操作
前言:
Buffer是一块内存缓冲区,Vim打开文件实际是把文件的内容读取到缓冲区中,未保存时修改内容实际是修改缓冲区中的内容,保存文件就是把缓存中的内容写入到文件中(文件是存储在硬盘)。对Vim的缓冲区有一定熟悉了解,并掌握一些基础的Buffer操作将会使我们的编辑过程更加随心所欲。
1 Buffer的创建或删除
Vim打开文件实质是将处于硬盘的文件内容读取到内存中,也即只要是打开文件的操作Vim都将为打开的文件创建一个缓存空间。例如vim file1 file2 file3
即为同时打开三个文件,相应的创建了三个Buffer。
Buffer与窗口不是一一对应的关系,但Buffer必须借助Window才能显示。
将当前缓冲区内容写入文件,也就是保存文件,如果设置了readonly
则不能写入,如果加上!
表示”强制“,即使只读也可强制写入文件。
1 | :w[rite][!] {file} |
将当前所有窗口已修改的缓存都写入文件,进行保存。
1 | :wa[ll][!] |
重新将当前文件的内容加载到缓冲区,如果对当前缓冲区有修改则无法加载,使用!
可强制放弃对当前缓冲区的修改,重新加载文件内容到缓冲区。
1 | :e[dit][!] {file} |
为当前每一个缓存都打开一个窗口进行显示。
1 | :ba[ll] |
从缓冲区删除编号为N的缓存,如果当前已在Window中显示则也会关闭该Window。
1 | :bd {N} |
从缓冲区删除名称为”file”的缓存,如果当前已在Window中显示则也会关闭该Window。
1 | :bd {file} |
将”file”文件加载到缓冲区,但不会为其打开Window。
1 | :badd {file} |
2 Buffer的种类
符号 | 解释 |
---|---|
- | Readonly buffer,禁用了modifiable选项,只读缓冲区 |
= | Readonly buffer,只读缓冲区 |
a | Active buffer,活动缓冲区,当前显示在屏幕上 |
h | Hidden buffer,影藏缓冲区,已载入但没有显示在屏幕上 |
+ | Modified buffer,已经更改的缓冲区 |
x | Error buffer,读入时报错的缓冲区 |
% | Current buffer,当前缓冲区 |
# | Alternate buffer,交换缓冲区 |
u | Unlisted buffer,只有在列示命令中使用!修饰符才能显示的缓冲区 |
1 | :buffers |
1 | :files |
1 | :ls |
以上三种方式效果一样,都是列出当前所有Buffer的信息。
第一列是Buffer的编号,第二列为Buffer的状态信息,第三列为Buffer名称,也是对应的文件名称,第四列为光标在该Buffer中所处的行位置,光标回到该Buffer时会回到该位置。
3 Buffer切换
Window是用来显示Buffer的内容,所谓的切换就是切换Window中显示的Buffer。
切换到当前窗口所显示Buffer的前第N个Buffer,将其内容显示在窗口中。N缺省值为1。
1 | :bp[revious] {N} |
切换到当前窗口所显示Buffer的后第N个Buffer,将其内容显示在窗口中。N缺省值为1。
1 | :bn[ext] {N} |
当前窗口显示第一个Buffer的内容。
1 | :bf[irst] |
当前窗口显示最后一个Buffer的内容。
1 | :bl[ast] |
当前窗口显示编号为N的Buffer的内容。
1 | :b[uffer] {N} |
第一列是Buffer的编号,第二列为Buffer的状态信息,第三列为Buffer名称,也是对应的文件名称,第四列为光标在该Buffer中所处的行位置,光标回到该Buffer时会回到该位置。
3 Buffer切换
Window是用来显示Buffer的内容,所谓的切换就是切换Window中显示的Buffer。
切换到当前窗口所显示Buffer的前第N个Buffer,将其内容显示在窗口中。N缺省值为1。
1 | :bp[revious] {N} |
切换到当前窗口所显示Buffer的后第N个Buffer,将其内容显示在窗口中。N缺省值为1。
1 | :bn[ext] {N} |
当前窗口显示第一个Buffer的内容。
1 | :bf[irst] |
当前窗口显示最后一个Buffer的内容。
1 | :bl[ast] |
当前窗口显示编号为N的Buffer的内容。
1 | :b[uffer] {N} |