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 主內(內部表示),標簽主外(外部窗口布局展示)。初學者會容易混淆具體會在后面標簽部分講解。