大家來學VIM(乙個歷久彌新的編輯器) 四

2021-09-01 07:36:30 字數 2070 閱讀 1692

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

指令說明

yy  複製游標所在行整行。或大寫乙個 y。

2yy 或 y2y 複製兩行。ㄟ,請舉一反三好不好!:-)

y^ 複製至行首,或 y0。不含游標所在處字元。

y$ 複製至行尾。含游標所在處字元。

yw 複製乙個 word。

y2w 複製兩個字。

yg 複製至檔尾。

y1g 複製至檔首。

p 小寫 p 代表貼至游標後(下)。

p 大寫 p 代表貼至游標前(上)。

"ayy  將本行文字複製到 a 緩衝區

" 是 enter 鍵隔壁的那乙個同上符號(ditto marks)。
"ap  將 a 緩衝區的內容貼上。

5"ayy  複製五行內容至 a 緩衝區。

5"ayy 再複製五行附在 a 內容之後,現在 a 中有十行內容了!

ㄟ!不要我一直用 a 您就認為只有 a 可以用喔。26 個英文本母都可以的,交叉運用下,您會發覺 vi(m) 肚量不小。 問題來了!忘記誰是誰的時候怎麼辦? :reg(冒號命令)就會列出所有 registers 的代號及內容。您現在就試著按看看。咦!怎麼還有數目字、特殊符號的緩衝區,原來您剛剛刪除(複製)的內容就預設放在 " 這個緩衝區,然後依序是 0,1,2,...9。也就是說您按 p 不加什麼的話,是取出 " 緩衝區的內容的。% 指的是目前編輯的檔案,# 指的是前一次編輯的檔案。還有其它的呀!因為沒什麼重要,就請 :h registers 吧!registers 有個 "s" 結尾,不要搞錯了,而且 tab 的補全鍵 vim 也支援的,也就是說您鍵入 :h regi 再按 tab 鍵,vim 就會幫您補全,按了 tab 後發現不是您要的,那就繼續按,總會出現您要的。:-)

tab 補全的功能,elvis 也有,但叫出 registers 列表的命令則沒有,您得自行記憶在您的腦袋瓜子裡。而且 elvis 的補全能力並沒 vim 強。

天大的指令

.  這是什麼?ㄚ,是英文句點啦!沒錯,就是英文句點。什麼意

思?重複前次的編輯動作。這個指令太高明了,只要是編輯動

作(移動游標不算,冒號命令也不算)都可以按英文句點來重

復,要重複幾次都可以。

例如:您按了 yy,然後按 p 就會複製、貼上一整行,如果要重複這個動作的話,就可以按 . ,也可以把游標移到其它地方後再按。其它 dd,dw,r,cw 等編輯指令都可以這樣來重複。如果您要重複做某些編輯動作時,千萬千萬一定要想到有這麼乙個英文句點重複指令。ㄚ,拜託啦!您一定要常用這個指令。

疑難雜症

1. 那 mouse 中鍵的剪貼功能還有嗎?

當然還有,不管在 console 或 x terminal 中都照用不誤。當然在 windows 下的話就不能用了,可以用 shift-insert 來代替。ctrl-v 在 vim 中另有作用,在 windows 下就不必去麻煩它了。

2. ㄟ,我從 netscape 用 mouse copy 東東過來的時候,常常都搞得天下大亂耶!

要設成 :set paste,預設是 map 至 f9 鍵的,您要 copy 之前先按一下 f9,copy 完後再按一次 f9 來回覆。這是 vim 的擴充功能,elvis 沒有。那在 elvis 怎麼辦?只好 :set noai 了。在 gui 的版本應不會有這種情形。

朋友!您睡著了嗎?不要被嚇到了,您只要開個檔案,親自操作一下就能心領神會。那用 mouse 不是更方便嗎?不見得,yyp 來複製貼上一整行比較快,還是用 mouse 來拉比較快?您可以試看看。

大家來學VIM(乙個歷久彌新的編輯器) 一

因為最近在學vim,所以轉過來。裡面是繁體,好多都是台灣的計算機術語,看的時候有點怪異,不過還是不影響閱讀的。前言 鑑於仍有許多人還沒找到順手的編輯器,而許多想學 vi 的人又覺得無從下手,因此在此提出一些個人的心得,希望能對這些朋友有點幫助。或許也減少一點 faq 吧!真要深入的話,大多數的前輩都...

大家來學VIM(乙個歷久彌新的編輯器) 八

shell命令 外部指令 執行外部指令。當然您的指令要在 path 內。執行前一次執行之外部指令。在這裡的 可不是強迫中止喔!vim 中有乙個很特殊的指令 是重複前一次的冒號命令。sh ell 執行 shell。使用 exit 回來。這在 vim gui 會在原視窗內顯示執行結果,在 elvis g...

實現乙個簡單的行編輯器

1.要求 2.開啟 關閉回顯和緩衝 3.顯示大小寫字母和數字 4.實現退格鍵 5.實現游標左右移動 6.實現del鍵刪除整行 7.總 但是行編輯器不能讓每個字元都輸出在螢幕上,有些鍵是要作為功能鍵來使用的,所以必須關閉回顯設定,讓我們自己來設計有選擇的輸出字元。二是在linux命令列的預設模式下,輸...