一.寄存器分類
1.無名(unnamed)寄存器:"",緩存最後一次操作內容;即複製(yy等)或刪除(dd等)文本存放的地方,如果直接執行粘貼p(未指定任何寄存器),則直接從此寄存器讀取數據並粘貼。
2.數字(numbered)寄存器:"0 ~"9,緩存最近操作內容,複製與刪除有別:
"0 寄存器緩存最近一次不指定寄存器複製(如yy,2yy,3yy…)的內容,(yy,2yy,3yy操作後“”與“0寄存器裏的內容都是相同的)
"1-"9寄存器 緩存最近9次刪除內容。1最新,9最舊,由vim自動維護,而且由於超過9個刪除時順序會發生變化。因此我覺得我們一般不必記得”1-“9存了什麼內容,也難以記住。使用前可以通過:reg查一下寄存器的內容再選擇操作。
(要讀取這些寄存器進行粘貼,使用“np,如”0p,“1p)
3.行內刪除(small delete)寄存器:"-,緩存行內刪除(如x,2x,3x等)內容;
(要讀取這些寄存器進行粘貼,使用“-p)
4.具名(named)寄存器:"a ~ "z或"A – "0Z,指定時可用;我平時習慣用mk作標記,然後光標移到某行使用”ay'k複製,這裏的a就是寄存器a,然後用“ap粘貼。
(同一個字母的大寫和小寫表示的是同一個寄存器,但是行爲會不同,字母寄存器的名稱大寫時,當使用大寫的寄存器進行復制或者刪除文本時,原先的字母寄存器中的內容會被保留,剛刪除或複製的內容則附加到原來字母寄存器內容的後面。 字母寄存器只有在指定時才被使用。)
5.只讀(read-only)寄存器:":,".,"%,"#,分別緩存最近命令、最近插入文本、當前文件名、當前交替文件名;
": | 最近命令 |
". | 最近插入文本,還記得我們用 . 來重複最近操作不? |
"% | 當前文件名 |
"# | 當前交替文件名,還記得e#不? |
6.表達式(expression)寄存器:"=,只讀,用於執行表達式命令;不常用,反正我沒用過。
7.選擇及拖拽(selection and drop)寄存器:"*,"+,"~,存取GUI選擇文本,可用於與外部應用交互,使用前提爲系統剪切板(clipboard)可用;不常用。
8.黑洞(black hole)寄存器:"_,不緩存操作內容(乾淨刪除);不常用
9.模式寄存器(last search pattern):"/,緩存最近的搜索模式。我們用/或?搜索時會將搜索字符串存到此寄存器。
(助記:調用寄存器方式爲“+寄存器名,如”0,"a,"%等)
二. 查看寄存器內容
:reg 查看所有寄存器內容
:reg 寄存器名 查看單個寄存器內容 比如 :reg _ :reg * :reg 1 :reg 9 :reg a 等等
三. 總結
命令難以記住,除了摸清規律外,最好的方法是多操作,這樣印象是最深的。好像我自己,有時讓我說用什麼命令我說起來很陌生,但假如要我操作卻可以很熟練地打出來。這就是感覺吧!關於vim寄存器還有很多功能,比如賦值,計算等,但我覺得那些不常用,因此也不寫了,有興趣的同學網上搜搜吧。