亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

首頁 慕課教程 Vim 編輯器教程 Vim 編輯器教程 10 Vim 的緩沖區與多文件編輯

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 多buffer查找替換

下面我會依次演示上面的操作:

1.2.1 移動操作

我們先來看下緩沖區如何進行移動操作:

1.2.2 增刪操作

這里我們演示一下如何增加或刪除一個緩沖區:

2. 小結

以上就是 Vim buffer 內容講解。這個會和之后的標簽概念相似。可以簡單理解為 buffer 主內(內部表示),標簽主外(外部窗口布局展示)。初學者會容易混淆具體會在后面標簽部分講解。