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