標籤:vim ctrl v 剪貼簿 複製 粘貼
1、vim常用複製粘貼命令
Vim的複製粘貼命令無疑是y (yank),p(paster),加上yy,P
PS:
vim有個很有意思的約定(我覺得是一種約定),就是某個命令的大小寫都是實現某種功能,只是方向不同,比如:
w 跳轉到下個word,W:跳轉到上個wordf 某行正向尋找並跳轉 F: 反向....
然後部分雙寫的字母有行操作:
yy 複製一行dd 刪除一行
所以,
p就是在當前游標後粘貼,P就是在當前游標前粘貼
另外,說完p,其實還有幾個命令有時也是很有用的
gp,和p的功能基本一致,只是粘貼完,它會把游標移動至粘貼內容之後;gP同理:pu[t] ,注意,這個是在命令介面輸入的pu/put,它的意思是把x寄存器的內容粘貼到下一行
2、vim的寄存器和系統剪貼簿
寄存器簡介
vim強大之處之一就是它內建一堆寄存器,每個寄存器獨立使用,你可以在不同寄存器中儲存不同資料,命令,你可以把這個想象成一個加強版的剪貼簿,當然它的功能不止剪貼簿這麼簡單。如果你想看vim的官方文檔有關部分:
:help registers
根據官方手冊:vim有9種寄存器
There are nine types of registers: registers E354
1. The unnamed register ""
2. 10 numbered registers "0 to "9
3. The small delete register "-
4. 26 named registers "a to "z or "A to "Z
5. four read-only registers ":, "., "% and "#
6. the expression register "=
7. The selection and drop registers "*, "+ and "~
8. The black hole register "_
9. Last search pattern register "/
1.無名(unnamed)寄存器:"",緩衝最後一次操作內容;
2.數字(numbered)寄存器:"0 ~"9,緩衝最近操作內容,複製與刪除有別, "0寄存器緩衝最近一次複製的內容,"1-"9緩衝最近9次刪除內容
3.行內刪除(small delete)寄存器:"-,緩衝行內刪除內容;
4.具名(named)寄存器:"a ~ "z或"A - "0Z,指定時可用;
5.唯讀(read-only)寄存器:":,".,"%,"#,分別緩衝最近命令、最近插入文本、當前檔案名稱、當前交替檔案名稱;
6.運算式(expression)寄存器:"=,唯讀,用於執行運算式命令;
7.選擇及拖拽(selection and drop)寄存器:"*,"+,"~,存取GUI選擇文本,可用於與外部應用互動,使用前提為系統剪下板(clipboard)可用;
8.黑洞(black hole)寄存器:"_,不快取作業內容(乾淨刪除);
9.模式寄存器(last search pattern):"/,緩衝最近搜尋模式。
至於每個寄存器更加具體的使用方法,我希望大家能查詢手冊,畢竟,這篇文章重點不在寄存器,可能哪天會寫一篇小記講講寄存器吧
基本操作
聊聊寄存器的基本操作把
現在輸入命令,你就可以查詢一下目前寄存器的情況
:reg
寄存器的使用方法也很簡單:通過“ 加上 寄存器名,就可以訪問特定的寄存器:
"ap 粘貼字母a寄存器內容"1y 把選取內容複寫到數字寄存器1
系統剪貼簿
細心的人已經發現我重點標註的寄存器部分了,就是那個選擇及拖拽寄存器,這就是系統的剪貼簿,我們通常使用的ctrl+c ctrl+v 的內容就儲存在這個寄存器中,所以你要把需要複製的內容放在+寄存器中,就可以在gui介面中用粘貼或ctrl+v粘貼了,同理,粘貼在vim中也一樣
"+y 複製到系統剪貼簿"+p 粘貼"+gp 粘貼並且移動游標到粘貼內容後
但是光是輸入命令"+p就已經讓人覺得很麻煩了,這時候,vim的map功能就又可以大顯神通了,我們只需要把“+y 和 ”+gp map到你喜歡的快速鍵上即可:
首先開啟vimrc(如果沒有,請建立一個)
vim ~/.vimrc
然後在其中輸入:
nmap <c-v> "+gpnmap <c-c> "+y
你現在就可以使用ctrl+c 和ctrl+v 了,但是!我本人是不推薦用這個快速鍵的,因為本身<c-v>是我很常用的塊命令
所以,我一般修改成:
nmap <leader>v "+gpnmap <leader>c "+y
至於<leader>是什麼按鍵,就可以按照你的喜好來拉,我的是‘,‘
let mapleader=","
ps.說一下,我用的是nmap,說明這個命令只有在normal情況下才生效,在insert模式下是不生效的,為什麼要這樣設定呢?因為有時候你確實需要輸入<leader>c/v的內容,比如,c ,v ,而且,vim主要操作我覺得還是應該在normal模式下,這才是vim的高效的原因。
【vim小小記】vim的複製粘貼(包括系統剪貼簿)