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的信息。

reg.png

  第一列是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}