1、vim常用復制粘貼命令
Vim的復制粘貼命令無疑是y (yank),p(paster),加上yy,P
PS:
vim有個很有意思的約定(我覺得是一種約定),就是某個命令的大小寫都是實現某種功能,只是方向不同,比如:
- w 跳轉到下個word,W:跳轉到上個word
- f 某行正向查找並跳轉 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 "/
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> "+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的高效的原因。