在vimrc中設置record
Vim的record功能在大量重復操作的場景下非常實用,但是,一般我們都要每次進入Vim時重新錄制record。而對于一些非常常用的record,我們想讓它永久地保持,我們知道這種需求需要借助Vim的配置文件vimrc
。但是具體怎么操作呢,筆者在走了一些彎路之后將設置方法記錄下來,希望能對大家有幫助。
我們以添加 Python 單行注釋為例,這需要我們在每一行前面添加:#
。
錄制record的方法我們已經比較熟悉了,不熟悉的同學可參考:Vim 重復操作的宏錄制。
我們知道Vim中的record是錄制保存在寄存器中的,以寄存器 q
為例,整個錄制的鍵位順序為:
以下代碼都是鍵盤的全部操作,包括在常規模式和插入模式下,模式切換的按鍵也體現在代碼中
<ESC>qqI#<ESC>j0q
這樣我們就將添加單行注釋的record錄制在了寄存器 q
中,只需 n@q
即可完成 n 行單行注釋。
那么,我們要怎樣把它保存到 vimrc
中呢?實際上,我們可以通過 :registers
命令來查看當前各個寄存器的值。其中寄存器 q
的值如下:
--- Registers ---
...
"q I#^[j0
...
可以看到 <ESC>
被替換成了 ^[
,并且需要注意:這里的 ^[
是有顏色的,筆者的機器上這里是藍色的。這一段q
的值就是我們需要添加到 vimrc
中的。
具體怎么添加呢?我們打開 vimrc
文件,并將上面的record重新錄制一遍,然后鍵入:
<ESC>"qp
我們會發現寄存器的值輸出在了文本中。我們只要將這個值賦給某個寄存器就可以了。但是一定要注意:不能直接將已經錄制的寄存器的值復制粘貼給某個我們想要長久保持的寄存器。可以試一下,這樣的話像 ^[
這樣的鍵是沒有顏色標識的,這樣我們 @
執行 record 的話只會輸出一段字符串。
假設我們將錄制好的record存放在寄存器 q
中,我們想要長期將該record放在寄存器 m
中,可行的做法是這樣:
<ESC>olet @m = "<ESC>"qpa""<ESC>
也就是說,我們必須通過 "qp
來將錄制在寄存器 q
中的值輸出出來,而不能直接復制文本。
這樣編輯完 vimrc
文件之后,保存退出。再次Vim打開一個文件,可驗證長期record生效。
Ref:
https://blog.easwy.com/archives/vi-tip-of-using-recording/