Vim 寄存器
寄存器這個概念,在之前的Vim復制、刪除章節已經和大家提過。想必大家應該還有印象。我們根據那節場景講了無名寄存器和復制專用寄存器。本節,我們就更加深入了解寄存器的概念和使用場景。
1. 寄存器概念
Vim 中的寄存器簡單來說就是用于保存文本的容器。我們對不同場景劃分了不同的寄存器,或者說容器。主要用于 Vim 使用中臨時保存一些數據。
之前章節中我們我們提到過這個概念,并且對 Windows 和 Vim 編輯器之間不同點做了對比。它們之間最大不同就在于寄存器的概念。Vim 分門別類地劃分了幾十組不同的寄存器或者容器來臨時保存文本。Windows 系統只使用單一的剪切板。
1.1 寄存器常用種類
Vim 寄存器有很多種,這里我們只會講解四種常用的寄存器。其他大家可以在 Vim help(:h reg)中了解即可。
類型 | 含義 | 表達式 | 舉例 | 特點 |
---|---|---|---|---|
無名寄存器 | 默認寄存器 | “” | “” p = p | 會被最后一條覆蓋 |
數字寄存器 | "+{0-9}緩存最近10次操作 | “{0-9} | "1P | 0是復制專用,1-9用于常規刪改記錄 |
有名寄存器 | 26個英文字母命名 | "[a-z]/[A-Z] | "ayw | 賦予具體字母名字 |
黑洞寄存器 | 有去無回 | "_ | "_dw | 只刪除不保存,相當于windows 中的刪除 |
2. 實戰案例
寄存器使用相關命令:
命令 | 含義 |
---|---|
:reg | 查看所有寄存器 |
:reg 寄存器名字 | 查看具體寄存器 |
使用寄存器:"{reg_類型}+命令: 無論是存入寄存器還是引用寄存器內容都是這個公式。我們來具體看下。
2.1 無名寄存器
這個是默認寄存器,顧名思義就是沒有名字。使用雙引號表示——"".我們的刪除、復制等操作都默認存在這里。當然復制除了默認存在無名寄存器還會存入專用的復制寄存器,后面會提到。
刪除操作
可以看到當我們刪除了resource 后,通過查看寄存器可以看到在無名寄存器 ——""中包含了我們刪除的字符串resource。
復制操作
可以看到當我們復制字符串dataspace后,再查看寄存器時候發現兩個變化:
- 首先無名寄存器中之前存入的 resource 被 dataspace 覆蓋了。
- 可以看到數字0寄存器也變成了 dataspace。這就是我們之前說的復制專用寄存器。
2.2 數字寄存器
除了剛才的數字 0 寄存器(也叫復制寄存器)之外,還有其他九個數字寄存器[1-9]。這就等于給寄存器編了個號碼,類似于人的身份證號一樣。
特點: 當刪除一整行時候
- 數字1:最近刪除的文本
- 數字2:存放倒數第二刪除的文本
刪除一整行場景
可以看到數字寄存器內容會按照刪除行順序倒序。需要注意的是只有刪除整行才會這樣。大家可以自己試試看刪除單個單詞會出現這樣的情況么?
2.3 有名寄存器
這就相當于給寄存器起了個名字。只不過名字比較簡單 [a-Z]。場景和邏輯都比較簡單。下面我們來看下演示:
可以看到我們給每個刪除操作都分門別類取了個名字。這樣就可以按需提取使用了。
黑洞寄存器
這個看名字就很容易理解。指定到這個寄存器的內容是有去無回的。真正意義上的刪除。
使用黑洞寄存器后,我們可以通過 reg 命令查看寄存器內容。可以看到所有的寄存器都不存在env 內容,也就是說通過寄存器已經直接刪除了。
3. 小結
以上就是寄存器的主要內容,如果大家看過 Vim 幫助的話。會發現還有很多其他的寄存器。這里只是涉及最常用的寄存器?;究梢詽M足大家日常使用需要。其他更高級的寄存器,大家可以自行查看使用。