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