你可以用 <Delback> 來刪除最后輸入的的一個字符,這個跟你在 Emacs 之外的
用法應該一樣。一般來說 <Delback> 就是位于 <Return> 鍵上方某處的一個大號
鍵,通常被標示為“Delete”、“Del”或者“Backspace”。
下面是一個關于“刪除”操作的小結:
<Delback> 刪除光標前的一個字符
C-d 刪除光標后的一個字符
M-<Delback> 移除光標前的一個詞
M-d 移除光標后的一個詞
C-k 移除從光標到“行尾”間的字符
M-k 移除從光標到“句尾”間的字符
【可能你已經注意到了“刪除(delete)”和“移除(kill)”的用詞區別,后
文會有詳細說明。】
-----------------------------------------------------------------------------------------------------
你也可以用一種統一的辦法來刪除緩沖區里的任何一部分:首先把光標移動到你
想要刪除的區域的一端,然后按 C-@ 或 C-SPC(任一即可,SPC指空格)【注意,
C-SPC 往往被中文用戶設定成輸入法熱鍵,如果這樣,C-SPC 就被系統攔截而無
法輸入給 Emacs 了,因此這里還是推薦使用C-@。】,然后再移動到另一端,再
按 C-w 就可以把位于這兩點之間的所有文字刪除了。
>> 移動光標到上一段開頭的“你”字。
>> 輸入 C-@ 。Emacs 應該會在屏幕的下方顯示一個“Mark set”的消息。
>> 移動光標到第二行中的“端”字。
>> 輸入 C-w,就會把從“你”開始到“端”之前的文字全部刪除。
注意,“移除(kill)”和“刪除(delete)”的不同在于被移除的東西可以找回
來,而被刪除的就不行了。【實際上,移除掉的東西雖然看起來“消失”了,但
實際上被 Emacs 記錄了下來,因此還可以找回來;而刪除掉的東西雖然也可能還
在內存里,但是已經被Emacs“拋棄”了,所以就找不回來了。】重新插入被移除
的文字稱為“召回(yank)”。一般而言,那些會去除很多文字的命令會把去除
掉的文字儲存起來(它們被設定成了“可召回”),而那些只是去除一個字符或
者只是去除空白的命令就不會儲存那些被去除掉的東西(因此你就無法召回)。
-----------------------------------------------------------------------------------------------------
>> 移動光標到一非空白行的行頭,然后輸入 C-k 移除那一行上的文字。
>> 再次 C-k,你可以看到它移除了跟在那一行后面的換行符。
注意,單獨的 C-k 會把一行的內容移除,而第二個 C-k 則會移除換行符,并使
其后所有的行都向上移動。C-k 處理數字參數的方式很特別,它會把參數指定的
那么多行連同其后的換行符一起移除,而不僅僅是重復 C-k 而已。比如 C-u 2
C-k 會把兩行以及它們的換行符移除;而如果只是輸入 C-k 兩次顯然不是這個結
果。
-------------------------------------------------------------------------------------------------------
將被移除的文字恢復的動作稱為“召回(yanking)”。(就好像你把別人從你身
邊移走的東西又猛力地拉回來。)你可以在你刪除文字的地方召回,也可以在別
的地方召回,還可以多次召回同樣的文字以得到它的多個拷貝。
召回的命令是 C-y。它會在光標所在處插入你最后移除的文字。
>> 試試看,輸入 C-y 將文字召回。
如果你一次連按了好幾下 C-k,那么所有被移除的行會被存儲在一起,只要一個
C-y 就可以把它們都召回。
>> 在這里試試,連續按幾次 C-k。
現在再來恢復剛剛被我們移除的文字:
>> 按 C-y。然后把光標往下移動幾行,再按一次 C-y。
現在你應該知道怎么復制文字了。
C-y 可以把最近移除的文字召回,但如果你想召回的東西不是最近移除的,該怎
么辦呢?它們當然沒有丟,你可以用 M-y 來召回它們。在用 C-y 召回最近移除
的文字之后,緊接著再用 M-y 就可以召回再前一次被移除的文字,再按一次
M-y 又可以召回再上一次的,因此只要多按幾次 M-y 就可以找到你想要召回的東
西了。找到了之后,你什么也不用做,把它們晾在那里,繼續你的編輯就行了。
如果你一次按 M-y 按了很多下,你可能會回到起始點,也就是最近移除的文字。
【看得出這實際上是一個環。】
>> 移除一行,移動一下光標,然后再移除另外一行。
按 C-y 將第二次移除的那行召回來。
緊接著再按 M-y,它將會被第一次移除的那行取代。
試著再按幾下 M-y 看看會發生什么。
再繼續,直到第二行被召回來,然后再做個幾次。
如果你愿意,你可以試著給 M-y 指定一個正的或負的參數。