Vim 的缓冲区与多文件编辑
下图中包含了 Vim 中的 buffer、窗口、标签的关系。初学者会对这三个概念容易混淆。下面几节内容我们会依次为大家讲解。本节我们会首先讲解下 buffer(缓冲区)的概念。
A buffer is an area of Vim’s memory used to hold text read from a file. In addition, an empty buffer with no associated file can be created to allow the entry of text. –vim.wikia ——官网
这里引用的是官网一段对于 Vim 缓冲区的解释。说白了,buffer 就是 Vim 开辟的一块内存,用于存放从文件中读取的文本内容。
1. 缓冲区
我们在编辑文件时候,本质上其实是文件在内存的映像。就是我们说的缓冲区。而 文件 是需要存储在磁盘上的。所以我们编辑完文件后通过 :w 写入磁盘后才叫文件。
buffer 有三种状态:
- active: 这种状态buffer 显示在当前窗口。
 - hidden: 这种状态buffer是隐藏不显示的。
 - inactive: 这种状态buffer 既不显示也不包含任何东西。
 
1.1 缓冲区列表
我们可以同时"编辑多个文件(缓冲区)",我们可以在这些缓冲区中切换使用。
我们可以通过三种命令展示缓冲区列表:
- :files
 - :buffers
 - :ls
 
:buffers                                                                                                               
  1 %a   "main.tf"                      line 1
  2      "jmx_exporter.json"            line 0
  3      "bind_exporter.json"           line 0
:ls                                                                                                                    
  1 %a   "main.tf"                      line 1
  2      "jmx_exporter.json"            line 0
  3      "bind_exporter.json"           line 0
:files                                                                                                                 
  1 %a   "main.tf"                      line 1
  2      "jmx_exporter.json"            line 0
  3      "bind_exporter.json"           line 0
这里可以看到三个命令结果都一样的。我们具体看下结果展示各个部分的意思。
| 第一列 | 第二列 | 第三列 | 第四列 | 
|---|---|---|---|
| 缓冲区序列号 | 指示状态 | 文件名 | 光标位置 | 
这里有点难理解的是指示状态:
- - 只读缓冲区
 - a 活动缓冲区,当前显示在屏幕上的
 - h 隐藏缓冲区
 - % 当前的缓冲区
 - 
交换缓冲区
 - + 已经更改的缓冲区
 
1.2 缓冲区列表操作
| 指令 | 含义 | 
|---|---|
| :bp[revious] | 上一个缓冲区 | 
| :bn[ext] | 下一个缓冲区 | 
| :bf[irst] | 到第一个缓冲区 | 
| :bl[ast] | 到最后一个缓冲区 | 
| :buffer Nubmer/File_name | 指定缓冲区 | 
| :ball | 编辑所有缓冲区 | 
| :badd add.txt | 增加一个缓冲区 | 
| :bdelete add.txt | 删除一个缓冲区 | 
| :bufdo %s/pattern/replace/ge | update | 
下面我会依次演示上面的操作:
1.2.1 移动操作
我们先来看下缓冲区如何进行移动操作:
1.2.2 增删操作
这里我们演示一下如何增加或删除一个缓冲区:
2. 小结
以上就是 Vim buffer 内容讲解。这个会和之后的标签概念相似。可以简单理解为 buffer 主内(内部表示),标签主外(外部窗口布局展示)。初学者会容易混淆具体会在后面标签部分讲解。
          本文来自互联网用户投稿,不拥有所有权,该文观点仅代表作者本人,不代表本站立场。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。
访问者可将本网站提供的内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯本网站及相关权利人的合法权利。
本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站,邮箱:80764001@qq.com,予以删除。
