1. 程式人生 > >在vim中快速複製貼上多行

在vim中快速複製貼上多行

原文出處:https://www.cnblogs.com/MMLoveMeMM/articles/3707287.html

用vim寫程式碼時,經常遇到這樣的場景,複製多行,然後貼上。
 這樣做:
1. 將游標移動到要複製的文字開始的地方,按v進入可視模式。
2. 將游標移動到要複製的文字的結束的地方,按y複製。此時vim會自動將游標定位到選中文字的開始的地方,並退出可視模式。
3. 我移動游標到文字結束的地方,按p貼上。

一、多行 dd
刪除一行
ndd
刪除以當前行開始的n行

dw
刪除以當前字元開始的一個字元
ndw
刪除以當前字元開始的n個字元
d$、D
刪除以當前字元開始的一行字元
d)
刪除到下一句的開始

d}
刪除到下一段的開始
d回車
刪除2行

二、複製多行
任務:將第9行至第15行的資料,複製到第16行

方法1:(強烈推薦)
:9,15 copy 16  或 :9,15 co 16
由此可有:
:9,15 move 16  或 :9,15 m 16 將第9行到第15行的文字內容到第16行的後面  

方法2:
游標移動到結束行,ma
游標移動到起始行,輸入y'a
游標移動到需要複製的行,輸入p,行前複製則輸入大寫P

方法3:
把游標移到第9行 shift + v
再把游標移動到第15行  ctrl + c
再把游標死去到第16行  p mysql

方法4:
游標移動到起始行,輸入ma
游標移動到結束行,輸入mb
游標移動到貼上行,輸入mc
然後輸入:'a,'b, co 'c   把co換成m就是剪下
若要刪除多行,則輸入:'a,'b de

vi設定自動縮排:set smartindent
vi設定顯示行號:set number 或 set nu

Vim中如何全選並複製

全部刪除:按esc後,然後dG
全部複製:按esc後,然後ggyG

全選高亮顯示:按esc後,然後ggvG或者ggVG

vim如何與剪貼簿互動(將vim的內容複製出來)

習慣了在windows環境各個應用程式之間如UltraEdit,記事本,eclipse之間ctrl+c,ctrl+v進行復制貼上的你,如何在vim與別的windows應用程式之間拷貝貼上呢?
當然你可以在vim裡選擇用滑鼠,選中一塊文字然後右鍵複製,再到應用程式裡ctrl+v貼上,只不過這樣效率就差多了。
更好的做法是,在vim中使用 "*y 使用進行復制,然後在應用程式中用ctrl+v貼上。
從應用程式到vim則在應用程式中使用ctrl+c複製,在vim中使用shift+insert貼上


如:

"*yy複製一行
"*y2w複製二個詞
……

實現的原理是:
"   表示使用暫存器
"*   表示使用當前選擇區

我個人推薦使用ctrl+insert複製,shift+insert貼上。

vim有多個剪貼簿,其中就包括了系統剪貼簿。使用命令:reg可以看到各個剪貼簿的內容。其中“”表示當前使用的剪貼簿,“0-9是歷史剪貼簿,“#就是系統剪貼簿了(你可以在系統裡拷貝一些東西,看是不是會出現在“#剪貼簿裡)。在vim中使用y可以把內容拷貝到“”號剪貼簿,繼續y會把新的東西放入“”,而原來“”的東西就會被壓入“0-9的各個歷史剪貼簿中。X11系統下還有一個“*的剪貼簿對應中鍵拷貝貼上,windows不知道有沒有。

解決第一個問題:

“+y 把選中內容拷貝到”+號剪貼簿,即系統剪貼簿

“+p 把系統剪貼簿的內容貼上到vim,這一個用shift+insert也可完成

解決第二個問題:

“0p 可以把已經被擠到”0剪貼簿的內容A重新粘貼出來

嫌長的做一個map,對映到某個功能鍵或組合就方便了。