David.Ko

          Follow my heart!
          posts - 100, comments - 11, trackbacks - 0, articles - 0
             :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          Emacs 快速指南

          Posted on 2007-09-29 12:48 David.Ko 閱讀(1081) 評(píng)論(0)  編輯  收藏 所屬分類: Ubuntu

          【注意:位于【】之間的內(nèi)容是譯注,比如本行,下同。】

          Emacs 鍵盤(pán)命令通常包含 CONTROL 鍵(有時(shí)候以 CTRL 或 CTL 來(lái)標(biāo)示)和 META 鍵(有時(shí)候用 EDIT 或 ALT 來(lái)標(biāo)示)。為了避免每次都要寫(xiě)出全名,我們 約定使用下述縮寫(xiě):

           C-<chr>  表示當(dāng)輸入字符 <chr> 時(shí)按住 CONTROL 鍵。
          因此 C-f 就表示:按住 CONTROL 鍵再輸入 f。

          M-<chr> 表示當(dāng)輸入字符 <chr> 時(shí)按住 META(或 EDIT 或 ALT)鍵。
          如果你的鍵盤(pán)上沒(méi)有 META 、EDIT 或 ALT 鍵,用下述方法也等效:
          先按一下 ESC 鍵然后放開(kāi),再輸入 <chr>。我們用 <ESC> 來(lái)表示
          ESC 鍵。

          重要提示:要退出 Emacs,請(qǐng)用 C-x C-c(兩個(gè)連續(xù)的組合鍵)。下文中左邊頂 行的“>>”字樣用來(lái)提示你嘗試鍵盤(pán)命令。比如: <<Blank lines inserted around following line by help-with-tutorial>> [本頁(yè)當(dāng)中特意留出一些空白是出于教學(xué)目的,請(qǐng)繼續(xù)往后看] >> 現(xiàn)在輸入 C-v (查看下一屏文字)移動(dòng)到下一屏。

             (別緊張,在輸入字符 v 的同時(shí)注意要按住 CONTROL 鍵)
          從現(xiàn)在開(kāi)始,每讀完當(dāng)前一屏你都需要這樣做一次。

          值得注意的是,當(dāng)你從上一屏滾到下一屏?xí)r,中間會(huì)有兩行的重復(fù);這樣做是為 了維持滾屏的連續(xù)性,方便你順暢、連續(xù)地閱讀。

          用編輯器,開(kāi)門(mén)第一件事就是學(xué)會(huì)在文字中移動(dòng)。你已經(jīng)知道了 C-v 可以向下移 動(dòng)一屏,要往上移,請(qǐng)用 M-v (也就是按住 META 鍵,然后輸入v,如果你沒(méi)有 META、EDIT 或 ALT 鍵那么就先按 <ESC> 再按 v)。

          >> 試試 M-v,然后再試試 C-v,來(lái)回遛幾次。

          • 小結(jié)(SUMMARY)

          以下命令在翻頁(yè)瀏覽時(shí)相當(dāng)有用:

                  C-v     向前移動(dòng)一屏
          M-v 向后移動(dòng)一屏
          C-l 重繪屏幕,并將光標(biāo)所在行置于屏幕的中央
          (注意是 CONTROL-L,不是 CONTROL-1)

          >> 找到光標(biāo),留意其附近的文字,然后輸入 C-l。

             找找光標(biāo)在哪里,你會(huì)發(fā)現(xiàn)其附近的文字并沒(méi)有變化。

          如果你的鍵盤(pán)上有 PageUpPageDn,也可以用這兩個(gè)鍵來(lái)滾屏。不過(guò)使用 C-v 和 M-v 的效率要更高一些。

          • 基本的光標(biāo)控制(BASIC CURSOR CONTROL)

          整屏的移動(dòng)很有用,但是如何在文字中精確定位呢?

          有幾種方式可以選擇。用方向鍵當(dāng)然可以,不過(guò)更有效率的方法是保持雙手位于 主鍵盤(pán)區(qū),然后使用 C-p 、 C-b 、 C-f 和 C-n 這四個(gè)命令。它們的功能和方 向鍵是一樣的,如下圖所示:

                                       上一行 C-p
          :
          :
          向左移 C-b .... 目前光標(biāo)位置 .... 向右移 C-f
          :
          :
          下一行 C-n

          >> 用 C-n 或 C-p 將光標(biāo)移到上圖的中央。

             按 C-l,整幅圖會(huì)被顯示在屏幕的中央。

          “P N B F”四個(gè)字母分別代表了四個(gè)詞,用這四個(gè)詞記憶這些組合鍵會(huì)更容易: P 代表 previous(上一行),N 代表 next(下一行),B 代表 backward(回 退),而 F 則代表 forward(前進(jìn))。這些組合鍵今后將與你形影不離。

          >> 按幾次 C-n 把光標(biāo)往下挪到這里。

          >> 用 C-f 把光標(biāo)移動(dòng)到這一行,然后再用 C-p 往上挪。

             注意觀察當(dāng)光標(biāo)在一行的中央時(shí) C-p 命令的行為。

          每行文字都以一個(gè)“換行符”結(jié)束,“換行符”把行與行區(qū)分開(kāi)來(lái)。文件的最后 一行也應(yīng)該也有一個(gè)換行符(不過(guò) Emacs 并不強(qiáng)制要求這一點(diǎn))。

          >> 在一行的行頭輸入 C-b。

             光標(biāo)應(yīng)該會(huì)移動(dòng)到前一行的行尾,因?yàn)楣鈽?biāo)在回退過(guò)程中越過(guò)了換行符。

          同樣 C-f 也可以像 C-b 一樣越過(guò)換行符。

          >> 連按幾次 C-b,感受一下光標(biāo)的移動(dòng)。

             然后按幾次 C-f 回到本行的行尾。
          再按一次 C-f,光標(biāo)會(huì)移動(dòng)到下一行。

          當(dāng)你移動(dòng)光標(biāo)穿越屏幕的上下邊界時(shí),在邊界外的文字會(huì)移動(dòng)到屏幕內(nèi),這稱為 “滾動(dòng)”(scrolling)。滾動(dòng)使得光標(biāo)可以被移動(dòng)到文字中的任何位置,并且還 不會(huì)讓光標(biāo)跑到屏幕外邊去。

          >> 用 C-n 將光標(biāo)下移,一直越過(guò)屏幕邊界,同時(shí)觀察發(fā)生了什么變化。

          如果你嫌一個(gè)字符一個(gè)字符地挪光標(biāo)太慢,你還可以一個(gè)詞一個(gè)詞地跳。M-f (META-f) 可以將光標(biāo)往前移動(dòng)一個(gè)詞,而 M-b 則是往后移。【這里的“詞”指 英文單詞,對(duì)中文來(lái)說(shuō),則是指移動(dòng)到下一個(gè)標(biāo)點(diǎn)符號(hào)。】

          >> 試試 M-f 和 M-b。

          如果光標(biāo)停在一個(gè)詞的中間,M-f 會(huì)移動(dòng)到這個(gè)詞的末尾。如果光標(biāo)處于詞與詞 之間的空白處,M-f 會(huì)移動(dòng)到下一個(gè)詞的末尾。M-b 的功能類似,只是方向相反。

          >> 按幾次 M-f 和 M-b,中間夾雜一些 C-f 和 C-b。

             你可以觀察到 M-f 和 M-b 在不同位置上所表現(xiàn)出來(lái)的不同行為。

          請(qǐng)注意 C-f 、C-b 和 M-f 、M-b 兩對(duì)之間的類比關(guān)系。通常的慣例是:META 系 列組合鍵用來(lái)操作“由語(yǔ)言定義的單位(比如詞、句子、段落)”,而 CONTROL 系列組合鍵用來(lái)操作“與語(yǔ)言無(wú)關(guān)的基本單位(比如字符、行等等)”。

          類似的慣例在“行”與“句子”之間也同樣適用:C-a 和 C-e 可以將光標(biāo)移動(dòng)到 “一行”的頭部和尾部;而 M-a 和 M-e 則將光標(biāo)移動(dòng)到“一句”的頭部和尾部。

          >> 按兩次 C-a,再按兩次 C-e。

             按兩次 M-a,再按兩次 M-e。

          想一想為什么重復(fù)的 C-a 命令會(huì)沒(méi)有作用,而重復(fù)的 M-a 命令則會(huì)讓光標(biāo)不斷 地回退到上一個(gè)句子。雖然這個(gè)類比規(guī)律并不嚴(yán)格,但是很自然。

          光標(biāo)停留的位置也可以稱作“點(diǎn)位”(point)。或者干脆說(shuō),光標(biāo)指示出了屏幕 上“點(diǎn)位”在文本中的位置。

          這里對(duì)簡(jiǎn)單的光標(biāo)移動(dòng)命令做一個(gè)總結(jié),其中也包括了整詞和整句的移動(dòng):

                  C-f     向右移動(dòng)一個(gè)字符
          C-b 向左移動(dòng)一個(gè)字符

          M-f 向右移動(dòng)一個(gè)詞【中文是移動(dòng)到下一個(gè)標(biāo)點(diǎn)符號(hào)】
          M-b 向左移動(dòng)一個(gè)詞【中文是移動(dòng)到上一個(gè)標(biāo)點(diǎn)符號(hào)】

          C-n 移動(dòng)到下一行
          C-p 移動(dòng)到上一行

          C-a 移動(dòng)到行首
          C-e 移動(dòng)到行尾

          M-a 移動(dòng)到句首
          M-e 移動(dòng)到句尾

          >> 把上面所有的命令都練習(xí)幾次,這些可都是最常用的命令。

          這里還要介紹兩個(gè)重要的光標(biāo)移動(dòng)命令:M-< (META 小于號(hào))可以將光標(biāo)移動(dòng)到 所有文字的最開(kāi)頭;M-> (META 大于號(hào))可以將光標(biāo)移動(dòng)到所有文字的最末尾。

          注意,在大部分鍵盤(pán)上,小于號(hào)(<)需要用上檔鍵(Shift)來(lái)輸入,所以在這 些鍵盤(pán)上你應(yīng)該用 Shift 鍵來(lái)輸入 M-<,如果不按 Shift 鍵,你輸入的會(huì)是 M-comma(META 逗號(hào))。

          >> 試一試 M-< ,移到本快速指南的最開(kāi)始。

             然后再按幾次 C-v 回到這里。

          >> 試一試 M-> ,移到本快速指南的最末尾。

             然后再按幾次 M-v 回到這里。

          如果你的鍵盤(pán)上有方向鍵的話,也可以用它們來(lái)移動(dòng)光標(biāo)。不過(guò)我們有三個(gè)理由 推薦你學(xué)習(xí) C-b 、C-f 、C-n 、和 C-p:(1)它們?cè)谌魏捂I盤(pán)上都能用。(2) 當(dāng)你熟練使用 Emacs 之后,你會(huì)發(fā)現(xiàn)用這些組合鍵比用方向鍵要快得多,因?yàn)槟? 的手不需要離開(kāi)打字區(qū)。(3)一旦你習(xí)慣了使用這些組合鍵,你也可以很容易地 適應(yīng)其它更高級(jí)的光標(biāo)移動(dòng)命令。

          大部分的 Emacs 命令接受數(shù)字參數(shù),并且對(duì)于多數(shù)命令而言,這些數(shù)字參數(shù)的作 用是指定命令的重復(fù)次數(shù)。為一個(gè)命令指定數(shù)字參數(shù)(也就是重復(fù)次數(shù))的方法 是:先輸入 C-u,然后輸入數(shù)字作為參數(shù),最后再輸入命令。如果你有META (或 EDIT 或 ALT)鍵,那么還有另一種辦法:按住 META 鍵不動(dòng),然后輸入數(shù)字。不 過(guò)我們還是建議你用 C-u,因?yàn)樗谌魏谓K端機(jī)上都能用。這種數(shù)字參數(shù)也稱為 “前綴參數(shù)”,意思是說(shuō)這個(gè)參數(shù)是先于使用它的命令而輸入的。

          舉例來(lái)說(shuō), C-u 8 C-f 會(huì)向前移動(dòng) 8 個(gè)字符。

          >> 為 C-n 或者 C-p 指定一個(gè)數(shù)字參數(shù),這樣你可以只用一個(gè)命令就把光標(biāo)移動(dòng)

             到本行的附近。

          雖然大部分命令用數(shù)字參數(shù)來(lái)作為其重復(fù)次數(shù),但是也有些命令例外,它們將數(shù) 字參數(shù)另做它用。比如有些命令(目前還沒(méi)學(xué)到)僅僅將前綴參數(shù)作為一個(gè)標(biāo) 志——只要有一個(gè)前綴參數(shù)出現(xiàn),不管其值為何,命令的功能都會(huì)改變。

          而 C-v 和 M-v 則屬于另一種類型的例外。當(dāng)給定一個(gè)參數(shù)時(shí),它們將滾動(dòng)你指 定的“行數(shù)”,而不是“屏數(shù)”。舉例來(lái)說(shuō),C-u 8 C-v 將屏幕向下滾動(dòng) 8 行, 而不是 8 屏。

          >> 現(xiàn)在試試看,輸入 C-u 8 C-v。

          這個(gè)命令應(yīng)該已經(jīng)將文字向上滾動(dòng)了 8 行。如果你想將它再次地向下滾動(dòng),你可 以給定一個(gè)參數(shù)然后執(zhí)行 M-v。

          如果你正在使用一個(gè)窗口系統(tǒng),比如 X11 或者微軟的 Windows,那么在 Emacs 窗口的左邊或者右邊應(yīng)該有一個(gè)長(zhǎng)方形的區(qū)域叫“滾動(dòng)條”,你可以用鼠標(biāo)操縱 滾動(dòng)條來(lái)滾動(dòng)文字。

          >> 試著在“滾動(dòng)條內(nèi)的反白區(qū)域”上按一下鼠標(biāo)中鍵。

             文字應(yīng)該會(huì)滾動(dòng)到鼠標(biāo)所指示的位置。

          >> 當(dāng)按住中鍵時(shí),試著將鼠標(biāo)上下移動(dòng)。

             你會(huì)看到文字隨著鼠標(biāo)的移動(dòng)而上下滾動(dòng)。
          【W(wǎng)indows 版本符合 Windows 程序的傳統(tǒng)操作習(xí)慣,上述操作不適用。】
          • 在 EMACS 失去響應(yīng)的時(shí)候(WHEN EMACS IS HUNG)

          如果 Emacs 對(duì)你的命令失去響應(yīng),你可以很安全地用 C-g 來(lái)終止這個(gè)命令。 C-g 也可以被用來(lái)終止一個(gè)執(zhí)行過(guò)久的命令。

          C-g 還可以被來(lái)取消數(shù)字參數(shù)和那些輸入到一半的命令。

          >> 輸入 C-u 100 設(shè)定一個(gè)值為 100 的數(shù)字參數(shù),然后按 C-g。

             現(xiàn)在再按 C-f,光標(biāo)應(yīng)該只會(huì)移動(dòng)一個(gè)字符,因?yàn)槟阋呀?jīng)用 C-g 取消了參數(shù)。

          如果你不小心按了一下 <ESC>,你也可以用 C-g 來(lái)取消它。 【這個(gè)說(shuō)法似乎有問(wèn)題,因?yàn)榘凑者@個(gè)按鍵順序輸入的應(yīng)該是 C-M-g。

            取消<ESC> 的正確做法是再連按兩次 <ESC>。】
          • 被禁用的命令(DISABLED COMMANDS)

          有一些 Emacs 命令被“禁用”了,以避免初學(xué)者在不了解其確切功能的情況下誤 用這些命令,造成麻煩。

          如果你用到了一個(gè)被禁用的命令,Emacs 會(huì)顯示一個(gè)提示消息,告訴你這個(gè)命令 到底是干什么的,詢問(wèn)你是否要繼續(xù),并在得到你的肯定之后再執(zhí)行這命令。

          你要是真的想執(zhí)行被禁用的命令,那么在 Emacs 詢問(wèn)你的時(shí)候應(yīng)該按空格。一般 來(lái)說(shuō),如果你不想執(zhí)行,按“n”就行了。

          >> 試試 C-x C-l (這是一個(gè)被禁用的命令)

             然后用 n 來(lái)回答問(wèn)題。
          • 窗格(WINDOWS)

          Emacs 可以有多個(gè)窗格,每個(gè)窗格都顯示不同的文字。我們后面再介紹怎么對(duì)付 多個(gè)窗格,現(xiàn)在先讓我們先搞明白如何關(guān)掉多余的窗格。其實(shí)也很簡(jiǎn)單:

                  C-x 1   只保留一個(gè)窗格(也就是關(guān)掉其他所有的窗格)。

          也就是先按 CONTROL-x 然后再按 1。C-x 1 會(huì)保留光標(biāo)所在的窗格,并將其擴(kuò)大 到整個(gè)屏幕,同時(shí)關(guān)掉所有其它的窗格。

          >> 把光標(biāo)移到本行然后輸入 C-u 0 C-l。

          >> 輸入 CONTROL-h k CONTROL-f。觀察當(dāng)一個(gè)新窗格出現(xiàn)時(shí)當(dāng)前窗格(用來(lái)顯示

             CONTROL-f 命令的文檔)是如何縮小的。

          >> 輸入 C-x 1 關(guān)掉文檔窗格。

          這個(gè)命令跟先前學(xué)到的命令不太一樣,因?yàn)樗藘蓚€(gè)字符,以 CONTROL-x 開(kāi) 始。有一系列命令都是以 CONTROL-x 開(kāi)始的,這些命令許多都跟“窗格、文件、 緩沖區(qū)【緩沖區(qū)(buffer)會(huì)在后文詳細(xì)介紹】”等等諸如此類的東西有關(guān),其 中有些命令可能有 2 個(gè)、3 個(gè)或者 4 個(gè)字符長(zhǎng)。

          • 插入與刪除(INSERTING AND DELETING)

          插入文字很簡(jiǎn)單,敲鍵盤(pán)就行了。你能看到的字符,比如 A、7、* 等等,都被 Emacs 視為文字并且可以直接插入。敲 <Return>(回車鍵)會(huì)插入一個(gè)換行符。

          你可以用 <Delback> 來(lái)刪除最后輸入的的一個(gè)字符,這個(gè)跟你在 Emacs 之外的 用法應(yīng)該一樣。一般來(lái)說(shuō) <Delback> 就是位于 <Return> 鍵上方某處的一個(gè)大號(hào) 鍵,通常被標(biāo)示為“Delete”、“Del”或者“Backspace”。

          如果你找到了標(biāo)著“Backspace”的鍵,那么它應(yīng)該就是 <Delback>;即便你又在 鍵盤(pán)其它地方找到了一個(gè)標(biāo)示為“Del”的鍵,那么它也應(yīng)該不是 <Delback>。

          一種更通用的說(shuō)法是,<Delback> 將位于光標(biāo)前的一個(gè)字符刪除。

          >> 現(xiàn)在就試試——敲點(diǎn)字,然后按幾下 <Delback> 刪除它們。

             不用擔(dān)心你會(huì)修改文件,你干什么都沒(méi)關(guān)系,這里就是專給你練習(xí)用的。

          如果一行文字很長(zhǎng)、超出了窗格的寬度,顯示不下的部分會(huì)在緊鄰的下一行繼續(xù) 顯示。這時(shí)會(huì)有一個(gè)反斜線(控制臺(tái)下是反斜線,如果你用圖形窗口系統(tǒng),則應(yīng) 該是一個(gè)小小的轉(zhuǎn)彎箭頭)顯示在右邊沿,表明這是某一行的接續(xù)顯示。

          >> 輸入文字,一直到屏幕的右邊界,然后繼續(xù),你會(huì)看到一個(gè)接續(xù)行出現(xiàn)。

          >> 用 <Delback> 刪掉一些文字,直到此行長(zhǎng)度小于窗格寬度,接續(xù)行就消失了。

          你可以像刪除其他字符一樣刪除換行符。刪除兩行中間的換行符會(huì)將兩行合并成 一行。如果合并的結(jié)果使這一行太長(zhǎng),超出了窗格的寬度,它就會(huì)以一個(gè)接續(xù)行 來(lái)顯示。

          >> 移動(dòng)光標(biāo)到本行的開(kāi)頭并輸入 <Delback>。

             這時(shí)本行與其前一行將被合并為一行。

          >> 輸入 <Return> 重新插入你剛才刪除的換行符。

          前面說(shuō)過(guò),大部分的 Emacs 命令都可以指定重復(fù)次數(shù),這其中也包括輸入字符的 命令。重復(fù)執(zhí)行輸入字符的命令實(shí)際上就是輸入多個(gè)一樣的字符。

          >> 試試 C-u 8 *,這將會(huì)插入 ********。

          好,現(xiàn)在你應(yīng)該已經(jīng)掌握了最基本的的文本插入和修改功能,其實(shí)刪除還可以 “以詞為單位”進(jìn)行,下面是一個(gè)關(guān)于“刪除”操作的小結(jié):

                  <Delback>    刪除光標(biāo)前的一個(gè)字符
          C-d 刪除光標(biāo)后的一個(gè)字符

          M-<Delback> 移除光標(biāo)前的一個(gè)詞
          M-d 移除光標(biāo)后的一個(gè)詞

          C-k 移除從光標(biāo)到“行尾”間的字符
          M-k 移除從光標(biāo)到“句尾”間的字符

          【可能你已經(jīng)注意到了“刪除(delete)”和“移除(kill)”的用詞區(qū)別,后 文會(huì)有詳細(xì)說(shuō)明。】

          注意“<Delback> 和 C-d”還有“M-<Delback> 和 M-d”是根據(jù)前述慣例從 C-f 和 M-f 衍生出來(lái)的(其實(shí)<Delback>不是控制字符,我們先忽略這一點(diǎn))。C-k 和 M-k 的關(guān)系在某種程度上與 C-e 和 M-e 一樣——如果把“一行”和“一句” 作一個(gè)類比的話。

          你也可以用一種統(tǒng)一的辦法來(lái)移除緩沖區(qū)里的任何一部分:首先把光標(biāo)移動(dòng)到你 想要移除的區(qū)域的一端,然后按 C-@ 或 C-SPC(任一即可,SPC指空格)【注意, C-SPC 往往被中文用戶設(shè)定成輸入法熱鍵,如果這樣,C-SPC 就被系統(tǒng)攔截而無(wú) 法輸入給 Emacs 了,因此這里還是推薦使用C-@。】,然后再移動(dòng)到另一端,再 按 C-w 就可以把位于這兩點(diǎn)之間的所有文字移除了。

          >> 移動(dòng)光標(biāo)到上一段開(kāi)頭的“你”字。 >> 輸入 C-@ 。Emacs 應(yīng)該會(huì)在屏幕的下方顯示一個(gè)“Mark set”的消息。 >> 移動(dòng)光標(biāo)到第二行中的“端”字。 >> 輸入 C-w,就會(huì)把從“你”開(kāi)始到“端”之前的文字全部移除。

          注意,“移除(kill)”和“刪除(delete)”的不同在于被移除的東西可以找回 來(lái),而被刪除的就不行了。【實(shí)際上,移除掉的東西雖然看起來(lái)“消失”了,但 實(shí)際上被 Emacs 記錄了下來(lái),因此還可以找回來(lái);而刪除掉的東西雖然也可能還 在內(nèi)存里,但是已經(jīng)被Emacs“拋棄”了,所以就找不回來(lái)了。】重新插入被移除 的文字稱為“召回(yank)”。一般而言,那些會(huì)去除很多文字的命令會(huì)把去除 掉的文字儲(chǔ)存起來(lái)(它們被設(shè)定成了“可召回”),而那些只是去除一個(gè)字符或 者只是去除空白的命令就不會(huì)儲(chǔ)存那些被去除掉的東西(因此你就無(wú)法召回)。

          >> 移動(dòng)光標(biāo)到一非空白行的行頭,然后輸入 C-k 移除那一行上的文字。

          >> 再次 C-k,你可以看到它移除了跟在那一行后面的換行符。

          注意,單獨(dú)的 C-k 會(huì)把一行的內(nèi)容移除,而第二個(gè) C-k 則會(huì)移除換行符,并使 其后所有的行都向上移動(dòng)。C-k 處理數(shù)字參數(shù)的方式很特別,它會(huì)把參數(shù)指定的 那么多行連同其后的換行符一起移除,而不僅僅是重復(fù) C-k 而已。比如 C-u 2 C-k 會(huì)把兩行以及它們的換行符移除;而如果只是輸入 C-k 兩次顯然不是這個(gè)結(jié) 果。

          將被移除的文字恢復(fù)的動(dòng)作稱為“召回(yanking)”。(就好像你把別人從你身 邊移走的東西又猛力地拉回來(lái)。)你可以在你刪除文字的地方召回,也可以在別 的地方召回,還可以多次召回同樣的文字以得到它的多個(gè)拷貝。

          召回的命令是 C-y。它會(huì)在光標(biāo)所在處插入你最后移除的文字。

          >> 試試看,輸入 C-y 將文字召回。

          如果你一次連按了好幾下 C-k,那么所有被移除的行會(huì)被存儲(chǔ)在一起,只要一個(gè) C-y 就可以把它們都召回。

          >> 在這里試試,連續(xù)按幾次 C-k。

          現(xiàn)在再來(lái)恢復(fù)剛剛被我們移除的文字:

          >> 按 C-y。然后把光標(biāo)往下移動(dòng)幾行,再按一次 C-y。

             現(xiàn)在你應(yīng)該知道怎么復(fù)制文字了。

          C-y 可以把最近移除的文字召回,但如果你想召回的東西不是最近移除的,該怎 么辦呢?它們當(dāng)然沒(méi)有丟,你可以用 M-y 來(lái)召回它們。在用 C-y 召回最近移除 的文字之后,緊接著再用 M-y 就可以召回再前一次被移除的文字,再按一次 M-y 又可以召回再上一次的,因此只要多按幾次 M-y 就可以找到你想要召回的東 西了。找到了之后,你什么也不用做,把它們晾在那里,繼續(xù)你的編輯就行了。

          如果你一次按 M-y 按了很多下,你可能會(huì)回到起始點(diǎn),也就是最近移除的文字。 【看得出這實(shí)際上是一個(gè)環(huán)。】

          >> 移除一行,移動(dòng)一下光標(biāo),然后再移除另外一行。

             按 C-y 將第二次移除的那行召回來(lái)。
          緊接著再按 M-y,它將會(huì)被第一次移除的那行取代。
          試著再按幾下 M-y 看看會(huì)發(fā)生什么。
          再繼續(xù),直到第二行被召回來(lái),然后再做個(gè)幾次。
          如果你愿意,你可以試著給 M-y 指定一個(gè)正的或負(fù)的參數(shù)。
          • 撤銷(UNDO)

          如果你修改了一段文字,又覺(jué)得改得不好,可以用 undo 命令進(jìn)行撤銷: C-x u。

          通常 C-x u 會(huì)消除一個(gè)命令所造成的所有改變;如果你在一行中連續(xù)多次地使用 C-x u,你會(huì)把以前的命令也依次撤銷。

          但是有兩個(gè)例外: 1) 沒(méi)有改變文字的命令不算(包括光標(biāo)移動(dòng)命令和滾動(dòng)命令) 2) 從鍵盤(pán)輸入的字符以組為單位——每組 20 個(gè)字符——來(lái)進(jìn)行處理。

              (這是為了減少你在撤銷“插入文字”動(dòng)作時(shí)需要輸入 C-x u 的次數(shù))

          >> 用 C-k 將這一行移除,然后輸入 C-x u ,它會(huì)再次出現(xiàn)。

          C-_ 也是撤銷命令;它的作用跟 C-x u 一樣,但是它比較容易多次輸入。C-_ 的 缺點(diǎn)是在某些鍵盤(pán)上可能不太容易按,這也正是我們同時(shí)提供 C-x u 的原因。在 某些終端上,你可以按住 CONTROL 再按“/”來(lái)輸入 C-_。

          數(shù)字參數(shù)對(duì)于 C-_ 和 C-x u 的意義是執(zhí)行撤銷的重復(fù)次數(shù)。

          • 文件(FILE)

          想保存工作成果就要記得存盤(pán),否則一旦退出 Emacs 你編輯的文字就都丟了。要 存盤(pán),就要在編輯前“尋找”到一個(gè)存盤(pán)文件。(這個(gè)過(guò)程通常也被稱為“訪問(wèn)” 文件。)

          尋找到一個(gè)文件意味著你可以在 Emacs 里查看這個(gè)文件的內(nèi)容。從很多角度講, 這就等于你在直接編輯這個(gè)文件。但是你所做的修改只有在“存盤(pán)”的時(shí)候才會(huì) 被寫(xiě)入文件。也正因?yàn)槿绱耍憧梢詠G棄一個(gè)改到一半的文件而不必把這個(gè)殘廢 文件也保存到計(jì)算機(jī)上。最后就算你真正存了盤(pán),Emacs 也會(huì)把存盤(pán)前的文件重 命名保存,以防你改完之后又想反悔。

          在屏幕的下方,你應(yīng)該能夠看到頭尾都是短線“-”的一行,其開(kāi)頭通常都是諸如 “--:-- TUTORIAL.cn”這樣的東西,這些文字就代表了你當(dāng)前正在訪問(wèn)的文件。 現(xiàn)在你訪問(wèn)的文件叫“TUTORIAL.cn”,它只是給你個(gè)人臨時(shí)使用的一個(gè)拷貝。只 要你用 Emacs 尋找到一個(gè)文件,文件名就會(huì)出現(xiàn)在上述位置。

          尋找文件的命令有一個(gè)特別之處,那就是你必須給出文件名。我們稱這個(gè)命令 “從終端讀入了一個(gè)參數(shù)”(在這里,這個(gè)參數(shù)顯然就是文件名)。當(dāng)你輸入了 這個(gè)命令之后:

                  C-x C-f   尋找一個(gè)文件

          Emacs 會(huì)提示你輸入文件名。你輸入的文件名會(huì)出現(xiàn)在屏幕最底端的一行,這一 行被稱為小緩沖(minibuffer),在小緩沖里你可以使用通常的 Emacs 編輯命令 來(lái)編輯文件名。

          在小緩沖里輸入文件名(其實(shí)輸入別的東西也一樣)時(shí)可以用 C-g 取消。

          >> 輸入 C-x C-f,然后輸入 C-g

             這會(huì)關(guān)掉小緩沖,同時(shí)也會(huì)取消使用小緩沖的 C-x C-f 命令。
          當(dāng)然了,你也沒(méi)有找任何文件。

          輸入完文件名之后用 <Return> 結(jié)束,然后 C-x C-f 命令開(kāi)始工作并找到你指定 的文件。小緩沖在 C-x C-f 命令結(jié)束之后也會(huì)消失。

          眨眼間文件就會(huì)顯示在屏幕上,你可以開(kāi)始編輯了。存盤(pán)用這個(gè)命令:

                  C-x C-s   儲(chǔ)存這個(gè)文件

          這個(gè)命令把 Emacs 中的文字存儲(chǔ)到文件中。第一次存盤(pán)的時(shí)候 Emacs 會(huì)將原文 件重命名以保留原文。重命名的規(guī)則通常是在原文件名之后添加一個(gè)“~”字符。

          存盤(pán)結(jié)束后,Emacs 會(huì)顯示寫(xiě)入文件的文件名。你最好養(yǎng)成經(jīng)常存盤(pán)的習(xí)慣,這 樣在系統(tǒng)崩潰或者死機(jī)的時(shí)候你不會(huì)損失太多。

          >> 輸入 C-x C-s 把本快速指南存下來(lái)。

             你會(huì)看到“Wrote ...TUTORIAL.cn”這樣的消息顯示在屏幕的下方。

          注意:使用某些終端的時(shí)候,輸入 C-x C-s 會(huì)凍結(jié)屏幕【屏幕沒(méi)有任何輸出】, 這樣你就看不到 Emacs 的任何變化。其原因是操作系統(tǒng)的“流量控制”功能把 C-s 攔截了,并且凍結(jié)了屏幕,Emacs 自然也就看不到這個(gè)輸入了。用 C-q 可以 解除屏幕凍結(jié)。要解決這個(gè)問(wèn)題,請(qǐng)參考 Emacs 手冊(cè)里的“Spontaneous Entry to Incremental Search”一節(jié)【Emacs 手冊(cè)可能還沒(méi)有中文翻譯】,那里可能有 一些有用的建議。

          你可以尋找一個(gè)已有的文件然后查看或者編輯,你還可以尋找一個(gè)不存在的文件。 實(shí)際上這正是用 Emacs 創(chuàng)建新文件的方法:找到不存在的新文件,然后從零開(kāi)始。 在存盤(pán)的時(shí)候,Emacs 才真正創(chuàng)建這個(gè)文件然后再存盤(pán)。在這之后一切就跟你編 輯一個(gè)已有文件一樣了。

          • 緩沖區(qū)(BUFFER)

          如果你用 C-x C-f 找到第二個(gè)文件,第一個(gè)文件仍然會(huì)在 Emacs 里。要切回第 一個(gè)文件,你可以 C-x C-f 再次尋找它。這樣,你可以在 Emacs 里同時(shí)打開(kāi)很 多文件。

          >> 用 C-x C-f foo <Return> 的方式建立一個(gè)名為“foo”的文件。

             然后敲入一些文字,再用 C-x C-s 保存文件“foo”。
          最后,輸入 C-x C-f TUTORIAL.cn <Return> 回到這里。

          Emacs 把每個(gè)編輯中的文件都放在一個(gè)稱為“緩沖區(qū)(buffer)”的地方。每尋 找到一個(gè)文件,Emacs 就在其內(nèi)部開(kāi)辟一個(gè)緩沖區(qū)。用下面的命令可以列出當(dāng)前 所有的緩沖區(qū):

                  C-x C-b   列出緩沖區(qū)

          >> 現(xiàn)在就試一下 C-x C-b

          觀察一下緩沖區(qū)是如何命名的,它很可能跟其對(duì)應(yīng)的文件同名。事實(shí)上,你在一 個(gè) Emacs 窗格里看到的任何文字都是某個(gè)緩沖區(qū)的一部分。

          >> 輸入 C-x 1 離開(kāi)緩沖區(qū)列表

          不管存在多少緩沖區(qū),任何時(shí)候都只能有一個(gè)是“當(dāng)前”緩沖區(qū),也就是你正在 編輯的這個(gè)。如果你想編輯另外一個(gè)緩沖區(qū),那么你必須“切換”過(guò)去。上面講 過(guò),用 C-x C-f 可以切換到某個(gè)文件對(duì)應(yīng)的緩沖區(qū)。不過(guò)還有一個(gè)更簡(jiǎn)單點(diǎn)的辦 法,那就是用 C-x b。用這個(gè)命令,你必須輸入緩沖區(qū)的名稱。

          >> 輸入 C-x b foo <Return> 以回到文件“foo”的緩沖區(qū)。

             然后輸入 C-x b TUTORIAL.cn <Return> 回到這里。

          大多數(shù)情況下,緩沖區(qū)和與其對(duì)應(yīng)的文件是同名的(不包括目錄名),不過(guò)這也 不是絕對(duì)的。用 C-x C-b 得到的緩沖區(qū)列表中顯示的總是緩沖區(qū)的名稱。

          你在 Emacs 窗格里看到的“任何”文字都一定是屬于某個(gè)緩沖區(qū)的。也有些緩沖 區(qū)并沒(méi)有對(duì)應(yīng)文件:比如顯示緩沖區(qū)列表的緩沖區(qū)就是這樣,再比如一個(gè)名叫 “*Messages*”的緩沖區(qū)也沒(méi)有對(duì)應(yīng)的文件,這個(gè)緩沖區(qū)里存放的都是在 Emacs 底部出現(xiàn)的消息。

          >> 輸入 C-x b *Messages* <Return> 瞅瞅消息緩沖區(qū)里都有什么東西。

             然后再輸入 C-x b TUTORIAL.cn <Return> 回到這里。

          如果你對(duì)文件做了修改,然后切換到另一個(gè)文件,這個(gè)動(dòng)作并不會(huì)幫你把第一個(gè) 文件存盤(pán),對(duì)第一個(gè)文件的修改仍然僅限于 Emacs 中,也就是在它對(duì)應(yīng)的緩沖區(qū) 里。同時(shí)對(duì)第二個(gè)文件的修改也不會(huì)影響到第一個(gè)文件。這很有用,但是也挺麻 煩,因?yàn)槿绻阌窒胍鎯?chǔ)第一個(gè)文件,你還需要先用 C-x C-f 切換回去,然后 再用 C-x C-s 存盤(pán),這顯然太麻煩了。你需要一個(gè)更簡(jiǎn)便的方法,而 Emacs 當(dāng) 然已經(jīng)替你想到了:

                  C-x s   保存多個(gè)緩沖區(qū)

          C-x s 會(huì)找到所有已被修改但尚未存盤(pán)的緩沖區(qū),然后向你逐個(gè)詢問(wèn),是否需要 存盤(pán)?

          >> 插入一行文字,然后輸入 C-x s。

             它應(yīng)該會(huì)問(wèn)你,是否要儲(chǔ)存名為 TUTORIAL.cn 的緩沖區(qū)?
          按“y”告訴它你想存盤(pán)。
          • 命令集擴(kuò)展(EXTENDING THE COMMAND SET)

          Emacs 的命令就像天上的星星,數(shù)也數(shù)不清。把它們都對(duì)應(yīng)到 CONTROL 和 META 組合鍵上顯然是不可能的事情。Emacs 用擴(kuò)展(eXtend)命令來(lái)解決這個(gè)問(wèn)題, 擴(kuò)展命令有兩種風(fēng)格:

                  C-x     字符擴(kuò)展。  C-x 之后輸入另一個(gè)字符或者組合鍵。
          M-x 命令名擴(kuò)展。M-x 之后輸入一個(gè)命令名。

          很多擴(kuò)展命令都很有用,雖然與你已經(jīng)學(xué)過(guò)的命令比起來(lái),他們可能不那么常用。 你應(yīng)該已經(jīng)見(jiàn)過(guò)一些擴(kuò)展命令了,比如用 C-x C-f 尋找文件和用 C-x C-s 保存 文件。退出 Emacs 用的 C-x C-c 也是擴(kuò)展命令。(不用擔(dān)心退出 Emacs 會(huì)給你 帶來(lái)什么損失,Emacs 會(huì)在退出之前提醒你保存文件的)

          在控制臺(tái)下,C-z 可以暫時(shí)離開(kāi) Emacs——當(dāng)然,你還可以再回來(lái)。

          在允許 C-z 的系統(tǒng)中,C-z 會(huì)把 Emacs“掛起”,也就是說(shuō),它會(huì)回到 shell 但不退出 Emacs。在那些最常用的 shell 中,通常可以用“fg”或者“%emacs” 命令再次回到 Emacs 中。

          在沒(méi)有提供掛起功能的系統(tǒng)中,C-z 會(huì)在 Emacs 之下創(chuàng)建一個(gè)子 shell 來(lái)讓你 運(yùn)行其它程序,并且再次“回到” Emacs 中——雖然我們并沒(méi)有真正離開(kāi)過(guò)。這 種情況下,通常用shell 命令“exit”從子 shell 回到 Emacs。

          C-x C-c 最好在你打算退出登陸的時(shí)候再用。在 Emacs 被諸如郵件處理程序之類 的外部程序調(diào)用之后,也可以用 C-x C-c 退出。不過(guò)一般來(lái)講,如果你不想退出 登錄,最好還是把 Emacs 掛起而不是退出。

          C-x 的擴(kuò)展命令有很多,下面列出的是你已經(jīng)學(xué)過(guò)的:

                  C-x C-f         尋找文件。
          C-x C-s 保存文件。
          C-x C-b 列出緩沖區(qū)。
          C-x C-c 離開(kāi) Emacs。
          C-x 1 關(guān)掉其它所有窗格,只保留一個(gè)。
          C-x u 撤銷。

          用命令名擴(kuò)展的命令一般都不太常用,或者只在部分模式下被用到。比如 replace-string(字符串替換)這個(gè)命令,它會(huì)在全文范圍內(nèi)把一個(gè)字符串替換 成另一個(gè)。在你輸入 M-x 的時(shí)候,Emacs 會(huì)在屏幕底端向你詢問(wèn),然后你應(yīng)該輸 入命令名。如果你想輸入“replace-string”,其實(shí)只需要敲“repl s<TAB>”就 行了,Emacs 會(huì)幫你自動(dòng)補(bǔ)齊的。輸入完之后按 <Return> 。

          字符串替換命令需要兩個(gè)參數(shù)——被替換的字符串和用來(lái)替換它的字符串。每個(gè) 參數(shù)的輸入用換行符來(lái)結(jié)束。

          >> 將光標(biāo)移到本行的下兩行空白,然后輸入

             M-x repl s<Return>changed<Return>altered<Return>。

          【為了繼續(xù)練習(xí),保留一行原文如下:
          Notice how this line has changed: you've replaced... 】

          請(qǐng)注意這一行是怎么改變的:在光標(biāo)之后的范圍內(nèi),你已經(jīng)將“changed”這個(gè) 詞——不管它在哪里出現(xiàn)——全部用“altered”替換掉了。

          • 自動(dòng)保存(AUTO SAVE)

          如果你修改了一個(gè)文件但是還沒(méi)來(lái)得及存盤(pán),然后你的計(jì)算機(jī)罷工了,那么你編 輯的東西很可能就找不回來(lái)了。為了避免這樣的不幸一再發(fā)生,Emacs 會(huì)定期將 你正在編輯的文件存入一個(gè)“自動(dòng)保存”文件中。自動(dòng)保存的文件名的頭尾各有 一個(gè)“#”字符,比如你正在編輯“hello.c”,那么它的自動(dòng)保存文件就叫 “#hello.c#”。在你正常存盤(pán)之后,Emacs 會(huì)刪除自動(dòng)保存文件。

          假如不幸真的發(fā)生了,你大可以從容的打開(kāi)原來(lái)的文件(注意不是自動(dòng)保存文件) 然后輸入 M-x recover file<Return> 來(lái)恢復(fù)你的自動(dòng)保存文件。在提示確認(rèn)的 時(shí)候,輸入 yes<Return> 就行了。

          • 回顯區(qū)(ECHO AREA)

          如果 Emacs 發(fā)現(xiàn)你輸入多字符命令的節(jié)奏很慢,它會(huì)在窗格的下方稱為“回顯區(qū)” 的地方給你提示。回顯區(qū)位于屏幕的最后一行。

          • 狀態(tài)欄(MODE LINE)

          位于回顯區(qū)的正上方的一行被稱為“狀態(tài)欄”。狀態(tài)欄上會(huì)顯示一些信息,比如:

          --:** TUTORIAL.cn (Fundamental)--L670--54%----------------

          狀態(tài)欄顯示了 Emacs 的狀態(tài)和你正在編輯的文字的一些信息。

          你應(yīng)該知道文件名的意思吧?就是你找到的那個(gè)文件嘛。-NN%-- 顯示的是光標(biāo)在 全文中的位置。如果位于文件的開(kāi)頭,那么就顯示 --Top-- 而不是 --00%--;如 果位于文件的末尾,就顯示 --Bot--。如果文件很小,一屏就足以顯示全部?jī)?nèi)容, 那么狀態(tài)欄會(huì)顯示 --All--。

          L 和其后的數(shù)字給出了光標(biāo)所在行的行號(hào)。

          最開(kāi)頭的星號(hào)(*)表示你已經(jīng)對(duì)文字做過(guò)改動(dòng)。剛剛打開(kāi)的文件肯定沒(méi)有被改動(dòng) 過(guò),所以狀態(tài)欄上顯示的不是星號(hào)而是短線(-)。

          狀態(tài)欄上小括號(hào)里的內(nèi)容告訴你當(dāng)前正在使用的編輯模式。缺省的模式是 Fundamental,就是你現(xiàn)在正在使用的這個(gè)。它是一種“主模式”。

          Emacs 的主模式林林總總。有用來(lái)編輯程序代碼的——比如 Lisp 模式;也有用 來(lái)編輯各種自然語(yǔ)言文本的——比如 Text 模式。任何情況下只能應(yīng)用一個(gè)主模 式,其名稱會(huì)顯示在狀態(tài)欄上,就在現(xiàn)在顯示“Fundamental”的地方。

          主模式有時(shí)會(huì)改變一些命令的行為。比如說(shuō),不管編輯什么樣的程序代碼,你都 可以用一個(gè)統(tǒng)一的命令來(lái)添加注釋,但是在不同的語(yǔ)言中注釋的語(yǔ)法往往是不同 的,這時(shí)相應(yīng)的主模式就會(huì)分別用各自的語(yǔ)法規(guī)則來(lái)添加注釋。主模式都是可以 用 M-x 啟動(dòng)的命令,所以 M-x fundamental-mode 就可以切換到 Fundamental 模式。

          如果你要編輯自然語(yǔ)言文本——比如現(xiàn)在——你應(yīng)該用 Text 模式。

          >> 輸入 M-x text mode<Return>。

          別害怕,沒(méi)有什么命令會(huì)改變功能。不過(guò)你可以發(fā)現(xiàn),M-f 和 M-b 現(xiàn)在把單引號(hào) (')視為詞的一部分了。而在先前,在 Fundamental 模式中,M-f 和 M-b 都將 單引號(hào)視為分隔單詞的符號(hào)。

          主模式通常都會(huì)搞一些類似的小動(dòng)作,因?yàn)楹芏嗝钇鋵?shí)完成的是“相同的工 作”,只是在不同情況下會(huì)有不同的工作方式而已。【所謂“求同存異”,在 Emacs 里得到了很好的體現(xiàn)】

          用 C-h m 可以查看當(dāng)前主模式的文檔。

          >> 用 C-u C-v 將本行帶到靠近屏幕的上方。 >> 輸入 C-h m,看看 Text 模式與 Fundamental 模式有哪些不同。 >> 輸入 C-x 1 關(guān)掉文檔窗格。

          主模式之所以稱之為“主(major)”模式,是因?yàn)橥瑫r(shí)還有“輔模式”(minor mode)存在。輔模式并不能替代主模式,而是在主模式之外再做一些輔助的修改。 每個(gè)輔模式都可以獨(dú)立地開(kāi)啟和關(guān)閉,跟其它輔模式無(wú)關(guān),跟主模式也無(wú)關(guān)。所 以你可以不用輔模式,也可以用一個(gè)或者多個(gè)輔模式。

          有一個(gè)叫做自動(dòng)折行(Auto Fill)的輔模式用處很大,特別是在編輯自然語(yǔ)言文 本的時(shí)候。這個(gè)輔模式啟動(dòng)后,Emacs 會(huì)在你打字超出一行邊界時(shí)自動(dòng)替你換行。

          用 M-x auto fill mode<Return> 啟動(dòng)自動(dòng)折行模式。啟動(dòng)之后,如果我們?cè)儆?一次 M-x auto fill mode<Return>,自動(dòng)折行模式就被關(guān)閉了。也就是說(shuō),如果 自動(dòng)折行模式?jīng)]有開(kāi)啟,這個(gè)命令會(huì)開(kāi)啟它;而如果已經(jīng)開(kāi)啟了,這個(gè)命令會(huì)關(guān) 閉它。我們說(shuō)這個(gè)命令用來(lái)“開(kāi)關(guān)(toggle)”模式。

          >> 現(xiàn)在輸入 M-x auto fill mode<Return>。然后隨便敲點(diǎn)什么,直到你看到它

             分成兩行。必須敲一些空格,因?yàn)?Auto Fill 只在空白處進(jìn)行斷行。【空格
          對(duì)英文來(lái)說(shuō)是必須的,而對(duì)中文則不必。】

          行邊界通常被設(shè)定為 70 個(gè)字符【這里指英文字符】,你可以用 C-x f 命令來(lái)重 新設(shè)定之。指定新行邊界可以用數(shù)字參數(shù)來(lái)進(jìn)行傳遞。

          >> 輸入 C-x f 并傳遞參數(shù) 20: C-u 2 0 C-x f。

             然后輸入一些文字,觀察 Emacs 的自動(dòng)折行動(dòng)作
          最后再用 C-x f 將邊界設(shè)回 70。

          如果你在段落的中間做了一些修改,那么自動(dòng)折行模式不會(huì)替你把整個(gè)段落重新 折行。重新自動(dòng)折行用 M-q,注意使用的時(shí)候光標(biāo)必須位于你想折行的那一段里。

          >> 移動(dòng)光標(biāo)到前一段中,然后輸入 M-q。

          • 搜索(SEARCHING)

          Emacs 可以向前或者向后搜索字符串。搜索命令是一個(gè)移動(dòng)光標(biāo)的命令:搜索成 功后,光標(biāo)會(huì)停留在搜索目標(biāo)出現(xiàn)的地方。

          Emacs 的搜索命令的獨(dú)特之處在于,它是“漸進(jìn)的(incremental)”,意思是搜 索與輸入同時(shí)進(jìn)行:你在這邊一個(gè)字一個(gè)字地輸入你想搜索的東西,同時(shí) Emacs 在那邊就替你搜索了。

          C-s 是向前搜索,C-r 是向后搜索。不過(guò)手別這么快!先等等別著急試。

          在你按下 C-s 之后,你會(huì)發(fā)現(xiàn)回顯區(qū)里有“I-search”字樣出現(xiàn),這是在提示 你目前 Emacs 正處于“漸進(jìn)搜索”狀態(tài),正在等待你輸入搜索字串。<Return> 會(huì)結(jié)束搜索。

          >> 輸入 C-s 開(kāi)始一個(gè)搜索。注意敲慢一點(diǎn),一次輸入一個(gè)字符。

             慢慢輸入“cursor”整個(gè)詞,每敲一個(gè)字就暫停一下,注意觀察光標(biāo)。
          現(xiàn)在你應(yīng)該已曾經(jīng)找到“cursor”這個(gè)詞了。

          >> 再按一次 C-s,搜索下一個(gè)“cursor”出現(xiàn)的位置。 >>

          主站蜘蛛池模板: 石河子市| 平昌县| 贵定县| 溧阳市| 石林| 建水县| 隆尧县| 伊金霍洛旗| 四平市| 武安市| 循化| 瑞安市| 荔浦县| 玉环县| 周口市| 颍上县| 民勤县| 佛坪县| 巢湖市| 临泽县| 东台市| 靖州| 郓城县| 南昌市| 大化| 信宜市| 葫芦岛市| 华蓥市| 梁山县| 江城| 嘉祥县| 锦州市| 泸州市| 汾阳市| 扶沟县| 南通市| 临猗县| 星座| 格尔木市| 灵石县| 新晃|