用vim寫代碼時(shí),經(jīng)常遇到這樣的場(chǎng)景,復(fù)制多行,然后粘貼。
這樣做:
1. 將光標(biāo)移動(dòng)到要復(fù)制的文本開(kāi)始的地方,按v進(jìn)入可視模式。
2. 將光標(biāo)移動(dòng)到要復(fù)制的文本的結(jié)束的地方,按y復(fù)制。此時(shí)vim會(huì)自動(dòng)將光標(biāo)定位到選中文本的開(kāi)始的地方,并退出可視模式。
3. 我移動(dòng)光標(biāo)到文本結(jié)束的地方,按p粘貼。
一、多行
dd
刪除一行
ndd
刪除以當(dāng)前行開(kāi)始的n行
dw
刪除以當(dāng)前字符開(kāi)始的一個(gè)字符
ndw
刪除以當(dāng)前字符開(kāi)始的n個(gè)字符
d$、D
刪除以當(dāng)前字符開(kāi)始的一行字符
d)
刪除到下一句的開(kāi)始
d}
刪除到下一段的開(kāi)始
d回車
刪除2行
二、復(fù)制多行
任務(wù):將第9行至第15行的數(shù)據(jù),復(fù)制到第16行
方法1:(強(qiáng)烈推薦)
:9,15 copy 16??或 :9,15 co 16
由此可有:
:9,15 move 16??或 :9,15 m 16 將第9行到第15行的文本內(nèi)容到第16行的后面
方法2:
光標(biāo)移動(dòng)到結(jié)束行,ma
光標(biāo)移動(dòng)到起始行,輸入y'a
光標(biāo)移動(dòng)到需要復(fù)制的行,輸入p,行前復(fù)制則輸入大寫P
方法3:
把光標(biāo)移到第9行 shift + v
再把光標(biāo)移動(dòng)到第15行??ctrl + c
再把光標(biāo)死去到第16行??p mysql
方法4:
光標(biāo)移動(dòng)到起始行,輸入ma
光標(biāo)移動(dòng)到結(jié)束行,輸入mb
光標(biāo)移動(dòng)到粘貼行,輸入mc
然后輸入:'a,'b, co 'c? ?把co換成m就是剪切
若要?jiǎng)h除多行,則輸入:'a,'b de
vi設(shè)置自動(dòng)縮進(jìn):set smartindent
vi設(shè)置顯示行號(hào):set number 或 set nu
Vim中如何全選并復(fù)制
全部刪除:按esc后,然后dG
全部復(fù)制:按esc后,然后ggyG
全選高亮顯示:按esc后,然后ggvG或者ggVG
vim如何與剪貼板交互(將vim的內(nèi)容復(fù)制出來(lái))
習(xí)慣了在windows環(huán)境各個(gè)應(yīng)用程序之間如UltraEdit,記事本,eclipse之間ctrl+c,ctrl+v進(jìn)行復(fù)制粘貼的你,如何在vim與別的windows應(yīng)用程序之間拷貝粘貼呢?
當(dāng)然你可以在vim里選擇用鼠標(biāo),選中一塊文字然后右鍵復(fù)制,再到應(yīng)用程序里ctrl+v粘貼,只不過(guò)這樣效率就差多了。
更好的做法是,在vim中使用?"*y?使用進(jìn)行復(fù)制,然后在應(yīng)用程序中用ctrl+v粘貼。
從應(yīng)用程序到vim則在應(yīng)用程序中使用ctrl+c復(fù)制,在vim中使用shift+insert粘貼。
如:
"*yy復(fù)制一行
"*y2w復(fù)制二個(gè)詞
……
實(shí)現(xiàn)的原理是:
"???表示使用寄存器
"*表示使用當(dāng)前選擇區(qū)
我個(gè)人推薦使用ctrl+insert復(fù)制,shift+insert粘貼。
vim有多個(gè)剪貼板,其中就包括了系統(tǒng)剪貼板。使用命令:reg可以看到各個(gè)剪貼板的內(nèi)容。其中“”表示當(dāng)前使用的剪貼板,“0-9是歷史剪貼板,“#就是系統(tǒng)剪貼板了(你可以在系統(tǒng)里拷貝一些東西,看是不是會(huì)出現(xiàn)在“#剪貼板里)。在vim中使用y可以把內(nèi)容拷貝到“”號(hào)剪貼板,繼續(xù)y會(huì)把新的東西放入“”,而原來(lái)“”的東西就會(huì)被壓入“0-9的各個(gè)歷史剪貼板中。X11系統(tǒng)下還有一個(gè)“*的剪貼板對(duì)應(yīng)中鍵拷貝粘貼,windows不知道有沒(méi)有。
解決第一個(gè)問(wèn)題:
“+y?把選中內(nèi)容拷貝到”+號(hào)剪貼板,即系統(tǒng)剪貼板
“+p?把系統(tǒng)剪貼板的內(nèi)容粘貼到vim,這一個(gè)用shift+insert也可完成
解決第二個(gè)問(wèn)題:
“0p?可以把已經(jīng)被擠到”0剪貼板的內(nèi)容A重新粘貼出來(lái)
嫌長(zhǎng)的做一個(gè)map,映射到某個(gè)功能鍵或組合就方便了。