【轉自】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行
刪除一行
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
由此可有:
: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,映射到某個功能鍵或組合就方便了。 |