VIM使用系列:寄存器與複製粘貼緩衝區

來源:互聯網
上載者:User

標籤:blog   http   io   os   使用   檔案   on   log   代碼   

轉自: http://www.2cto.com/os/201307/227903.html

VIM使用系列:寄存器與複製粘貼緩衝區
 
現在已經可以熟練使用VIM的大多數基本命令、功能來進行項目代碼的開發了,但是在項目的開發過程中,依然會感覺到一些操作效率比較低,比如通過h/j/k/l來進行游標的大範圍移動這類操作,顯然VIM提供了更高效的命令操作方式。最近經常需要完成的工作就是需要在代碼之間來回的複製、粘貼、搜尋和替換,常用的d/y/x/p命令已經顯得不夠,於是學習了一下VIM的寄存器功能,使用寄存器的內容緩衝功能可以極大地提高大量複製粘貼工作的效率。
 
寄存器類型
VIM中有9中類型的寄存器,寄存器的主要功能就是快取作業過程中刪除、複製、搜尋等的常值內容,通過 :help registers命令查看寄存器的詳細協助說明,這裡對類型翻譯如下:
 
未命名寄存器 ""  —— vim使用的預設寄存器,文本來源命令:d/c/s/x/y
10個數字命名寄存器 "0 - "9 —— vim緩衝yank和delete行操作命令產生的文本
1個非行刪除內容緩衝寄存器 "- —— vim緩衝delete操作在非行上時產生的文本
26個字母命名寄存器 "a - "z / "A - "Z —— 完全由使用者指定內容的寄存器
4個唯讀寄存器 ". "% "# ": 
運算式寄存器 "= —— 使用VIM強大的運算式功能(從來沒用過,一點不懂)
GUI選擇寄存器 "* "+ "~ —— vim緩衝在GUI中選擇的文本
黑洞寄存器 "_ —— 類似Linux中的/dev/null檔案,只進不出,可用來濾掉影響預設寄存器的內容
最後搜尋模式寄存器 "/ —— 緩衝在vim中使用過的最後的搜尋內容
這些寄存器很多,那怎麼來查看它們的內容呢?使用VIM的 :registers命令或者短一些的 :dis命令,這兩個命令會列出所有存在的寄存器的內容,然後你就可以選擇指定寄存器的內容進行粘貼了。
 
寄存器使用
注意到上述寄存器的命名前面都有一個雙引號,這就是使用他們的方式。
 
在Normal模式下操作d/y/x等命令時,通過在命令前面加入寄存器的名字如 "ayy,來將命令產生的內容放入指定的寄存器中,如上面的a寄存器中,而不是vim預設使用的""寄存器和"0寄存器。
粘貼時,通過在p命令的前面加入寄存器的名字如 "ap,來將寄存器中的內容放入到游標所在的位置行上或下。
唯讀寄存器、搜尋模式寄存器由VIM進行內容放入,使用者只能使用他們的內容。
下面對個人覺得在開發中會比較有用和熟悉的一些寄存器進行具體的說明。
數字寄存器
"0 : 存放最近使用最多的y命令產生的常值內容,如果未顯式指定其內容
"1 - "9 : 存放最近使用的d行操作命令產生的常值內容,如果未顯式指定其內容,並在9個寄存器間對內容進行輪流存放,即有新的內容時,將"1的內容推到"2, 2到3,3到4 ...
字母寄存器
如果你打算將一段內容進行多次長時間的來回拷貝,則最好使用字母寄存器,因為他們的內容被你修改後不會被VIM自動修改掉,而數字寄存器的內容隨著新操作的使用會覆蓋掉你指定的內容。
 
"a - "z : 每次指定這些寄存器之一時,產生的常值內容將覆蓋掉寄存器中原有的內容
"A - "Z : 每次指定這些寄存器之一時,產生的常值內容將追加到寄存器中原有的內容之後,如果選項‘cpoptions‘的值中有>符號,則在追加同時會進行行分割,可以通過命令: :set cpo+=>設定。
唯讀寄存器
". : 包含最後在vim insert模式下插入的常值內容,也可以通過命令 . 重複上一次的操作。
"% : 包含當前檔案的名字,方便在檔案中插入檔案名稱
"# : 包含當前可選擇的檔案名稱,指在當前會話中使用過的檔案的名字
系統剪貼簿
在系統中進行多個應用之間的內容拷貝時,會使用到系統剪貼簿,這可以使用"*,"+寄存器來將內容粘貼到VIM中,他們也都是唯讀寄存器。除此之外,還可以使用鍵盤快速鍵Shift+Insert來快速插入。
寄存器內容設定
除了上面介紹的通過在操作命令前添加寄存器號來指定寄存器的內容外,vim還提供了在命令列顯式指定寄存器內容的命令 :[email protected],例如命令 :let @a = "vim registers blog", 表示將"a寄存器內容設定為右值。
 
粘貼模式
在vim中可以通過命令 :set paste來設定粘貼模式狀態,此時粘貼的內容將可以保持原有的格式不變;通過命令 :set nopaste命令回到正常操作模式。

VIM使用系列:寄存器與複製粘貼緩衝區

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.