【vim小小記】vim的複製粘貼(包括系統剪貼板)

一、vim經常使用複製粘貼命令


Vim的複製粘貼命令無疑是y (yank),p(paster),加上yy,Phtml


PS:

vim有個頗有意思的約定(我以爲是一種約定),就是某個命令的大小寫都是實現某種功能,只是方向不一樣,好比:

w 跳轉到下個word,W:跳轉到上個word
f  某行正向查找並跳轉    F: 反向....

而後部分雙寫的字母有行操做:express

yy   複製一行
dd   刪除一行

因此,vim

p就是在當前光標後粘貼,P就是在當前光標前粘貼


另外,說完p,其實還有幾個命令有時也是頗有用的緩存

gp,和p的功能基本一致,只是粘貼完,它會把光標移動至粘貼內容以後;gP同理

:pu[t] ,注意,這個是在命令界面輸入的pu/put,它的意思是把x寄存器的內容粘貼到下一行


二、vim的寄存器和系統剪貼板

寄存器簡介

vim強大之處之一就是它自帶一堆寄存器,每一個寄存器獨立使用,你能夠在不一樣寄存器中存儲不一樣數據,命令,你能夠把這個想象成一個增強版的剪貼板,固然它的功能不止剪貼板這麼簡單。若是你想看vim的官方文檔有關部分:ui

:help  registers


根據官方手冊:vim有9種寄存器spa

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 "/code


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):"/,緩存最近的搜索模式。

至於每一個寄存器更加具體的使用方法,我但願你們能查詢手冊,畢竟,這篇文章重點不在寄存器,可能哪天會寫一篇小記講講寄存器吧


基本操做

聊聊寄存器的基本操做把
orm

如今輸入命令,你就能夠查詢一下目前寄存器的狀況
htm

:reg

寄存器的使用方法也很簡單:經過「 加上 寄存器名,就能夠訪問特定的寄存器:

"ap      粘貼字母a寄存器內容
"1y      把選取內容複製到數字寄存器1


系統剪貼板

細心的人已經發現我重點標註的寄存器部分了,就是那個選擇及拖拽寄存器,這就是系統的剪貼板,咱們一般使用的ctrl+c  ctrl+v 的內容就保存在這個寄存器中,因此你要把須要複製的內容放在+寄存器中,就能夠在gui界面中用粘貼或ctrl+v粘貼了,同理,粘貼在vim中也同樣ip

"+y    複製到系統剪貼板
"+p    粘貼
"+gp  粘貼而且移動光標到粘貼內容後


可是光是輸入命令"+p就已經讓人以爲很麻煩了,這時候,vim的map功能就又能夠大顯神通了,咱們只須要把「+y  和 」+gp  map到你喜歡的快捷鍵上便可:

首先打開vimrc(若是沒有,請建立一個)

vim ~/.vimrc

而後在其中輸入:

nmap <c-v> "+gp
nmap <c-c> "+y

你如今就可使用ctrl+c  和ctrl+v 了, 可是!我本人是不推薦用這個快捷鍵的,由於自己<c-v>是我很經常使用的塊命令

因此,我通常修改爲:

nmap <leader>v "+gp
nmap <leader>c "+y

至於<leader>是什麼按鍵,就能夠按照你的喜愛來拉,個人是','

let mapleader=","


ps.說一下,我用的是nmap,說明這個命令只有在normal狀況下才生效,在insert模式下是不生效的,爲何要這樣設置呢?由於有時候你確實須要輸入<leader>c/v的內容,好比,c  ,v ,並且,vim主要操做我以爲仍是應該在normal模式下,這纔是vim的高效的緣由。