VIM複製命令大全

VIM複製命令大全
yank 是什麼意思?有疑問的請查一下字典吧!就好像是中醫治療中的「拔罐」的意思啦(是不是叫「拔罐」?知道的朋友指正一下吧)!反正在 Vim 中,她就是複製 copy 的意思。這在 Vim 的思考邏輯裏,就是「拔」yank 起來,「放」put 上去。其實複製的指令就是 y 一個而已,爲什麼要獨立成一個單元來說明呢?因爲 Vim 複製、貼上的功能實在太獨特了,再配合第三單元介紹的數目字,及 Vim 內部的緩衝區來使用的話,您會發現,原來 Vim 肚子裏還暗藏着祕密武器。

4.1 指令說明
yy 複製遊標所在行整行。或大寫一個 Y。
2yy 複製兩行,y2y 也可以。ㄟ,請舉一反三好不好!:-)
y^ 複製至行首,或 y0。不含光標所在處字符。
y$ 複製至行尾。含光標所在處字符。
yw 複製一個 word。
y2w 複製兩個字。
yG 複製至檔尾。
y1G 複製至檔首。
p 小寫 p 代表貼至光標後(下)。
P 大寫 P 代表貼至光標前(上)。整行的複製,按 p 或 P 時是插入式的貼在下(上)一行。非整行的複製則是貼在遊標所在處之後(前)。
"ayy 將本行文字複製到 a 緩衝區。
a 可爲 26 個英文字母中的一個,如果是小寫的話,原先的內容會被清掉,如果是大寫的話是 append 的作用,會把內容附加到原先內容之後。" 是 Enter 鍵隔壁的那一個同上符號(ditto marks),當然是要和 shift 鍵同時按的。
"ap 將 a 緩衝區的內容貼上。
這個緩衝區的術語在 Vim 稱爲 registers,Vim 擴充了相當多的功能。您用 d、c、s、x、y 等指令改變或刪除的內容都是放在 registers 中的。例如:您用 dd 刪除的一行,也是可以使用 p 來貼上的。只要是在緩衝區的內容都可以使用 p 來貼上,不是一定要 y 起來的內容才能用 p。因此您認爲 p 是 paste 也可以,認爲是 put 可能較正確。
5"ayy 複製五行內容至 a 緩衝區。
5"Ayy 再複製五行附在 a 內容之後,現在 a 中有十行內容了!
ㄟ!不要我一直用 a 您就認爲只有 a 可以用喔。26 個英文字母都可以的,交叉運用下,您會發覺 Vim 肚量不小。
問題來了!忘記誰是誰的時候怎麼辦? :reg(冒號命令)就會列出所有 registers 的代號及內容。您現在就試着按看看。咦!怎麼還有數目字、特殊符號的緩衝區,原來您剛剛刪除(複製)的內容就預設放在 " 這個緩衝區,然後依序是 0,1,2,...9。也就是說您按 p 不加什麼的話,是取出 " 緩衝區的內容。% 指的是目前編輯的檔案,# 指的是前一次編輯的檔案。還有其它的呀!這會在下一節做介紹。
Tab 補全的功能,elvis 也有,但叫出 registers 列表的命令則沒有,您得自行記憶在您的腦袋瓜子裏。而且 elvis 的補全能力並沒 Vim 強。

4.2 Register 緩衝區
在 Vim 裏頭,有許多不同種類的緩衝區,例如:置放一整個檔案的 buffers 緩衝區(請參考第 6.2 節,頁 );檔案內容操作,如刪除、yank、置換,給 Put 要用的 registers 緩衝區;另外還有給書籤要用的 marks 緩衝區(請參考第 5.4 節,頁 )。雖然這些內容不一定是放在 RAM 內存內,有的是置於硬盤檔案上,需要時才從檔案存取,但這裏通通把他當做是緩衝區,以方便理解。
4.2.1 register 的種類

4.3 天大的指令
. 這是什麼?ㄚ,是英文句點啦!沒錯,就是英文句點。什麼意思?重複前次的編輯動作。這個指令太高明瞭,只要是編輯動作(移動光標不算,冒號命令也不算)都可以按英文句點來重複,要重複幾次都可以。
例如:您按了 yy,然後按 p 就會複製、貼上一整行,如果要重複這個動作的話,就可以按 . ,也可以把光標移到其它地方後再按。其它 dd,dw,r,cw 等編輯指令都可以這樣來重複。如果您要重複做某些編輯動作時,千萬千萬一定要想到有這麼一個英文句點重複指令。ㄚ,拜託啦!您一定要常用這個指令。

4.4 疑難雜症
4.4.1 那 mouse 中鍵的剪貼功能還有嗎?
當然還有,不管在 console 或 X terminal 中都照用不誤。當然在 windows 下的話就不能用了,可以用 Shift+Insert 來代替。Ctrl+v 在 Vim 中另有作用,在 windows 下就不必去麻煩它了。
4.4.2 軟件間互相 copy 時,常常都搞得天下大亂耶!
要設成 :set paste。這是 Vim 的擴充功能,elvis 沒有。那在 elvis 怎麼辦?只好 :set noai4.1 了。在 GUI 的版本應不會有這種情形。
朋友!您睡着了嗎?不要被嚇到了,您只要開個檔案,親自操作一下就能心領神會。那用 mouse 不是更方便嗎?不見得,yyp 來複制貼上一整行比較快,還是用 mouse 來拉比較快?您可以試看看。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章