Linux CentOS7 vim寄存器解讀
計算機中通常所說的寄存器register一般指的是CPU中的寄存器,用來暫存CPU處理所需要的指令、數(shù)據(jù)等。
vim中同樣也有寄存器,使用的方式和CPU非常類似。
vim中的寄存器(register)作用和windows中的剪切板類似,不過vim中的寄存器不止一個,有不同的類別,有不同的用處。
vim的寄存器是一組用于保存文本的簡單容器。它們既可像剪貼板那樣,剪切、復(fù)制和粘貼文本;也可以記錄一系列按鍵操作,把它們錄制成宏。
vim常規(guī)使用系統(tǒng)剪貼板進行剪切、復(fù)制與粘貼操作,如果再運用寄存器手段,將為刪除、復(fù)制與粘貼等操作提供更多選擇,而更具靈活性,同時也提高了編輯文本效率。
一、認(rèn)識寄存器
vim的寄存器可以看成vim中額外用來存儲信息的區(qū)域,雖然看不見,但是如果使用d、x、s、y、p等命令,都無意識地使用了vim的寄存器。
你可能已經(jīng)在復(fù)制或刪除文本并用p或P粘貼它們到別處的時候使用過Vim的寄存器了。但是,你知道Vim總共有10種不同類型的寄存器嗎?如果正確地使用Vim寄存器,將幫助您從重復(fù)的輸入中解放出來。
總的來說,寄存器就是一個可自定義的多重剪切板,超級剪切板。
1.寄存器分類
vim所擁有的10種寄存器類型:
匿名寄存器("")編號寄存器("0-9)小刪除寄存器("-)命名寄存器("a-z)只讀寄存器(":,".,"%)Buffer交替文件寄存器("#)表達式寄存器("=)選取和拖放寄存器("*,"+)黑洞寄存器("_)搜索模式寄存器("/) 2.寄存器作用與功能
常用的有匿名寄存器("")和命名寄存器("a-z)。
- 匿名寄存器("")
匿名寄存器,又常稱為無名寄存器,是vim默認(rèn)的寄存器,復(fù)制、刪除、修改等操作的內(nèi)容都會保存在該寄存器中。
倘若沒有指定要使用的寄存器,vim將缺省使用無名寄存器,它可以用雙引號表示。為了顯式地引用該寄存器,需要使用兩個雙引號。例如,""p,它完全等同于p命令。x、s、d、c與y命令(以及它們對應(yīng)的大寫命令)都會覆蓋無名寄存器中的內(nèi)容。無論哪一種情況,都可以通過加"{register}前綴來指定另外一個寄存器,但無名寄存器總是缺省的。事實上,無名寄存器的內(nèi)容很容易被覆蓋,不小心會導(dǎo)致問題發(fā)生。
- 命名寄存器("a-z)
命名寄存器使用字母a-z來命名。a-z命名寄存器可以存儲復(fù)制的、修改的、和被刪除的文本。用戶需要顯示地告訴vim要使用的命名寄存器。
追加文本:使用大寫版本的命名寄存器來向原來的命名寄存器中追加文本。
- 復(fù)制專用寄存器("0)
就是使用y命令復(fù)制的內(nèi)容都會存放到這個寄存器中。
緩存最近操作內(nèi)容,復(fù)制與刪除有別。
- 黑洞寄存器("_)
顧名思義,這個寄存器的功能和/dev/null設(shè)備非常地相似,就是將一切輸入其中的東西都吞噬掉。我們常用x命令來刪除某個字符,用dd命令來刪除某行,其實這些都不是刪除,是剪切,真正的刪除應(yīng)該是這些命令:
- "_dd //刪除某行
- "_x //刪除光標(biāo)下的字符
文件名寄存器("%)
- "%代表的是文件名寄存器,存放的是當(dāng)前正在編輯的文件名
二、引用寄存器
我們重點討論命名寄存器的命名、使用等操作。
本文中提到的d命令,y命令,c命令指的是和這個操作符相關(guān)聯(lián)的命令集合,比如和y操作符相關(guān)聯(lián)的一些命令如下:
- yy //復(fù)制當(dāng)前行
- yw //當(dāng)前光標(biāo)下面的這個單詞
- yit //復(fù)制一個html標(biāo)簽中的內(nèi)容
- yft //復(fù)制當(dāng)前行上光標(biāo)到第一個t之間的所有內(nèi)容
- yiw //復(fù)制一個單詞的內(nèi)容(yank in word)
vim的刪除、復(fù)制與粘貼命令都會用到眾多寄存器中的某一個??梢酝ㄟ^給命令加"{register}前綴的方式指定要用的寄存器。若不指明,vim將缺省使用無名寄存器。
1.在普通模式中使用寄存器
不論在哪一類模式中,都是先定義(或生成)寄存器,再使用。
如果想把當(dāng)前單詞復(fù)制到寄存器a中,可執(zhí)行"ayiw,或者,可以用"bdd,把當(dāng)前整行文本剪切至寄存器b中。在此之后,既可以輸入"ap粘貼來自寄存器a的單詞,也可使用"bp命令粘貼來自寄存器b的一整行文本,兩者互不干擾。
比如,%代表的是文件名寄存器,存放的是當(dāng)前正在編輯的文件名,我們現(xiàn)在打開一個文件demo.txt,處于普通模式,此時輸入以下內(nèi)容:
"%p
//表示將文件名寄存器的內(nèi)容粘貼到當(dāng)前行
文件內(nèi)容就變成這個樣子了:
2.在底行模式中使用寄存器
除了普通模式的命令外,vim也提供用于刪除、復(fù)制與粘貼操作的Ex命令(底行模式下)。
例如,可以執(zhí)行:delete c,把當(dāng)前行剪切到寄存器c,然后再執(zhí)行:put c命令將其粘貼至當(dāng)前光標(biāo)所在行之下。
delete命令可以簡寫為d。
- 執(zhí)行d b命令,刪除當(dāng)前行,內(nèi)容存入b寄存器中
- 執(zhí)行nd d命令,刪除第n行,內(nèi)容存入d寄存器中。
如下圖,n=8
執(zhí)行粘貼命令時,不能把put簡寫為p,會報錯。
- 執(zhí)行put d命令時,將在當(dāng)前行后粘貼d寄存器中的內(nèi)容。
- 執(zhí)行nput d命令時,將在第n行后粘貼d寄存器中的內(nèi)容。
如下圖,n=3
一個很酷的技巧是將黑洞寄存器("_)傳給:put命令。因為黑洞寄存器不保存任何值,:put _命令將插入一個新的空白行。您可將這個與全局命令聯(lián)合起來,插入多個空行。
3.在編輯模式中使用寄存器
在編輯模式中,我們不能定義或命名寄存器(這是因為:只能通過命令的方式命名寄存器,在編輯模式下,不能執(zhí)行命令,就不能命名寄存器)。
在編輯模式下,我們可以使用在其他模式下命名的寄存器(如果是在一個服務(wù)器,一個系統(tǒng)中,其他人在其他文檔中命名的寄存器)。具體使用方法:按下ctrl+r鍵,(將顯示一個")再加上相應(yīng)的寄存器的名字,就可以插入寄存器中的內(nèi)容。
在編輯模式下,一般用的最多的是系統(tǒng)剪切板:選擇內(nèi)容;用ctrl+insert復(fù)制;用shift+insert粘貼。
4. 在可視模式中使用寄存器
在可視模式下,一般用的最多的是無名寄存器。選擇內(nèi)容后,錄入y命令進行復(fù)制,錄入d命令刪除內(nèi)容。
三、查看寄存器
查看寄存器里面緩存的內(nèi)容,可以使用多個命令,如dis,registers,register,reg等。
- :reg [寄存器名稱]
- :reg # 查看當(dāng)前所有寄存器
- :reg a b c # 查看指定的命名寄存器
四、刪除寄存器
從技術(shù)上來說,我們沒有必要來清除任何寄存器,因為你下一個使用來存儲文本的寄存器會自動覆蓋該寄存器中之前的內(nèi)容。
如果想清除寄存器中的內(nèi)容,可以使用表達式 :let @a='' 來將寄存器 "a的值設(shè)為空的字符串。
寄存器的生命周期是很長的,即使服務(wù)器重啟,只要能正常進入系統(tǒng),寄存器里的內(nèi)容都是一直存在的。
五、寄存器與剪切板
在討論寄存器時,一個繞不開的話題是與系統(tǒng)剪切板的關(guān)系。
系統(tǒng)剪切板是所有操作系統(tǒng)必備的工具或功能,在復(fù)制、刪除、粘貼等方面發(fā)揮著重要作用。
在linux中,通過設(shè)置可以打通寄存器與剪切板,即剪切板用"+寄存器表示,與其他寄存器一樣使用。
其最大好處就是可以在普通模式、命令行模式下使用剪切板中的內(nèi)容。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Linux取消目錄的執(zhí)行權(quán)限的具體步驟
用戶對一個文件或目錄具有訪問權(quán)限,這些訪問權(quán)限決定了誰能訪問,以及如何范圍這些文件和目錄,本文給大家介紹了Linux取消目錄的執(zhí)行權(quán)限的具體步驟,并通過代碼示例講解的非常詳細,需要的朋友可以參考下2024-10-10CentOS 6.5 web服務(wù)器apache的安裝與基本設(shè)置
這篇文章主要介紹了CentOS 6.5 web服務(wù)器apache的安裝與基本設(shè)置,需要的朋友可以參考下2017-09-09Linux yum安裝postgresql出現(xiàn)Bad GPG signature問題的解決
這篇文章給大家介紹了Linux yum安裝postgresql出現(xiàn)Bad GPG signature問題的解決方法,文中通過代碼示例給大家介紹的非常詳細,具有一定的參考價值,需要的朋友可以參考下2024-02-02