vim的復制粘貼(包括系統剪貼板)


1、vim常用復制粘貼命令


Vim的復制粘貼命令無疑是y (yank),p(paster),加上yy,P


PS:

vim有個很有意思的約定(我覺得是一種約定),就是某個命令的大小寫都是實現某種功能,只是方向不同,比如:

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

然后部分雙寫的字母有行操作:

  1. yy   復制一行  
  2. dd   刪除一行  

所以,

  1. p就是在當前光標后粘貼,P就是在當前光標前粘貼  


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

  1. gp,和p的功能基本一致,只是粘貼完,它會把光標移動至粘貼內容之后;gP同理  
  2.   
  3. :pu[t] ,注意,這個是在命令界面輸入的pu/put,它的意思是把x寄存器的內容粘貼到下一行  


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

寄存器簡介

vim強大之處之一就是它自帶一堆寄存器,每個寄存器獨立使用,你可以在不同寄存器中存儲不同數據,命令,你可以把這個想象成一個加強版的剪貼板,當然它的功能不止剪貼板這么簡單。如果你想看vim的官方文檔有關部分:

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

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


基本操作

聊聊寄存器的基本操作把

現在輸入命令,你就可以查詢一下目前寄存器的情況

  1. :reg  

寄存器的使用方法也很簡單:通過“ 加上 寄存器名,就可以訪問特定的寄存器:

  1. "ap      粘貼字母a寄存器內容  
  2. "1y      把選取內容復制到數字寄存器1  


系統剪貼板

細心的人已經發現我重點標注的寄存器部分了,就是那個選擇及拖拽寄存器,這就是系統的剪貼板,我們通常使用的ctrl+c  ctrl+v 的內容就保存在這個寄存器中,所以你要把需要復制的內容放在+寄存器中,就可以在gui界面中用粘貼或ctrl+v粘貼了,同理,粘貼在vim中也一樣

  1. "+y    復制到系統剪貼板  
  2. "+p    粘貼  
  3. "+gp  粘貼並且移動光標到粘貼內容后  


但是光是輸入命令"+p就已經讓人覺得很麻煩了,這時候,vim的map功能就又可以大顯神通了,我們只需要把“+y  和 ”+gp  map到你喜歡的快捷鍵上即可:

首先打開vimrc(如果沒有,請創建一個)

  1. vim ~/.vimrc  

然后在其中輸入:

  1. nmap <c-v> "+gp  
  2. nmap <c-c> "+y  

你現在就可以使用ctrl+c  和ctrl+v 了, 但是!我本人是不推薦用這個快捷鍵的,因為本身<c-v>是我很常用的塊命令

所以,我一般修改成:

  1. nmap <leader>v "+gp  
  2. nmap <leader>c "+y  

至於<leader>是什么按鍵,就可以按照你的喜好來拉,我的是','

  1. let mapleader=","  


ps.說一下,我用的是nmap,說明這個命令只有在normal情況下才生效,在insert模式下是不生效的,為什么要這樣設置呢?因為有時候你確實需要輸入<leader>c/v的內容,比如,c  ,v ,而且,vim主要操作我覺得還是應該在normal模式下,這才是vim的高效的原因。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM