轉(zhuǎn)自:http://www.sudu.cn/info/html/edu/20060101/293981.h tml
一直都用vi的,那天忽然想著要用emacs,沒想到進(jìn)去不會用,退不出來了。還是看看教程先~[轉(zhuǎn)自Linux寶庫http://www.linuxmine.com]
Emacs 的命令通常包括控制鍵(就是上面標(biāo)有 Ctrl或Ctl的那個)或 是META鍵(上面標(biāo)有EDIT或ALT)。為了方便起見我們將用下面的縮寫來 代替這些鍵的全稱:C- 意思是當(dāng)敲入字符時同時按住控制鍵,因此,C-f表 示:按住控制鍵并且按 f 。M- 表示當(dāng)鍵入時按住META或ALT或EDIT鍵。如果沒有META 或ALT或EDIT鍵,則用ESC鍵代替。表示ESC鍵
注意:退出Emacs,按C-x C-c(兩個字符)。在文本左邊區(qū)域的">>"符號 表示讓你試著使用一個命令。比如:
>> 目前鍵入C-v(觀看下一屏)移動到下一屏。(就象前面說的,按v的同時 也按住控制鍵)。從目前開始,每當(dāng)你讀完一屏的時候都能用他來翻屏。
注意在翻屏后會保留上屏的最后一行;這是為你繼續(xù)閱讀文本提供某些連 貫性。
你所需要知道的第一件事是怎么把光標(biāo)從一個地方移動到另一個地方。你 已知道了如何向前翻一屏--用 C-v。要向后翻一屏,鍵入M-v。
>> 試著鍵入 M-v 和 C-v 幾次。
* 摘要(SUMMARY)
---------------------------
下面幾個命令對整屏觀看時有用:
C-v 向前翻一整屏。
M-v 向后翻一整屏。
C-l 清除屏幕并重新顯示所有的文本,然后把光標(biāo)移動到屏幕的中央。 (注意是Control-L,而不是 Control-1)。
>> 尋找光標(biāo),并且注意他在文本里的位置。然后鍵入C-l。再尋找光標(biāo)你會 注意到光標(biāo)目前會出目前同樣的文本附近。
* 基本光標(biāo)控制(BASIC CURSOR CONTROL)
-------------------------------------------------- ---------------
整屏整屏的移動是非常有用的,可是怎么把光標(biāo)移動到屏幕上文本里的一個指定 的地方呢?
有好幾個方法能實現(xiàn)。最基本的方法是用命令 C-p,C-b,C-f,和C-n。這些 命令每個都使光標(biāo)在屏幕上往特定的方向移動一行或一列。下面是個圖表 顯示了這四個命令和他們所移動的方向:
上一行,C-p
:
:
向前,C-b ...... 當(dāng)前光標(biāo)的位置 ...... 向后,C-f
:
:
下一行,C-n
>> 用C-n或C-p把光標(biāo)移動到圖表中間。然后鍵入C-l會看到整個圖表出目前屏 幕的中心。你也許會發(fā)現(xiàn)這些字母非常容易記?。篜 代表上面的(previous),N 代表下一個 (next),B 代表向前(backward),F(xiàn) 代表向后(forward)。這些是基本的光標(biāo)位 置命令,你將經(jīng)常會用到他們。所以目前學(xué)習(xí)他們非常有好處〕
>> 用幾次 C-n 把光標(biāo)向下移動到這一行。
>> 用 C-f 把光標(biāo)移動到行里,再用C-p把光標(biāo)上移。觀察當(dāng)光標(biāo)在行的中間時 C-p做了些什么。
每一個文本行都以一個換行符結(jié)尾,他用來當(dāng)作行和行之間的分格。你的文件的 最后一行的尾部應(yīng)該有一個換行符(但Emacs并不需求一定要有一個)。
>> 試著在行的開頭使用C-b。他將會把光標(biāo)移到上一行的末尾。這是因為他向后 移的時候穿過了換行符。
C-f 也能象 C-b相同穿過換行符。
>> 使用幾次C-b,使你能知道光標(biāo)在哪。然后用C-f移動到行的末尾。然后再用 一次C-f,使光標(biāo)移動到下一行。
當(dāng)你移動超過屏幕的頂部或底部,光標(biāo)回移動到下一屏的中間,這叫做"滾屏 (scrolling)"。他使得Emacs滾屏移動到文本上指定的部位而不是移出屏幕。
>> 試著用C-n把光標(biāo)移過屏幕的底部,看看回發(fā)生什么。
如果覺得一個一個字符的移動太緩慢,能一個單詞一個單詞的移動。M-f(Meta-f) 向前移一個單詞,M-b向后移一個單詞。
>> 鍵入幾個M-f和M-b。
當(dāng)光標(biāo)在一個單詞的中間,M-f移動到單詞的末尾。當(dāng)光標(biāo)在兩個單詞間的空白部分 M-f移動到后一個單詞的末尾。M-b和M-f相同,只是移動的方向相反。
>> 鍵入M-f和M-b幾次,中間穿插一些C-f和C-b以使你能觀察到M-f和M-b在單詞中和 單詞間的不同行為。
注意比較C-f,C-b和M-f,M-b。通常情況下Meta鍵用于有關(guān)語言單位(詞,句,段落) 的操作;而控制鍵用于編輯時的基本單位(字符,行等)。
這是句和行的比較:C-a和C-e移動到一行的開頭和末尾,M-a和M-e移動到一個句子 的開頭和末尾。
>> 鍵入一對C-a,再鍵入一對C-e。 鍵入一對M-a,再鍵入一對M-e。
你會看到重復(fù)鍵入的C-a什么也不做,而重復(fù)鍵入的M-a則會移動一個以上的句子。光標(biāo)在文本中的位置也叫"點(point)"。在段落里,光標(biāo)標(biāo)示出了點在屏幕上文本 里的位置。
下面是簡單的光標(biāo)移動命令的總結(jié),包括單詞和句子的移動命令:
C-f 向前移動一個字符。
C-b 向后移動一個字符。
M-f 向前移動一個單詞。
M-b 向后移動一個單詞。
C-n 移動到下一行。
C-p 移動到上一行。
C-a 移動到行首。
C-e 移動到行尾。
M-a 向前移動到句子的開頭。
M-e 向后移動到句子的末尾。
>> 試著對每一個命令都實踐幾次,他們都是經(jīng)常要用到的命令。
另外兩個重要的光標(biāo)移動命令是M- (Meta大于)他移動光標(biāo)到整個文本的末尾。在多數(shù)終端上,"> 目前就試試M-,移動到本教程的末尾,然后再用M-v移回這里。
你也能用方向鍵來移動光標(biāo),如果你的終端有方向鍵的話。我們建議學(xué)習(xí)C-b, C-f,C-n和C-p有三個原因。第一,他們能在所有類型的終端上工作。第二,你獲得 了使用Emacs的鍛煉,你將會發(fā)現(xiàn)輸入這些CTRL加字符比按方向鍵要快(因為你不必 把你的手從鍵盤上移開)。第三,一旦你養(yǎng)成了使用這些CTRL加字符的命令的習(xí)慣, 你就能相同容易的學(xué)習(xí)其他高級的光標(biāo)移動命令。
大多數(shù)Emacs命令接收一個數(shù)字參數(shù);對大多數(shù)命令來說,這表示命令重復(fù)的次數(shù)。 輸入重復(fù)命令次數(shù)的方法是在輸入命令之前按C-u和數(shù)字。如果你有META(或EDIT或 ALT)鍵,則有另一種方法輸入數(shù)字參數(shù):在按住META鍵的時候輸入數(shù)字,我們建議 學(xué)習(xí)C-u方法,因為他能在所有終端上工作。
例如,C-u 8 C-f 向前移動8個字符。
>> 試著使用帶數(shù)字參數(shù)的C-n或C-p,只用一個命令就把光標(biāo)移動到和本行相鄰的 行上。
絕大多數(shù)命令把數(shù)字參數(shù)當(dāng)作重復(fù)次數(shù),但也有幾個例外。C-v和M-v就是。當(dāng)給出 一個參數(shù),只是上滾或下滾數(shù)字指定的行數(shù)而不是屏數(shù)。比如,C-u 4 C-v滾動4行 屏幕。
>> 目前試試 C-u 8 C-v。
這將使屏幕滾動8行,如果你想往回滾動的話,鍵入一個帶參數(shù)的M-v。
如果你正在使用X窗口,在Emacs窗口的左手邊有一個叫做滾動條的矩形區(qū)域。你能 通過用鼠標(biāo)點擊滾動條來滾動文本。
>> 試著在滾動條頂部的高亮區(qū)域點擊中鍵。這將使文本滾動,滾動的位置取決于 你點擊的長短。
>> 試著按住鼠標(biāo)中鍵上移或下移鼠標(biāo),你將看到當(dāng)你移動鼠標(biāo)時文本會上下滾動。
* 當(dāng)EMACS掛起時(WHEN EMACS IS HUNG)
-------------------------------------------------- ----------------
當(dāng)Emacs停止響應(yīng)你的命令時,你能用C-g把他安全的停止。當(dāng)一個命令執(zhí)行了太長的 時間時你能用C-g把他終止。你也能用C-g來取消數(shù)字參數(shù)和輸入后又不想執(zhí)行的命令。
>> 鍵入C-u 100 產(chǎn)生一個值為100的數(shù)字參數(shù),然后按C-g。再按C-f。他只會移動 一個字符,因為你用C-g取消了參數(shù)。如果錯誤的輸入了一個,你能用C-g消掉他。
* 禁止命令(DISABLED COMMAND)
-------------------------------------------------- --
一些Emacs命令是"禁止"的,所以新手不會因偶然而執(zhí)行他。
如果你鍵入了一個禁止命令,Emacs會顯示一條消息說明這條命令是干什么的,并且問你是否需要執(zhí)行他。
如果你真的想要執(zhí)行,敲空格鍵繼續(xù)。通常,如果你不想執(zhí)行禁止命令,用"n"來回答。
>> 輸入一條禁止命令),然后用n來回答。
* 窗口(WINDOWS)
-----------------------------
Emacs 能有好幾個窗口,每一個顯示自己的文本。我們將在后面解釋怎樣對多窗口 操作。目前我們要解釋怎樣去除多余的窗口屏回到基本的單窗口編輯狀態(tài)。 這是個例子:
C-x 1 一個窗口(也就是除去其他所有的窗口)。
因為Control-x跟了數(shù)字1。C-x 1使包含光標(biāo)的窗口占滿整個屏幕,屏刪除其他所有 窗口。
>> 把光標(biāo)移動本行并輸入 C-u 0 C-l。
>> 鍵入Control-h k Control-f。 看這個窗口怎么縮小,并在按Control-f的時候出現(xiàn)了一個新的文件窗口。
>> 鍵入C-x 1 并且看到那個文件窗口消失了。
* 插入和刪除(INSERTING AND DELETING)
-------------------------------------------------- -------------
如果你要插入文本,只須輸入文本。輸入的字符你能見到,比如A,7,*等等。Emacs 會即時把他們插入。鍵入(回車鍵)插入一個換行符。你能用刪除你輸入的最后一個字符。就是鍵盤上標(biāo)著"Del"的鍵。在某些情況下,"Backspace"鍵作用和相同,但不總是這樣!通常,即時刪除光標(biāo)前面的那個字符。
>> 輸入幾個字符,然后用刪除他們。不必?fù)?dān)心這個文件回被改動;你不會 替換主教程。這只是你的個人拷貝。
當(dāng)一行文本太長而超過屏幕寬度時,這一行會在屏幕的下一行被"繼續(xù)"。文本的右 邊會有一個反斜杠"\"表示他被繼續(xù)。
>> 插入文本直到最右邊,然后再插入。你將看到一個繼續(xù)了的行。
>> 使用刪除文本直到行的長度在屏幕的寬度以內(nèi)。繼續(xù)的行將會消失。
你能像刪除其他所有字符相同刪除換行符。刪除兩個行間的換行符會使他們合并為一 行。如果這一行非常長屏幕顯示不下的話,將會用一個繼續(xù)的行來表示。
>> 把光標(biāo)移動到一行的開頭按這將使本行和上一行合為一行。
>> 按重新插入你刪除的換行符。
記住大多數(shù)的Emacs命令能接收一個重復(fù)次數(shù)。這包括文本字符,把一個文本字符重復(fù)的插入幾次。
>> 鍵入這個-- C-u 8 * 來插入 ********
你目前已學(xué)習(xí)了Emacs的大多數(shù)輸入和排錯的方法。你也能相同的刪除單詞或行。這是刪除操作的摘要:
刪除光標(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(不是個控制字符, 但不用擔(dān)心)。C-k和M-k就象C-e,M-e。
當(dāng)你一次除去不止一個字符時,Emacs將保存著這些文本,所以你能恢復(fù)他們。 恢復(fù)那些被除去的文本稱作"拉(yanking)"。你能在除去文本的同一地方拉回他們, 或是在文本的其他地方。你能對文本拉上幾次以產(chǎn)生他們的多個拷貝,拉的命令是 C-y。
注意"除去(killing)"和"刪除(Deleting)"之間的差別,被除去的東西能被拉回來,而被刪除的不能。通常除去能除去非常多的文本屏保存,而刪除只能除去一個字 符,或是空行或空格,并且不保存。
>> 把光標(biāo)移到一個空行的開頭,鍵入C-k除去這一行。
>> 按第二次C-k,你將看到剩下的空行也被除去了。
注意單個的C-k除去行的內(nèi)容,第二個C-k除去行本身,并且使后面的所有行上移。 特別要注意數(shù)字參數(shù):他除去非常多行和他們的內(nèi)容,這不僅僅是重復(fù)。C-u 2 C-k 除去兩行和他們剩下的空行;而按兩次C-k并不會這樣做。要在當(dāng)前光標(biāo)處找回上次被除去的文本;按C-y
>> 試一試,用C-y把文本拉回來。
把C-y考慮為你把某人從你這里拿走的東西再拿回來。注意你如果在一行上按了幾次 C-y,所有被除去的文本是存在一起的,所以按一次C-y將拉回全部的行。
>> 目前就試一下,按幾次C-k。 目前找回被除去的文本;
>> 按C-y。然后把光標(biāo)下移幾行再按一次C-y,你目前會看到怎樣拷貝這些文本。
當(dāng)你要拉回一些被除去的文本該怎樣做呢?C-y只能拉回最近被除去的文本。但以前 的文本并沒有消失。你能用M-y來恢復(fù)他。當(dāng)你用C-y拉回最近被除去的文本后,換成 M-y能拉回以前被除去的文本。鍵入一次又一次的M-y能拉回更早以前被除去的文本。
當(dāng)你找到要尋找的文本,不必做所有事來保持他,只須離開拉文本的地方繼續(xù)你 的編輯。
如果你M-y了足夠多的次數(shù),你會回到開始點(最近被除去的)。
>> 除掉一行,移開,再除掉另一行。 然后用C-y拉回第二行。 然后換成M-y拉回被除掉的第一行。 再按一次M-y看看得到了什么。繼續(xù)按直到拉回被除去的第二行;然后再做幾次。 如果原意的話,你能給M-y加正的或負(fù)的數(shù)字參數(shù)。
* 撤銷(UNDO)
--------------------
如果你對文本作了一些改動,然后又發(fā)現(xiàn)這樣做是錯誤的,你能用撤銷命令,C-x u 撤銷這些改動。
通常,一次C-x u撤銷一個改動;如果你在一行上重復(fù)幾次C-x u,就會重復(fù)幾次撤銷 操作。但有兩個例外:不改動文本的操作(包括光標(biāo)移動和滾屏命令)不算在內(nèi);只能處理20 次。
>> 用C-k除去這一行,然后按C-x u 他將重現(xiàn)出來。
C-_是個可選擇的撤銷命令;他所作的工作和C-x u 完全相同,只是更容易輸入。 C-_的缺點是有些鍵盤上沒有他,這就是為什么還提供C-x u的原因。在某些終端上 你能按住CTRL的時候再敲/來輸入C-_。C-_或C-x u把數(shù)參數(shù)字當(dāng)作重復(fù)次數(shù)。
* 文件(FILES)
-------------------
為了永久保存你編輯的文本,你必須把他放到一個文件里。否則當(dāng)你退出Emacs的時候他就會消失。你通過"查找(finding)"文件,把你編輯的內(nèi)容放到文件里。(也稱為 "訪問(visiting)文件")。(譯注:為了保持和原文的一致性,把find譯為"查找",不過這里和后面出現(xiàn)的 "查找文件"指的都是打開文件的意思。)
查找(finding)一個文件意味著你在Emacs里看文件的內(nèi)容,在多數(shù)情況下,也就是你 在編輯他。不過,你用Emacs對他作的改動并不是永久行的,除非你"保存(saving)" 他。所以你能避免把一個改了一半的文件留在系統(tǒng)上。甚至你保存了文件,Emacs也 會把原始文件換個名字保留下來,以防過后你發(fā)現(xiàn)對文件的改動是錯誤的。
如果你觀察屏幕的你將看見一個開始和結(jié)尾都是破折號的行,并且以"--:**-- TUTORIAL"或之類的東西開始。屏幕的這部分通常顯示你正在訪問的文件的名字。 目前,一個叫做"TUTORAL"的文件,他是你的Emacs教程的個人拷貝。當(dāng)你用Emacs 查找一個文件,文件名會出目前同樣的位置。查找和保存文件命令不像前面學(xué)的那些命令。他們都以字符Control-x開始。以 Control-x起頭的是個完整的命令系列;他們中的許多都是對文件,緩沖,和相關(guān)的 東西進(jìn)行操作的。這些命令有兩個,三個或四個字符長。
關(guān)于查找文件命令的另一件事是你必須給出你需要的文件的文件名。我們說這個命令 "從終端讀取一個參數(shù)"。(在這種情況下,參數(shù)是文件的名字);當(dāng)你鍵入命令C-x C-f后,Emacs會提示你輸入文件的名字。你輸入的文件名會出目前屏幕底部的行上。 這個底部的行稱為微型緩沖(minibuffer)用于這類較短的輸入。你能用Emacs本身的 編輯命令來編輯文件名。當(dāng)你正在輸入文件名(或其他所有微型緩沖區(qū)輸入),你能用命令C-g來取消。
>> 鍵入命令C-x C-f,然后輸入C-g。這將取消微型緩沖,也取消了C-x C-f命令所使 用的微型緩沖,所以你不查找所有文件。
當(dāng)你輸完文件名后用來結(jié)束。然后C-x C-f開始工作,并開始尋找你所選擇的文件。當(dāng)C-x C-f命令結(jié)束后微型緩沖區(qū)也消失了。過一小會兒文件的內(nèi)容就會顯示在屏幕上,然后你就能對他進(jìn)行編輯了。當(dāng)想永久保留
你的改動時用命令:
C-x C-s 保存文件(save the file)。
這個操作會把Emacs里的文本拷貝到文件里。在你第一次作的時候,Emacs把原始文 件改為一個新名字以使他不至于丟失。新名字是在原來名字的后面加一個"~"。保存結(jié)束后,Emacs打印出被寫的文件的文件名。你應(yīng)當(dāng)經(jīng)常的保存,萬一系統(tǒng)崩潰 的話你不至于丟失太多的工作。
>> 鍵入C-x C-s來保存你的教程的拷貝。屏幕的底部會打印出"Wrote.....TUTORIAL"。
注意:在某些系統(tǒng)上,輸入C-x C-s 會把屏幕凍結(jié)住使你從Emacs看不到更多的輸出。這表示這個操作系統(tǒng)的"特性"叫做"控制流程",他攔截了C-x不讓他到達(dá)Emacs那里。要使屏幕解凍,輸入C-q,然后看Emacs手冊里的"Spontaneous Entry to Incremental Search"一節(jié),按上面的建議來對付這種"特性"。
你能查找一個已存在的文件,來查看他或編輯他。你也能查找一個尚未存在的文件。
這是 Emacs:里創(chuàng)建文件的方法:查找文件,將會出現(xiàn)一個空白,然后插入文件的文本。當(dāng)你 "保存(saving)"的時候,Emacs將會用你插入的文本創(chuàng)建文件。從那時候起,你能認(rèn)為 你在編輯一個存在的文件了。
* (緩沖)BUFFERS
--------------------------
如果你用C-x C-f查找第二個文件,第一個文件仍然留在Emacs里。你能再用C-x C-f查找 一次來轉(zhuǎn)換回去。用這種方法你在Emacs里有非常多文件。
>> 輸入C-x C-f foo 來建立一個名為foo的文件。然后插入一些文本,編輯他,并 用C-x C-s來保存"foo"。 最后輸入C-x C-f TUTORIAL以回到本教程。
Emacs把每個文件的文本都保存在一個叫"緩沖(buffer)"的東西里。查找(打開)一個文件 就會在Emacs里產(chǎn)生一個新的緩沖。要看你當(dāng)前運行的Emacs里存在的緩沖列表,輸入:
C-x C-b 列出緩沖(list buffers)
>> 輸入 C-x C-b
觀察每個緩沖都有一個名字,他可能也有一個他所保存的文件的文件名。一些緩沖不對應(yīng) 文件。比如,叫"*Buffers List*"的緩沖沒有所有文件。這個緩沖只包含由C-x C-b產(chǎn)生的 緩沖列表。你在Emacs窗口里看到的所有文本都是某個緩沖的一部分。
>> 輸入 C-x 1 消除緩沖列表。
如果你對一個文件的文本作了改動,然后查找另一個文件,第一個文件并不保存。他的改動 保存在Emacs里,在那個文件的緩沖里。被建立或編輯的第二個文件的緩沖并不影響第一個 的。這一點非常有用,但這也意味著要有一個便捷的方法來保存第一個文件的緩沖。如果要用 C-x C-f轉(zhuǎn)換回去只是為了按C-x C-s保存他將會是一件令人討厭的事。所以我們用
C-x s 保存緩沖(save the buffer)
C-x s 向你詢問每個改動過但未存盤的緩沖,對每個這樣的緩沖都詢問是否保存。
>> 插入一行文本,然后按C-x s。 將會問你是否保存叫TUTORIAL的緩沖。 輸入"y"來回答是。
* 擴(kuò)展命令集(EXTENDING THE COMMAND SET)
-------------------------------------------------- ---------------------
有太多的Emacs命令,大大超過了Contorl和meta加上字符所能表示的數(shù)量。Emacs用X(擴(kuò)展 eXtand)命令來解決這個問題。有兩種風(fēng)格:
C-x 字符擴(kuò)展,后跟一個字符。
M-x 名字命令擴(kuò)展,后跟一個長名字。
這些命令通常有用,但不如你已學(xué)過的那些命令使用的頻繁。你已見過了他們中的兩個: 文件命令C-x C-f 用于查找和C-x C-s用于保存。
另一個例子是結(jié)束Emacs的命令C-x C-c(不必?fù)?dān)心你所作的改動會丟失,在退出Emacs 之前,C-x C-c會提示你保存每一個改動過的文件)。
C-z命令用于*臨時*退出Emacs,所以你能回到原來運行的Emacs里。在允許這樣做的 系統(tǒng)上,C-z把Emacs"掛起";就是說回到外殼(shell)下,但并不破壞運行的Emacs。 在大多數(shù)外殼上,你能用'fg'命令或'%emacs'來繼續(xù)Emacs。
在不支持掛起的系統(tǒng)上,C-z建立一個子外殼(subshell)運行于Emacs下以使你能運行 其他程式然后回到Emacs;這并不是真正的"退出"Emacs。在這種情況下,通常從 子外殼回到Emacs的外殼命令是'exit'。 有非常多C-x 命令,這是已學(xué)過的一個列表:
C-x C-f 查找文件
C-x C-s 保存文件
C-x C-b 緩沖列表
C-x C-c 退出Emacs
C-x u 撤銷操作
被稱作擴(kuò)展命令的命令的使用頻率都不太高。或是只在某些模式下使用。一個例子是替換 字符串的命令,他在全文里把字符串替換為其他的。當(dāng)你鍵入M-x, Emacs會在屏幕的底部 提示你輸入命令;在這種情況下,是"replace-string"。比如輸入"repls", Emacs會把命令補(bǔ)全。用來結(jié)束命令。替換字符串命令需求兩個參數(shù)--要被替換的字符串和用來替換的字符串。你必須用 來結(jié)束兩個參數(shù)。
>> 把光標(biāo)移上兩行,然后輸入M-x repl schangedaltered 。 注意目前這一行改動了:你把光標(biāo)初始位置后的所有單詞c-h-a-n-g-e-d替換為了 "altered"
* 自動保存(AUTO SAVE)
------------------------------------
當(dāng)你改動了一個文件還未存盤的話,所作的改動也許會由于系統(tǒng)崩潰而丟失。為防止 這種情況發(fā)生,Emacs在編輯時為每個文件提供了"自動保存(auto save)"。自動保存 的文件的文件名前后都有一個#號;例如,如果你編輯的文件名叫"hello.c",自動保 存的文件的文件名就叫"#hello.c#"。當(dāng)你正常的保存了文件后,Emacs會刪除這個自動保存的文件。如果遇見死機(jī),你能打開那個文件后按M-x recover file來恢復(fù)
你的編輯,(是你編輯的文件而不是自動保存的文件)。當(dāng)提示確認(rèn)時,輸入yes 來繼續(xù)恢復(fù)自動保存的據(jù)。
* 回顯區(qū)域(ECHO AREA)
------------------------------------
如果Emacs發(fā)現(xiàn)你輸入命令的速度非常慢的話他會在屏幕底部為你顯示出來,這個區(qū)域叫"回顯區(qū)域"。
* 模式行(MODE LINE)
---------------------------------
回顯區(qū)域上面的一行稱為"模式行(mode line)"。模式行顯示和下面類似的東西:
--**-Emacs: TUTORIAL (Fundamental)--L670--58%----------------
這一行給出了有關(guān)你在編輯的文件和Emacs狀態(tài)的有用信息。你已知道了文件名意味著什么。--NN%--指出你目前在文本里的位置;他意味著上面還有NN%的文本。如果是在文件的開頭,會用--Top-- 來代替--0%--。如果是在行的末尾, 會顯示--Bot--。如果你正在看的文本內(nèi)容非常少,能全部顯示在屏幕上,模式行會
說 --All--。
前面的星號表示你已改動過文本了。一旦你保存了文件或打開了一個新文件,模式行的 這部分就不是星號而是破折號了。
模式行上括號里的部分是目前的編輯模式。目前是缺省的基本(Fundamental)模式。他是"主模式(major mode)"的一種。
Emacs有非常多不同的主模式。有些意味著不同的語言或不同的文本。如Lisp模式(Lisp mode), 文本模式(text mode)等等。在所有時候有且只能有一種主模式被激活。并且他的名字會出 目前目前顯示"Fundamental"的位置上。
每一個主模式都有些自己的命令。就象不同的編程語言的注釋看起來不同相同。每種主模式 插入的注釋也不同。能用擴(kuò)展命令轉(zhuǎn)換進(jìn)某種主模式。例如,M-x fundamental-mode 是切 換進(jìn)基本模式。
>> 輸入 M-x text-mode
不必?fù)?dān)心,沒有命令會給Emacs帶來非常大改動。不過你能看到目前M-f和M-b把省略號當(dāng)作 單詞的一部分。而先前,在基本模式里,M-f 和M-b把省略號當(dāng)成當(dāng)成分隔符。
主模式通常作諸如此類微小的變化:大多數(shù)命令在每個主模式里作"同樣的工作",但又有 些微小的不同。要觀看關(guān)于你目前的主模式的文件,按C-h m。
>> 鍵入C-u C-v一次和多次使本行接近屏幕的頂端。
>> 輸入C-h m ,看看文本模式和基本模式有些什么不同。
>> 按C-x 1 從屏幕上關(guān)掉這個文件。
主模式之所以叫做主模式是因為也存在從模式,從模式和主模式完全不同。每個從模式能自 己打開或關(guān)閉,獨立于所有其他從模式,也獨立于你的主模式。所以你能不用從模式或 同時用非常多種從模式。
有一種從模式非常有用,特別是在編輯英文文本時。他是自動填充模式(auto fill mode)。當(dāng)這個 模式打開的時候,當(dāng)輸入的文本過寬的時候就會自動折行。你能用M-x auto-fill-mode來打開自動填充模式。如果此模式已打開M-x auto- fill-mode則把他關(guān)閉。我們把這叫做轉(zhuǎn)換開關(guān)。
>> 輸入M-x auto-fill-mode。然后插入一些"asdf"直到看到這行被分為兩行。你 必須在中間放一些空格,只有到空格的時候才會換行。通常邊界寬度是70,但你能用帶數(shù)字參數(shù)的C-x f 命令來改動他。
>> 鍵入帶參數(shù)20的C-x。(C-u 20 C-x f) 然后輸入一些文本看目前每行只有20個字符了。然后用C-x f把他改回70。
如果你在一個段落的中間產(chǎn)生了改動,自動填充模式將不會重新填充。要想重新填充段落, 當(dāng)光標(biāo)在段落里的時候按M-q。
>> 把光標(biāo)移到上一段按 M-q。
* 搜索(SEARCHING)
-----------------------------
Emacs 能朝前和朝后搜索字符串(指相鄰的一些字符或單詞)。搜索是個移動光標(biāo)的操作, 他把光標(biāo)移動到字符串出現(xiàn)的下一個地方。
Emacs 的搜索命令和其他大多數(shù)編輯器不同,他是"增量式(incremental)"的,這意味著搜索在你鍵入字符串時就開始了。
開始一個向前搜索的命令是C-s,C-r是往回搜索。但等等,先別忙。
當(dāng)你輸入C-s是你將注意到在回顯區(qū)域會出現(xiàn)一個字符串"I-search"。這告訴你Emacs開始 了一個增量搜索,并在等待你輸入要搜索的東西。結(jié)束查詢。
>> 目前鍵入C-s開始一個搜索。慢慢的輸入單詞'cousor',在輸入每一個字母的時候停頓一 下,注意看光標(biāo)發(fā)生了什么。
>> 再輸入一次C-s,來搜索"cursor"出現(xiàn)的下一個地方。
>> 目前輸入四次看看光標(biāo)移到了哪里。
>> 輸入結(jié)束搜索。
看到發(fā)生什么了嗎?在Emacs的增量搜索里,你輸入多少字符串他就試著搜索這些字符出現(xiàn)的 地方。到字符串出現(xiàn)的下一個地方,只須再按一次C-s。要搜索的字符串不存在的話,Emacs 會發(fā)出蜂鳴并告訴你當(dāng)前的搜索"失敗(failing)",按 C-g 也是終止搜索。
注意:在某些系統(tǒng)上,輸入 C-s 會把屏幕凍結(jié)住使你從Emacs看不到更多的輸出。這 表示這個操作系統(tǒng)的"特性"叫做"控制流程",他攔截了C-s不讓他到達(dá)Emacs那里。 要使屏幕解凍,輸入C-q,然后看Emacs手冊里的"Spontaneous Entry to Incremental Search"一節(jié),按上面的建議來對付這種"特性"。
如果你在搜索的過程里按了,你將注意到要搜索的字符串的最后一個字符會被刪除 并且光標(biāo)會回到上一個被搜索到的地方。比如,假設(shè)你鍵入了"c",將會搜索"c"第一次出 現(xiàn)的地方。然后如果你鍵入"u",光標(biāo)將移到" cu"第一次出現(xiàn)的地方。目前鍵入。 這將從搜索的字符串里把"u"刪掉,這時光標(biāo)回到"c"第一次出現(xiàn)的地方。
如果你在搜索時按了Control或meta鍵加字符(少數(shù)幾個少數(shù)命令例外,如C-s和C-r),搜索將被 終止。
C-s向當(dāng)前光標(biāo)的后面搜索字符串出現(xiàn)的地方。如果你需要搜索前面文本里的東西,用C-r來代替。 我們所介紹的C-s的每個特性C-r也支持,除了方向相反。
* 多窗口(MULTIPLE WINDOWS)
------------------------------------------------
Emacs有一個非常好的特性是能同時在屏幕上顯示不止一個的窗口。
>> 把光標(biāo)移到本行上按C-u 0 C-l。
>> 目前按C-x 2,他把屏幕分裂成兩個窗口,每個窗口都顯示本教程。光標(biāo)在上面的窗口里。
>> 按C-M-v 滾動到下面的窗口里。(如果你沒有一個真正的Meta鍵,那么按ESC C-v)
>> 按 C-x o ("o" 指 "其他(other)") 把光標(biāo)移到到下面的窗口里。
>> 用 C-v 和 M-v 滾動下面窗口里的文本。 在上面的窗口里看本教程。
>> 再次按 C-x o 使光標(biāo)回到上面的窗口里。 目前光標(biāo)象以前相同在上面的窗口里了。
你能一直用C-x o在窗口間轉(zhuǎn)換。每個窗口都有他自己的光標(biāo)位置,但僅有一個窗口能顯示活動 的光標(biāo)。所有的編輯命令都發(fā)生在那個顯示光標(biāo)的窗口上。我們把這個窗口叫做
"選中窗口( selected window)"。
當(dāng)你在一個窗口里編輯文本,而用另一個窗口作參考時命令C-M-v非常有用。你總是能把光標(biāo)留 在所編輯的地方,而用C-M-v來翻閱另一窗口。
C-M-v 是 CONTROL-META 加字符的一個例子。 如果你有一個真正的META 鍵,你能同時按住 CTRL 和 META 再按"v"來輸入C-M-v。CTRL 和 META 誰先按誰后按無所謂。
如果你沒有一個真正的META 鍵, 你能用 ESC 來代替。這時候次序是有關(guān)系的: 你必須讓 ESC 跟在 CTRL-v后面; 否則 CTRL-ESC v 將不工作。 這是因為 ESC 是個有意義的字符而不 是個修飾字符。
>> 輸入 C-x 1 (在上面的窗口里) 以消除下面的窗口。
(如果你在下面的窗口里鍵入C-x 1,將會把上面的窗口去掉。能把這個命令看作是"只保留你 目前在的那個窗口。)
你不必一定要在兩個窗口里顯示同樣的緩沖。如果你在一個窗口里鍵入C-x C-f查找文件,另一個 窗口的內(nèi)容不會改動。你能獨立的在每個窗口里查找文件。
這是讓兩個窗口顯示不同內(nèi)容的另一種方法:
>> 在你輸入的文件名后再輸入C-x 4 C-f,然后用結(jié)束。會看到指定的文件出目前下面 的窗口里。光標(biāo)也在那里面。
>> 鍵入C-x o 回到上面的窗口,然后輸入C-x 1刪掉下面的窗口。
* 遞歸編輯層(RECURSIVE EDITING LEVELS)
-------------------------------------------------- --------------
有時候你會進(jìn)入"遞歸編輯層(recursive editing level)"。由模式行上的方括號指示。他在主模式 名的括號外面。例如你也許會看到(Fundamental)變成了[(Fundamental)]。
要退出遞歸編輯層,按ESC ESC ESC。這是個通用的退出命令,你也能用他除去額外的窗 口,或退出微型緩沖。
>> 輸入 M-x 進(jìn)入一個微型緩沖; 然后用 ESC ESC ESC 離開。
你不能用C-g來退出遞歸編輯層。這是因為C-g只能取消在遞歸編輯層里面的命令。
* 獲取更多的幫助(GETTING MORE HELP)
-------------------------------------------------- ------------
在本教程里我們試著為你開始使用Emacs提供了足夠多的信息。不過有關(guān)Emacs的信息實在是太 多以至于不能全部都在這里說明。不過,你還應(yīng)該學(xué)習(xí)更多有關(guān)Emacs的東西,因為他另外更有 非常多有用的特性。Emacs提供了非常多讀取有關(guān)命令的文件的命令。這些"幫助"命令都以 Control-h開頭,叫做"幫助字符"。
為了使用幫助特性,輸入字符C-h,然后再輸入一個字符來說明你需要哪種幫助。如果你真的不知 道,輸入C-h ? 然后 Emacs會告訴你他能給你什么樣的幫助。如果你輸入了C-h 又覺得不必任 何幫助,你能用C-g來取消他。
(在有的地方,C-h的作用被改動了。如果按C-h在屏幕的底部沒有出現(xiàn)有關(guān)幫助的信息的話,試試 用F1和M-x help RET來代替。)
最基本的幫助特性是C-h c。輸入C-h,然后是字符 c,然后輸入一個命令字符和序列;然后 Emacs 會顯示這個命令的簡潔的描述。
>> 輸入 C-h c Control-p.
顯示的消息看起來會象這樣:
C-p runs the command previous-line
這告訴你"功能的名字"。功能的名字主要用于對Emacs的功能擴(kuò)充和制定。但因為功能的名字 指出了命令的用途,所以最佳不要改動他。
C-h c后面可跟多字符命令,比如 C-x C-s 和 (如果你沒有 META 或 EDIT 或 ALT鍵) v 。
要獲取有關(guān)命令的更多信息,用C-h k 代替 C-h c。
>> 輸入 C-h k Control-p.
這將在一個Emacs窗口里顯示命令的文件。當(dāng)你讀完后能用C-x 1除去幫助文本。如果不想馬上 離開,你能一邊編輯一邊參考幫助文本,然后再按C-x 1。
這是一些有用的 C-h 選項:
C-h f 描述一個功能,在你輸入了這個功能的名字后。
>> 輸入 C-h f previous-line。 將打印出C-p命令所實現(xiàn)的所有功能。
C-h a 命令查找。輸入一個關(guān)鍵字,Emacs將列出所有名字里有這個關(guān)鍵字的命令。 包括所有以Meta-x開始的命令。對有些命令,C-h a 也將列出實現(xiàn)同一功能的 幾個命令序列。
>> 輸入 C-h a file.
這將在窗口里顯示所有名字里有單詞"file"的M-x命令。
>> 輸入 C-M-v 來滾動幫助窗口,做上幾次。
>> 輸入 C-x 1 來刪除幫助窗口。
* 總結(jié)(CONCLUSION)
--------------------------------
記住,永遠(yuǎn)都用C-x C-c來退出Emacs。用C-z來退到一個臨時的外殼里,以使你過后還能回到 Emacs。
以上內(nèi)容由 華夏名網(wǎng) 搜集整理。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。