<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    kooyee ‘s blog

    開源軟件, 眾人努力的結(jié)晶, 全人類的共同財(cái)富
    posts - 103, comments - 55, trackbacks - 0, articles - 66
       :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    【Linux】Emacs 教程中文版

    Posted on 2009-01-05 02:16 kooyee 閱讀(2596) 評(píng)論(0)  編輯  收藏
    Emacs 的命令通常包括控制鍵(就是上面標(biāo)有 Ctrl或Ctl的那個(gè))或者是META鍵(上面標(biāo)有EDIT或ALT)。為了方便起見我們將用下面的縮寫來(lái)代替這些鍵的全稱:

    C- 意思是當(dāng)敲入字符 時(shí)同時(shí)按住控制鍵,因此,C-f表 示:按住控制鍵并且按 f 。 M- 表示當(dāng)鍵入 時(shí)按住META或ALT或EDIT鍵。如果沒有META 或ALT或EDIT鍵,則用ESC鍵代替。 表示ESC鍵

    注意:退出Emacs,按C-x C-c(兩個(gè)字符)。在文本左邊區(qū)域的“>>”符號(hào)表示讓你試著使用一個(gè)命令。比如:
    >> 現(xiàn)在鍵入C-v(觀看下一屏)移動(dòng)到下一屏。(就象前面說(shuō)的,按v的同時(shí)也按住控制鍵)。從現(xiàn)在開始,每當(dāng)你讀完一屏的時(shí)候都可以用它來(lái)翻屏。
    注意在翻屏后會(huì)保留上屏的最后一行;這是為你繼續(xù)閱讀文本提供某些連貫性。
    你所需要知道的第一件事是如何把光標(biāo)從一個(gè)地方移動(dòng)到另一個(gè)地方。你已經(jīng)知道了如何向前翻一屏--用 C-v。要向后翻一屏,鍵入M-v。
    >> 試著鍵入 M-v 和 C-v 幾次。
    * 摘要(SUMMARY)
    ---------------------------
    下面幾個(gè)命令對(duì)整屏觀看時(shí)有用:

    C-v 向前翻一整屏。
    M-v 向后翻一整屏。
    C-l 清除屏幕并重新顯示所有的文本,然后把光標(biāo)移動(dòng)到屏幕的中央。 (注意是Control-L,而不是 Control-1)。
    >> 尋找光標(biāo),并且注意它在文本里的位置。然后鍵入C-l。再尋找光標(biāo)你會(huì)注意到光標(biāo)現(xiàn)在會(huì)出現(xiàn)在同樣的文本附近。
    * 基本光標(biāo)控制(BASIC CURSOR CONTROL)
    -----------------------------------------------------------------
    整屏整屏的移動(dòng)是很有用的,可是如何把光標(biāo)移動(dòng)到屏幕上文本里的一個(gè)指定的地方呢?
    有好幾個(gè)方法可以實(shí)現(xiàn)。最基本的方法是用命令 C-p,C-b,C-f,和C-n。這些命令每個(gè)都使光標(biāo)在屏幕上往特定的方向移動(dòng)一行或者一列。下面是一個(gè)圖表顯示了這四個(gè)命令和它們所移動(dòng)的方向:


    上一行,C-p
    :
    :
    向前,C-b ...... 當(dāng)前光標(biāo)的位置 ...... 向后,C-f
    :
    :
    下一行,C-n
    >> 用C-n或C-p把光標(biāo)移動(dòng)到圖表中間。然后鍵入C-l會(huì)看到整個(gè)圖表出現(xiàn)在屏幕的中央。



    你也許會(huì)發(fā)現(xiàn)這些字母很容易記住:P 代表上面的(previous),N 代表下一個(gè) (next),B 代表向前(backward),F(xiàn) 代表向后(forward)。這些是基本的光標(biāo)位置命令,你將經(jīng)常會(huì)用到它們。所以現(xiàn)在學(xué)習(xí)它們很有好處。


    >> 用幾次 C-n 把光標(biāo)向下移動(dòng)到這一行。

    >> 用 C-f 把光標(biāo)移動(dòng)到行里,再用C-p把光標(biāo)上移。觀察當(dāng)光標(biāo)在行的中間時(shí) C-p做了些什么。
    每一個(gè)文本行都以一個(gè)換行符結(jié)尾,它用來(lái)當(dāng)作行與行之間的分格。你的文件的最后一行的尾部應(yīng)該有一個(gè)換行符(但Emacs并不要求一定要有一個(gè))。
    >> 試著在行的開頭使用C-b。它將會(huì)把光標(biāo)移到上一行的末尾。這是因?yàn)樗蚝笠频臅r(shí)候穿過了換行符。
    C-f 也能象 C-b一樣穿過換行符。
    >> 使用幾次C-b,使您能知道光標(biāo)在哪。然后用C-f移動(dòng)到行的末尾。然后再用一次C-f,使光標(biāo)移動(dòng)到下一行。

    當(dāng)你移動(dòng)超過屏幕的頂部或底部,光標(biāo)回移動(dòng)到下一屏的中間,這叫做“滾屏 (scrolling)”。它使得Emacs滾屏移動(dòng)到文本上指定的部位而不是移出屏幕。

    >> 試著用C-n把光標(biāo)移過屏幕的底部,看看回發(fā)生什么。

    如果覺得一個(gè)一個(gè)字符的移動(dòng)太緩慢,可以一個(gè)單詞一個(gè)單詞的移動(dòng)。M-f(Meta-f) 向前移一個(gè)單詞,M-b向后移一個(gè)單詞。
    >> 鍵入幾個(gè)M-f和M-b。

    當(dāng)光標(biāo)在一個(gè)單詞的中間,M-f移動(dòng)到單詞的末尾。當(dāng)光標(biāo)在兩個(gè)單詞間的空白部分 M-f移動(dòng)到后一個(gè)單詞的末尾。M-b與M-f一樣,只是移動(dòng)的方向相反。
    >> 鍵入M-f和M-b幾次,中間穿插一些C-f和C-b以使你能觀察到M-f和M-b在單詞中和單詞間的不同行為。

    注意比較C-f,C-b與M-f,M-b。通常情況下Meta鍵用于有關(guān)語(yǔ)言單位(詞,句,段落) 的操作;而控制鍵用于編輯時(shí)的基本單位(字符,行等)。
    這是句與行的比較:C-a和C-e移動(dòng)到一行的開頭和末尾,M-a和M-e移動(dòng)到一個(gè)句子的開頭和末尾。
    >> 鍵入一對(duì)C-a,再鍵入一對(duì)C-e。 鍵入一對(duì)M-a,再鍵入一對(duì)M-e。

    你會(huì)看到重復(fù)鍵入的C-a什么也不做,而重復(fù)鍵入的M-a則會(huì)移動(dòng)一個(gè)以上的句子。
    光標(biāo)在文本中的位置也叫“點(diǎn)(point)”。在段落里,光標(biāo)標(biāo)示出了點(diǎn)在屏幕上文本里的位置。
    下面是簡(jiǎn)單的光標(biāo)移動(dòng)命令的總結(jié),包括單詞和句子的移動(dòng)命令:

    C-f 向前移動(dòng)一個(gè)字符。
    C-b 向后移動(dòng)一個(gè)字符。

    M-f 向前移動(dòng)一個(gè)單詞。
    M-b 向后移動(dòng)一個(gè)單詞。

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

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

    M-a 向前移動(dòng)到句子的開頭。
    M-e 向后移動(dòng)到句子的末尾。

    >> 試著對(duì)每一個(gè)命令都實(shí)踐幾次,它們都是經(jīng)常要用到的命令。
    另外兩個(gè)重要的光標(biāo)移動(dòng)命令是M-<(Meta小于),它移動(dòng)光標(biāo)到整個(gè)文本的開頭,M-> (Meta大于)它移動(dòng)光標(biāo)到整個(gè)文本的末尾。
    在多數(shù)終端上,“<”在逗號(hào)的上面,所以你必須用Shift鍵來(lái)輸入它。在這些終端上,你也必須用Shift鍵來(lái)輸入M-<;沒有Shift鍵,你可以輸入M-逗號(hào)。
    >> 現(xiàn)在就試試M-<,移動(dòng)到本教程的開頭,然后再用C-v移回這里。 現(xiàn)在就試試M->,移動(dòng)到本教程的末尾,然后再用M-v移回這里。

    你也可以用方向鍵來(lái)移動(dòng)光標(biāo),如果你的終端有方向鍵的話。我們建議學(xué)習(xí)C-b, C-f,C-n和C-p有三個(gè)原因。第一,它們能在所有類型的終端上工作。第二,你獲得了使用Emacs的鍛煉,你將會(huì)發(fā)現(xiàn)輸入這些CTRL加字符比按方向鍵要快(因?yàn)槟悴槐匕涯愕氖謴逆I盤上移開)。第三,一旦你養(yǎng)成了使用這些CTRL加字符的命令的習(xí)慣,你就能一樣容易的學(xué)習(xí)其他高級(jí)的光標(biāo)移動(dòng)命令。
    大多數(shù)Emacs命令接收一個(gè)數(shù)字參數(shù);對(duì)大多數(shù)命令來(lái)說(shuō),這表示命令重復(fù)的次數(shù)。輸入重復(fù)命令次數(shù)的方法是在輸入命令之前按C-u和數(shù)字。如果你有META(或EDIT或 ALT)鍵,則有另一種方法輸入數(shù)字參數(shù):在按住META鍵的時(shí)候輸入數(shù)字,我們建議學(xué)習(xí)C-u方法,因?yàn)樗茉谌魏谓K端上工作。
    例如,C-u 8 C-f 向前移動(dòng)8個(gè)字符。
    >> 試著使用帶數(shù)字參數(shù)的C-n或C-p,只用一個(gè)命令就把光標(biāo)移動(dòng)到與本行相鄰的 行上。

    絕大多數(shù)命令把數(shù)字參數(shù)當(dāng)作重復(fù)次數(shù),但也有幾個(gè)例外。C-v和M-v就是。當(dāng)給出一個(gè)參數(shù),只是上滾或下滾數(shù)字指定的行數(shù)而不是屏數(shù)。比如,C-u 4 C-v滾動(dòng)4行屏幕。


    >> 現(xiàn)在試試 C-u 8 C-v。
    這將使屏幕滾動(dòng)8行,如果你想往回滾動(dòng)的話,鍵入一個(gè)帶參數(shù)的M-v。
    如果你正在使用X窗口,在Emacs窗口的左手邊有一個(gè)叫做滾動(dòng)條的矩形區(qū)域。你能通過用鼠標(biāo)點(diǎn)擊滾動(dòng)條來(lái)滾動(dòng)文本。
    >> 試著在滾動(dòng)條頂部的高亮區(qū)域點(diǎn)擊中鍵。這將使文本滾動(dòng),滾動(dòng)的位置取決于 你點(diǎn)擊的長(zhǎng)短。

    >> 試著按住鼠標(biāo)中鍵上移或下移鼠標(biāo),你將看到當(dāng)你移動(dòng)鼠標(biāo)時(shí)文本會(huì)上下滾動(dòng)。
    * 當(dāng)EMACS掛起時(shí)(WHEN EMACS IS HUNG)
    ------------------------------------------------------------------
    當(dāng)Emacs停止響應(yīng)你的命令時(shí),你能用C-g把它安全的停止。當(dāng)一個(gè)命令執(zhí)行了太長(zhǎng)的時(shí)間時(shí)你可以用C-g把它終止。
    你也可以用C-g來(lái)取消數(shù)字參數(shù)和輸入后又不想執(zhí)行的命令。
    >> 鍵入C-u 100 產(chǎn)生一個(gè)值為100的數(shù)字參數(shù),然后按C-g。再按C-f。它只會(huì)移動(dòng) 一個(gè)字符,因?yàn)槟阌肅-g取消了參數(shù)。


    如果錯(cuò)誤的輸入了一個(gè) ,你能用C-g消掉它。
    * 禁止命令(DISABLED COMMAND)
    ----------------------------------------------------
    一些Emacs命令是“禁止”的,所以新手不會(huì)因偶然而執(zhí)行它。
    如果你鍵入了一個(gè)禁止命令,Emacs會(huì)顯示一條消息說(shuō)明這條命令是干什么的,并且問你是否需要執(zhí)行它。
    如果你真的想要執(zhí)行,敲空格鍵繼續(xù)。通常,如果你不想執(zhí)行禁止命令,用“n”來(lái)回答。

    >> 輸入 :(一條禁止命令),然后用n來(lái)回答。

    * 窗口(WINDOWS)
    -----------------------------
    Emacs 能有好幾個(gè)窗口,每一個(gè)顯示自己的文本。我們將在后面解釋怎樣對(duì)多窗口操作。現(xiàn)在我們要解釋怎樣去除多余的窗口屏回到基本的單窗口編輯狀態(tài)。這是一個(gè)例子:
    C-x 1 一個(gè)窗口(也就是除去其他所有的窗口)。
    因?yàn)镃ontrol-x跟了數(shù)字1。C-x 1使包含光標(biāo)的窗口占滿整個(gè)屏幕,屏刪除其他所有窗口。
    >> 把光標(biāo)移動(dòng)本行并輸入 C-u 0 C-l。
    >> 鍵入Control-h k Control-f。 看這個(gè)窗口如何縮小,并在按Control-f的時(shí)候出現(xiàn)了一個(gè)新的文檔窗口。
    >> 鍵入C-x 1 并且看到那個(gè)文檔窗口消失了。

    * 插入和刪除(INSERTING AND DELETING)
    ---------------------------------------------------------------
    如果你要插入文本,只須輸入文本。輸入的字符你能見到,比如A,7,*等等。Emacs 會(huì)立即把它們插入。鍵入 (回車鍵)插入一個(gè)換行符。
    你能用 刪除你輸入的最后一個(gè)字符。 就是鍵盤上標(biāo)著“Del”的鍵。在某些情況下,“Backspace”鍵作用和 一樣,但不總是這樣!


    通常, 立即刪除光標(biāo)前面的那個(gè)字符。


    >> 輸入幾個(gè)字符,然后用 刪除它們。不必?fù)?dān)心這個(gè)文件回被改變;你不會(huì) 替換主教程。這只是你的個(gè)人拷貝。

    當(dāng)一行文本太長(zhǎng)而超過屏幕寬度時(shí),這一行會(huì)在屏幕的下一行被“繼續(xù)”。文本的右邊會(huì)有一個(gè)反斜杠“”表示它被繼續(xù)。
    >> 插入文本直到最右邊,然后再插入。你將看到一個(gè)繼續(xù)了的行。
    >> 使用 刪除文本直到行的長(zhǎng)度在屏幕的寬度以內(nèi)。繼續(xù)的行將會(huì)消失。

    你能像刪除其他任何字符一樣刪除換行符。刪除兩個(gè)行間的換行符會(huì)使它們合并為一行。如果這一行很長(zhǎng)屏幕顯示不下的話,將會(huì)用一個(gè)繼續(xù)的行來(lái)表示。
    >> 把光標(biāo)移動(dòng)到一行的開頭按 這將使本行和上一行合為一行。
    >> 按 重新插入你刪除的換行符。

    記住大多數(shù)的Emacs命令能接收一個(gè)重復(fù)次數(shù)。這包括文本字符,把一個(gè)文本字符重復(fù)的插入幾次。
    >> 鍵入這個(gè)-- C-u 8 * 來(lái)插入 ********

    你現(xiàn)在已經(jīng)學(xué)習(xí)了Emacs的大多數(shù)輸入和排錯(cuò)的方法。你也能一樣的刪除單詞或行。這是刪除操作的摘要:
    刪除光標(biāo)前面的字符
    C-d 刪除光標(biāo)后面的字符
    M- 除去光標(biāo)前面的單詞
    M-d 除去光標(biāo)后面的單詞
    C-k 除去從光標(biāo)位置到行尾的內(nèi)容
    M-k 除去到當(dāng)前句子的末尾
    注意比較 ,C-d與M ,M-d和C-f,M-f( 不是一個(gè)控制字符,但不用擔(dān)心)。C-k和M-k就象C-e,M-e。
    當(dāng)你一次除去不止一個(gè)字符時(shí),Emacs將保存著這些文本,所以你可以恢復(fù)它們。恢復(fù)那些被除去的文本稱作“拉(yanking)”。你能在除去文本的同一地方拉回它們,或是在文本的其他地方。你能對(duì)文本拉上幾次以產(chǎn)生它們的多個(gè)拷貝,拉的命令是 C-y。
    注意“除去(killing)”與“刪除(Deleting)”之間的區(qū)別,被除去的東西能被拉回來(lái),而被刪除的不能。通常除去能除去很多的文本屏保存,而刪除只能除去一個(gè)字符,或是空行或空格,并且不保存。


    >> 把光標(biāo)移到一個(gè)空行的開頭,鍵入C-k除去這一行。
    >> 按第二次C-k,你將看到剩下的空行也被除去了。



    注意單個(gè)的C-k除去行的內(nèi)容,第二個(gè)C-k除去行本身,并且使后面的所有行上移。特別要注意數(shù)字參數(shù):它除去很多行和它們的內(nèi)容,這不僅僅是重復(fù)。C-u 2 C-k 除去兩行和它們剩下的空行;而按兩次C-k并不會(huì)這樣做。


    要在當(dāng)前光標(biāo)處找回上次被除去的文本;按C-y


    >> 試一試,用C-y把文本拉回來(lái)。



    把C-y考慮為你把某人從你這里拿走的東西再拿回來(lái)。注意你如果在一行上按了幾次 C-y,所有被除去的文本是存在一起的,所以按一次C-y將拉回全部的行。


    >> 現(xiàn)在就試一下,按幾次C-k。 現(xiàn)在找回被除去的文本;


    >> 按C-y。然后把光標(biāo)下移幾行再按一次C-y,你現(xiàn)在會(huì)看到怎樣拷貝這些文本。



    當(dāng)你要拉回一些被除去的文本該怎樣做呢?C-y只能拉回最近被除去的文本。但以前的文本并沒有消失。你能用M-y來(lái)恢復(fù)它。當(dāng)你用C-y拉回最近被除去的文本后,換成 M-y可以拉回以前被除去的文本。鍵入一次又一次的M-y可以拉回更早以前被除去的文本。當(dāng)你找到要尋找的文本,不必做任何事來(lái)保持它,只須離開拉文本的地方繼續(xù)你的編輯。


    如果你M-y了足夠多的次數(shù),你會(huì)回到開始點(diǎn)(最近被除去的)。


    >> 除掉一行,移開,再除掉另一行。 然后用C-y拉回第二行。 然后換成M-y拉回被除掉的第一行。 再按一次M-y看看得到了什么。繼續(xù)按直到拉回被除去的第二行;然后再做幾次。 如果原意的話,你可以給M-y加正的或負(fù)的數(shù)字參數(shù)。





    * 撤銷(UNDO)
    --------------------



    如果你對(duì)文本作了一些改動(dòng),然后又發(fā)現(xiàn)這樣做是錯(cuò)誤的,你能用撤銷命令,C-x u 撤銷這些改變。


    通常,一次C-x u撤銷一個(gè)改變;如果你在一行上重復(fù)幾次C-x u,就會(huì)重復(fù)幾次撤銷操作。


    但有兩個(gè)例外:不改變文本的操作(包括光標(biāo)移動(dòng)和滾屏命令)不算在內(nèi);只能處理20 次。


    >> 用C-k除去這一行,然后按C-x u 它將重現(xiàn)出來(lái)。



    C-_是一個(gè)可選擇的撤銷命令;它所作的工作和C-x u 完全一樣,只是更容易輸入。 C-_的缺點(diǎn)是有些鍵盤上沒有它,這就是為什么還提供C-x u的原因。在某些終端上你可以按住CTRL的時(shí)候再敲/來(lái)輸入C-_。C-_或C-x u把數(shù)參數(shù)字當(dāng)作重復(fù)次數(shù)。


    * 文件(FILES)
    -------------------

    為了永久保存你編輯的文本,你必須把它放到一個(gè)文件里。否則當(dāng)你退出Emacs的時(shí)候它就會(huì)消失。你通過“查找(finding)”文件,把你編輯的內(nèi)容放到文件里。(也稱為 “訪問(visiting)文件”)。


    (譯注:為了保持與原文的一致性,把find譯為“查找”,但是這里和后面出現(xiàn)的 “查找文件”指的都是打開文件的意思。)


    查找(finding)一個(gè)文件意味著你在Emacs里看文件的內(nèi)容,在多數(shù)情況下,也就是你在編輯它。但是,你用Emacs對(duì)它作的改變并不是永久行的,除非你“保存(saving)” 它。所以你可以避免把一個(gè)改了一半的文件留在系統(tǒng)上。甚至你保存了文件,Emacs也會(huì)把原始文件換個(gè)名字保留下來(lái),以防過后你發(fā)現(xiàn)對(duì)文件的改動(dòng)是錯(cuò)誤的。


    如果你觀察屏幕的你將看見一個(gè)開始和結(jié)尾都是破折號(hào)的行,并且以“--:**-- TUTORIAL”或之類的東西開始。屏幕的這部分通常顯示你正在訪問的文件的名字。現(xiàn)在,一個(gè)叫做“TUTORAL”的文件,它是你的Emacs教程的個(gè)人拷貝。當(dāng)你用Emacs 查找一個(gè)文件,文件名會(huì)出現(xiàn)在同樣的位置。


    查找和保存文件命令不像前面學(xué)的那些命令。它們都以字符Control-x開始。以 Control-x起頭的是一個(gè)完整的命令系列;它們中的許多都是對(duì)文件,緩沖,和相關(guān)的東西進(jìn)行操作的。這些命令有兩個(gè),三個(gè)或四個(gè)字符長(zhǎng)。


    關(guān)于查找文件命令的另一件事是你必須給出你需要的文件的文件名。我們說(shuō)這個(gè)命令 “從終端讀取一個(gè)參數(shù)”。(在這種情況下,參數(shù)是文件的名字);當(dāng)你鍵入命令C-x C-f后,Emacs會(huì)提示你輸入文件的名字。你輸入的文件名會(huì)出現(xiàn)在屏幕底部的行上。這個(gè)底部的行稱為微型緩沖(minibuffer)用于這類較短的輸入。你能用Emacs本身的編輯命令來(lái)編輯文件名。


    當(dāng)你正在輸入文件名(或其他任何微型緩沖區(qū)輸入),你能用命令C-g來(lái)取消。


    >> 鍵入命令C-x C-f,然后輸入C-g。這將取消微型緩沖,也取消了C-x C-f命令所使 用的微型緩沖,所以你不查找任何文件。



    當(dāng)你輸完文件名后用 來(lái)結(jié)束。然后C-x C-f開始工作,并開始尋找你所選擇的文件。當(dāng)C-x C-f命令結(jié)束后微型緩沖區(qū)也消失了。


    過一小會(huì)兒文件的內(nèi)容就會(huì)顯示在屏幕上,然后你就能對(duì)它進(jìn)行編輯了。當(dāng)想永久保留你的改動(dòng)時(shí)用命令:


    C-x C-s 保存文件(save the file)。


    這個(gè)操作會(huì)把Emacs里的文本拷貝到文件里。在你第一次作的時(shí)候,Emacs把原始文 件改為一個(gè)新名字以使它不至于丟失。新名字是在原來(lái)名字的后面加一個(gè)“~”。


    保存結(jié)束后,Emacs打印出被寫的文件的文件名。你應(yīng)當(dāng)經(jīng)常的保存,萬(wàn)一系統(tǒng)崩潰 的話你不至于丟失太多的工作。


    >> 鍵入C-x C-s來(lái)保存你的教程的拷貝。屏幕的底部會(huì)打印出“Wrote.....TUTORIAL”。



    注意:在某些系統(tǒng)上,輸入C-x C-s 會(huì)把屏幕凍結(jié)住使你從Emacs看不到更多的輸出。這 表示這個(gè)操作系統(tǒng)的“特性”叫做“控制流程”,它攔截了C-x不讓它到達(dá)Emacs那里。 要使屏幕解凍,輸入C-q,然后看Emacs手冊(cè)里的“Spontaneous Entry to Incremental Search”一節(jié),按上面的建議來(lái)對(duì)付這種“特性”。


    你能查找一個(gè)已存在的文件,來(lái)查看它或編輯它。你也可以查找一個(gè)尚未存在的文件。這是 Emacs:里創(chuàng)建文件的方法:查找文件,將會(huì)出現(xiàn)一個(gè)空白,然后插入文件的文本。當(dāng)你 “保存(saving)”的時(shí)候,Emacs將會(huì)用你插入的文本創(chuàng)建文件。從那時(shí)候起,你可以認(rèn)為你在編輯一個(gè)存在的文件了。




    * (緩沖)BUFFERS
    --------------------------



    如果你用C-x C-f查找第二個(gè)文件,第一個(gè)文件仍然留在Emacs里。你可以再用C-x C-f查找一次來(lái)切換回去。用這種方法你在Emacs里有很多文件。


    >> 輸入C-x C-f foo 來(lái)建立一個(gè)名為foo的文件。然后插入一些文本,編輯它,并 用C-x C-s來(lái)保存“foo”。 最后輸入C-x C-f TUTORIAL 以回到本教程。




    Emacs把每個(gè)文件的文本都保存在一個(gè)叫“緩沖(buffer)”的東西里。查找(打開)一個(gè)文件就會(huì)在Emacs里產(chǎn)生一個(gè)新的緩沖。要看你當(dāng)前運(yùn)行的Emacs里存在的緩沖列表,輸入:


    C-x C-b 列出緩沖(list buffers)


    >> 輸入 C-x C-b



    觀察每個(gè)緩沖都有一個(gè)名字,它可能也有一個(gè)它所保存的文件的文件名。一些緩沖不對(duì)應(yīng)文件。比如,叫“*Buffers List*”的緩沖沒有任何文件。這個(gè)緩沖只包含由C-x C-b產(chǎn)生的緩沖列表。你在Emacs窗口里看到的任何文本都是某個(gè)緩沖的一部分。


    >> 輸入 C-x 1 消除緩沖列表。



    如果你對(duì)一個(gè)文件的文本作了改動(dòng),然后查找另一個(gè)文件,第一個(gè)文件并不保存。它的改變保存在Emacs里,在那個(gè)文件的緩沖里。被建立或編輯的第二個(gè)文件的緩沖并不影響第一個(gè)的。這一點(diǎn)很有用,但這也意味著要有一個(gè)便捷的方法來(lái)保存第一個(gè)文件的緩沖。如果要用 C-x C-f切換回去只是為了按C-x C-s保存它將會(huì)是一件令人討厭的事。所以我們用


    C-x s 保存緩沖(save the buffer)


    C-x s 向你詢問每個(gè)改動(dòng)過但未存盤的緩沖,對(duì)每個(gè)這樣的緩沖都詢問是否保存。


    >> 插入一行文本,然后按C-x s。 將會(huì)問你是否保存叫TUTORIAL的緩沖。 輸入“y”來(lái)回答是。





    * 擴(kuò)展命令集(EXTENDING THE COMMAND SET)
    -----------------------------------------------------------------------



    有太多的Emacs命令,大大超過了Contorl和meta加上字符所能表示的數(shù)量。Emacs用X(擴(kuò)展 eXtand)命令來(lái)解決這個(gè)問題。有兩種風(fēng)格:


    C-x 字符擴(kuò)展,后跟一個(gè)字符。
    M-x 名字命令擴(kuò)展,后跟一個(gè)長(zhǎng)名字。


    這些命令通常有用,但不如你已經(jīng)學(xué)過的那些命令使用的頻繁。你已經(jīng)見過了它們中的兩個(gè):文件命令C-x C-f 用于查找和C-x C-s用于保存。


    另一個(gè)例子是結(jié)束Emacs的命令C-x C-c(不必?fù)?dān)心你所作的改動(dòng)會(huì)丟失,在退出Emacs 之前,C-x C-c會(huì)提示你保存每一個(gè)改動(dòng)過的文件)。


    C-z命令用于*臨時(shí)*退出Emacs,所以你能回到原來(lái)運(yùn)行的Emacs里。在允許這樣做的系統(tǒng)上,C-z把Emacs“掛起”;就是說(shuō)回到外殼(shell)下,但并不破壞運(yùn)行的Emacs。在大多數(shù)外殼上,你能用‘fg'命令或‘%emacs'來(lái)繼續(xù)Emacs。


    在不支持掛起的系統(tǒng)上,C-z建立一個(gè)子外殼(subshell)運(yùn)行于Emacs下以使你能運(yùn)行其他程序然后回到Emacs;這并不是真正的“退出”Emacs。在這種情況下,通常從子外殼回到Emacs的外殼命令是‘exit'。 有很多C-x 命令,這是已學(xué)過的一個(gè)列表:


    C-x C-f 查找文件
    C-x C-s 保存文件
    C-x C-b 緩沖列表
    C-x C-c 退出Emacs


    C-x u 撤銷操作


    被稱作擴(kuò)展命令的命令的使用頻率都不太高。或者是只在某些模式下使用。一個(gè)例子是替換字符串的命令,它在全文里把字符串替換為其他的。當(dāng)你鍵入M-x, Emacs會(huì)在屏幕的底部提示你輸入命令;在這種情況下,是“replace-string”。比如輸入“repl s ”, Emacs會(huì)把命令補(bǔ)全。用 來(lái)結(jié)束命令。


    替換字符串命令要求兩個(gè)參數(shù)--要被替換的字符串和用來(lái)替換的字符串。你必須用 來(lái)結(jié)束兩個(gè)參數(shù)。


    >> 把光標(biāo)移上兩行,然后輸入M-x repl s changed altered 。 注意現(xiàn)在這一行改變了:你把光標(biāo)初始位置后的所有單詞c-h-a-n-g-e-d替換為了 “altered”





    * 自動(dòng)保存(AUTO SAVE)
    ------------------------------------



    當(dāng)你改動(dòng)了一個(gè)文件還未存盤的話,所作的改動(dòng)也許會(huì)由于系統(tǒng)崩潰而丟失。為防止這種情況發(fā)生,Emacs在編輯時(shí)為每個(gè)文件提供了“自動(dòng)保存(auto save)”。自動(dòng)保存的文件的文件名前后都有一個(gè)#號(hào);例如,如果你編輯的文件名叫“hello.c”,自動(dòng)保存的文件的文件名就叫“#hello.c#”。當(dāng)你正常的保存了文件后,Emacs會(huì)刪除這個(gè)自動(dòng)保存的文件。如果遇到死機(jī),你能打開那個(gè)文件后按M-x recover file 來(lái)恢復(fù)你的編輯,(是你編輯的文件而不是自動(dòng)保存的文件)。當(dāng)提示確認(rèn)時(shí),輸入yes 來(lái)繼續(xù)恢復(fù)自動(dòng)保存的數(shù)據(jù)




    * 回顯區(qū)域(ECHO AREA)
    ------------------------------------



    如果Emacs發(fā)現(xiàn)你輸入命令的速度很慢的話它會(huì)在屏幕底部為你顯示出來(lái),這個(gè)區(qū)域叫 “回顯區(qū)域”。




    * 模式行(MODE LINE)
    ---------------------------------



    回顯區(qū)域上面的一行稱為“模式行(mode line)”。模式行顯示與下面類似的東西:


    --**-Emacs: TUTORIAL (Fundamental)--L670--58%----------------


    這一行給出了有關(guān)你在編輯的文件和Emacs狀態(tài)的有用信息。


    你已經(jīng)知道了文件名意味著什么。--NN%--指出你現(xiàn)在在文本里的位置;它意味著上面還有NN%的文本。如果是在文件的開頭,會(huì)用--Top-- 來(lái)代替--0%--。如果是在行的末尾,會(huì)顯示--Bot--。如果你正在看的文本內(nèi)容很少,可以全部顯示在屏幕上,模式行會(huì)說(shuō) --All--。


    前面的星號(hào)表示你已經(jīng)改動(dòng)過文本了。一旦你保存了文件或打開了一個(gè)新文件,模式行的這部分就不是星號(hào)而是破折號(hào)了。


    模式行上括號(hào)里的部分是現(xiàn)在的編輯模式。現(xiàn)在是缺省的基本(Fundamental)模式。它是 “主模式(major mode)”的一種。


    Emacs有很多不同的主模式。有些意味著不同的語(yǔ)言或不同的文本。如Lisp模式(Lisp mode),文本模式(text mode)等等。在任何時(shí)候有且只能有一種主模式被激活。并且它的名字會(huì)出現(xiàn)在現(xiàn)在顯示“Fundamental”的位置上。


    每一個(gè)主模式都有些自己的命令。就象不同的編程語(yǔ)言的注釋看起來(lái)不同一樣。每種主模式插入的注釋也不同。可以用擴(kuò)展命令切換進(jìn)某種主模式。例如,M-x fundamental-mode 是切換進(jìn)基本模式。


    >> 輸入 M-x text-mode



    不必?fù)?dān)心,沒有命令會(huì)給Emacs帶來(lái)很大改變。但是你可以看到現(xiàn)在M-f和M-b把省略號(hào)當(dāng)作單詞的一部分。而先前,在基本模式里,M-f 和M-b把省略號(hào)當(dāng)成當(dāng)成分隔符。


    主模式通常作諸如此類微小的變化:大多數(shù)命令在每個(gè)主模式里作“同樣的工作”,但又有些微小的不同。


    要觀看關(guān)于你現(xiàn)在的主模式的文檔,按C-h m。


    >> 鍵入C-u C-v一次和多次使本行接近屏幕的頂端。
    >> 輸入C-h m ,看看文本模式和基本模式有些什么不同。
    >> 按C-x 1 從屏幕上關(guān)掉這個(gè)文檔。



    主模式之所以叫做主模式是因?yàn)橐泊嬖趶哪J剑瑥哪J脚c主模式完全不同。每個(gè)從模式可以自己打開或者關(guān)閉,獨(dú)立于所有其他從模式,也獨(dú)立于你的主模式。所以你可以不用從模式或者同時(shí)用很多種從模式。


    有一種從模式很有用,特別是在編輯英文文本時(shí)。它是自動(dòng)填充模式(auto fill mode)。當(dāng)這個(gè)模式打開的時(shí)候,當(dāng)輸入的文本過寬的時(shí)候就會(huì)自動(dòng)折行。


    你能用M-x auto-fill-mode 來(lái)打開自動(dòng)填充模式。如果此模式已經(jīng)打開M-x auto- fill-mode 則把它關(guān)閉。我們把這叫做切換開關(guān)。


    >> 輸入M-x auto-fill-mode 。然后插入一些“asdf”直到看到這行被分為兩行。你必須在中間放一些空格,只有到空格的時(shí)候才會(huì)換行。



    通常邊界寬度是70,但你能用帶數(shù)字參數(shù)的C-x f 命令來(lái)改變它。


    >> 鍵入帶參數(shù)20的C-x。(C-u 20 C-x f) 然后輸入一些文本看現(xiàn)在每行只有20個(gè)字符了。然后用C-x f把它改回70。



    如果你在一個(gè)段落的中間產(chǎn)生了改變,自動(dòng)填充模式將不會(huì)重新填充。要想重新填充段落,當(dāng)光標(biāo)在段落里的時(shí)候按M-q。


    >> 把光標(biāo)移到上一段按 M-q。

    * 搜索(SEARCHING)
    -----------------------------

    Emacs 能朝前和朝后搜索字符串(指相鄰的一些字符或單詞)。搜索是一個(gè)移動(dòng)光標(biāo)的操作,它把光標(biāo)移動(dòng)到字符串出現(xiàn)的下一個(gè)地方。


    Emacs 的搜索命令和其他大多數(shù)編輯器不同,它是“增量式(incremental)”的,這意味著搜索在你鍵入字符串時(shí)就開始了。


    開始一個(gè)向前搜索的命令是C-s,C-r是往回搜索。但等等,先別忙。


    當(dāng)你輸入C-s是你將注意到在回顯區(qū)域會(huì)出現(xiàn)一個(gè)字符串“I-search”。這告訴你Emacs開始了一個(gè)增量搜索,并在等待你輸入要搜索的東西。 結(jié)束查詢。


    >> 現(xiàn)在鍵入C-s開始一個(gè)搜索。慢慢的輸入單詞‘cousor',在輸入每一個(gè)字母的時(shí)候停頓一 下,注意看光標(biāo)發(fā)生了什么。
    >> 再輸入一次C-s,來(lái)搜索“cursor”出現(xiàn)的下一個(gè)地方。
    >> 現(xiàn)在輸入 四次看看光標(biāo)移到了哪里。
    >> 輸入 結(jié)束搜索。


    看到發(fā)生什么了嗎?在Emacs的增量搜索里,你輸入多少字符串它就試著搜索這些字符出現(xiàn)的地方。到字符串出現(xiàn)的下一個(gè)地方,只須再按一次C-s。要搜索的字符串不存在的話,Emacs 會(huì)發(fā)出蜂鳴并告訴你當(dāng)前的搜索“失敗(failing)”,按 C-g 也是終止搜索。


    注意:在某些系統(tǒng)上,輸入 C-s 會(huì)把屏幕凍結(jié)住使你從Emacs看不到更多的輸出。這 表示這個(gè)操作系統(tǒng)的“特性”叫做“控制流程”,它攔截了C-s不讓它到達(dá)Emacs那里。 要使屏幕解凍,輸入C-q,然后看Emacs手冊(cè)里的“Spontaneous Entry to Incremental Search”一節(jié),按上面的建議來(lái)對(duì)付這種“特性”。
    如果你在搜索的過程里按了 ,你將注意到要搜索的字符串的最后一個(gè)字符會(huì)被刪除并且光標(biāo)會(huì)回到上一個(gè)被搜索到的地方。比如,假設(shè)你鍵入了“c”,將會(huì)搜索“c”第一次出現(xiàn)的地方。然后如果你鍵入“u”,光標(biāo)將移到“ cu”第一次出現(xiàn)的地方。現(xiàn)在鍵入 。這將從搜索的字符串里把“u”刪掉,這時(shí)光標(biāo)回到“c”第一次出現(xiàn)的地方。


    如果你在搜索時(shí)按了Control或meta鍵加字符(少數(shù)幾個(gè)少數(shù)命令例外,如C-s和C-r),搜索將被終止。


    C-s向當(dāng)前光標(biāo)的后面搜索字符串出現(xiàn)的地方。如果你需要搜索前面文本里的東西,用C-r來(lái)代替。我們所介紹的C-s的每個(gè)特性C-r也支持,除了方向相反。


    * 多窗口(MULTIPLE WINDOWS)
    ------------------------------------------------


    Emacs有一個(gè)非常好的特性是能同時(shí)在屏幕上顯示不止一個(gè)的窗口。


    >> 把光標(biāo)移到本行上按C-u 0 C-l。


    >> 現(xiàn)在按C-x 2,它把屏幕分裂成兩個(gè)窗口,每個(gè)窗口都顯示本教程。光標(biāo)在上面的窗口里。


    >> 按C-M-v 滾動(dòng)到下面的窗口里。(如果你沒有一個(gè)真正的Meta鍵,那么按ESC C-v)

    >> 按 C-x o (“o” 指 “其他(other)”) 把光標(biāo)移到到下面的窗口里。
    >> 用 C-v 和 M-v 滾動(dòng)下面窗口里的文本。 在上面的窗口里看本教程。


    >> 再次按 C-x o 使光標(biāo)回到上面的窗口里。 現(xiàn)在光標(biāo)象以前一樣在上面的窗口里了。



    你能一直用C-x o在窗口間切換。每個(gè)窗口都有它自己的光標(biāo)位置,但僅有一個(gè)窗口能顯示活動(dòng)的光標(biāo)。所有的編輯命令都發(fā)生在那個(gè)顯示光標(biāo)的窗口上。我們把這個(gè)窗口叫做“選中窗口( selected window)”。


    當(dāng)你在一個(gè)窗口里編輯文本,而用另一個(gè)窗口作參考時(shí)命令C-M-v非常有用。你總是能把光標(biāo)留在所編輯的地方,而用C-M-v來(lái)翻閱另一窗口。


    C-M-v 是 CONTROL-META 加字符的一個(gè)例子。 如果你有一個(gè)真正的META 鍵,你能同時(shí)按住 CTRL 和 META 再按“v”來(lái)輸入C-M-v。CTRL 和 META 誰(shuí)先按誰(shuí)后按無(wú)所謂。


    如果你沒有一個(gè)真正的META 鍵, 你可以用 ESC 來(lái)代替。這時(shí)候次序是有關(guān)系的: 你必須讓 ESC 跟在 CTRL-v后面; 否則 CTRL-ESC v 將不工作。 這是因?yàn)?ESC 是一個(gè)有意義的字符而不是一個(gè)修飾字符。


    >> 輸入 C-x 1 (在上面的窗口里) 以消除下面的窗口。



    (如果你在下面的窗口里鍵入C-x 1,將會(huì)把上面的窗口去掉。可以把這個(gè)命令看作是“只保留你現(xiàn)在在的那個(gè)窗口。)


    你不必一定要在兩個(gè)窗口里顯示同樣的緩沖。如果你在一個(gè)窗口里鍵入C-x C-f查找文件,另一個(gè)窗口的內(nèi)容不會(huì)改變。你能獨(dú)立的在每個(gè)窗口里查找文件。


    這是讓兩個(gè)窗口顯示不同內(nèi)容的另一種方法:


    >> 在你輸入的文件名后再輸入C-x 4 C-f,然后用 結(jié)束。會(huì)看到指定的文件出現(xiàn)在下面 的窗口里。光標(biāo)也在那里面。


    >> 鍵入C-x o 回到上面的窗口,然后輸入C-x 1刪掉下面的窗口。



    * 遞歸編輯層(RECURSIVE EDITING LEVELS)
    ----------------------------------------------------------------

    有時(shí)候你會(huì)進(jìn)入“遞歸編輯層(recursive editing level)”。由模式行上的方括號(hào)指示。它在主模式名的括號(hào)外面。例如你也許會(huì)看到(Fundamental)變成了[(Fundamental)]。


    要退出遞歸編輯層,按ESC ESC ESC。這是一個(gè)通用的退出命令,你也可以用它除去額外的窗口,或者退出微型緩沖。


    >> 輸入 M-x 進(jìn)入一個(gè)微型緩沖; 然后用 ESC ESC ESC 離開。

    你不能用C-g來(lái)退出遞歸編輯層。這是因?yàn)镃-g只能取消在遞歸編輯層里面的命令。


    * 獲取更多的幫助(GETTING MORE HELP)
    --------------------------------------------------------------

    在本教程里我們?cè)囍鵀槟汩_始使用Emacs提供了足夠多的信息。但是有關(guān)Emacs的信息實(shí)在是太多以至于不能全部都在這里說(shuō)明。但是,你還應(yīng)該學(xué)習(xí)更多有關(guān)Emacs的東西,因?yàn)樗硗膺€有很多有用的特性。Emacs提供了很多讀取有關(guān)命令的文檔的命令。這些“幫助”命令都以 Control-h開頭,叫做“幫助字符”。


    為了使用幫助特性,輸入字符C-h,然后再輸入一個(gè)字符來(lái)說(shuō)明你需要哪種幫助。如果你真的不知道,輸入C-h ? 然后 Emacs會(huì)告訴你它能給你什么樣的幫助。如果你輸入了C-h 又覺得不需要任何幫助,你可以用C-g來(lái)取消它。


    (在有的地方,C-h的作用被改變了。如果按C-h在屏幕的底部沒有出現(xiàn)有關(guān)幫助的信息的話,試試用F1和M-x help RET來(lái)代替。)


    最基本的幫助特性是C-h c。輸入C-h,然后是字符 c,然后輸入一個(gè)命令字符和序列;然后 Emacs 會(huì)顯示這個(gè)命令的簡(jiǎn)潔的描述。


    >> 輸入 C-h c Control-p.

    顯示的消息看起來(lái)會(huì)象這樣:


    C-p runs the command previous-line


    這告訴你“功能的名字”。功能的名字主要用于對(duì)Emacs的功能擴(kuò)充和定制。但因?yàn)楣δ艿拿种赋隽嗣畹挠猛荆宰詈貌灰膭?dòng)它。


    C-h c后面可跟多字符命令,比如 C-x C-s 和 (如果你沒有 META 或者 EDIT 或者 ALT 鍵) v 。


    要獲取有關(guān)命令的更多信息,用C-h k 代替 C-h c。


    >> 輸入 C-h k Control-p.



    這將在一個(gè)Emacs窗口里顯示命令的文檔。當(dāng)你讀完后可以用C-x 1除去幫助文本。如果不想馬上離開,你可以一邊編輯一邊參考幫助文本,然后再按C-x 1。


    這是一些有用的 C-h 選項(xiàng):


    C-h f 描述一個(gè)功能,在你輸入了這個(gè)功能的名字后。

    >> 輸入 C-h f previous-line 。 將打印出C-p命令所實(shí)現(xiàn)的所有功能。



    C-h a 命令查找。輸入一個(gè)關(guān)鍵字,Emacs將列出所有名字里有這個(gè)關(guān)鍵字的命令。 包括所有以Meta-x開始的命令。對(duì)有些命令,C-h a 也將列出實(shí)現(xiàn)同一功能的 幾個(gè)命令序列。


    >> 輸入 C-h a file .




    這將在窗口里顯示所有名字里有單詞“file”的M-x命令。


    >> 輸入 C-M-v 來(lái)滾動(dòng)幫助窗口,做上幾次。


    >> 輸入 C-x 1 來(lái)刪除幫助窗口。





    * 總結(jié)(CONCLUSION)
    --------------------------------

    記住,永遠(yuǎn)都用C-x C-c來(lái)退出Emacs。用C-z來(lái)退到一個(gè)臨時(shí)的外殼里,以使你過后還能回到 Emacs。
    本教程盡量讓所有的初學(xué)者都能理解,如果你發(fā)現(xiàn)有些東西不清楚的話,別責(zé)備你自己-抱怨吧!

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲韩国—中文字幕| 亚洲一级Av无码毛片久久精品 | 三级黄色在线免费观看| 免费人成视频在线观看不卡| 亚洲一线产品二线产品| 中文字幕av无码无卡免费| 亚洲日韩久久综合中文字幕| 免费电影在线观看网站| 日韩亚洲产在线观看| 成**人免费一级毛片| 黄色a级免费网站| 亚洲无人区一区二区三区| 全免费a级毛片免费看| 亚洲视频中文字幕在线| 野花高清在线观看免费3中文| 亚洲区日韩精品中文字幕| 免费a级毛片大学生免费观看 | 国精产品一区一区三区免费视频 | 日韩精品极品视频在线观看免费| 亚洲国产高清视频| 久九九精品免费视频| 亚洲国产成人久久一区二区三区| 亚洲AⅤ视频一区二区三区| 中文字幕乱码免费看电影| 久久狠狠高潮亚洲精品| 成年女人免费视频播放77777| 国产尤物在线视精品在亚洲| 亚洲综合日韩久久成人AV| jjizz全部免费看片| 国产AV无码专区亚洲AV麻豆丫| 中文字幕日韩亚洲| 最近2018中文字幕免费视频| 亚洲av乱码一区二区三区按摩 | 国产亚洲精品精品国产亚洲综合| 免费视频精品一区二区三区 | 国产亚洲色婷婷久久99精品91| 中文字幕亚洲免费无线观看日本| 亚洲爆乳精品无码一区二区| 亚洲欧洲日产国码av系列天堂| 91免费资源网站入口| aa级女人大片喷水视频免费|