|
Tue, 3 Apr 2007
Eamcs只能完成跟Notepad一樣的功能嗎?答案顯然是否定的,今天我們一起來看看Emacs中的Buffer和Window是怎么用的。 首先還是現(xiàn)來了解一下什么是Emacs中的緩沖區(qū)(Buffer)和窗口(Window)。 Buffer:在Emacs中編輯的每個(gè)一文檔,或每一個(gè)信息存放的空間都構(gòu)成一個(gè)Buffer。 Window:在一個(gè)Emacs運(yùn)行時(shí)的界面(一個(gè)Frame)中,可以劃分成多個(gè)隔開的區(qū)域,每一個(gè)區(qū)域稱為一個(gè)Window。如果在圖形界面下運(yùn)行多個(gè)Emacs的實(shí)例,則每一個(gè)實(shí)例對(duì)應(yīng)一個(gè)Frame。在不同的Window中,可以顯示相同或者不同的Buffer的內(nèi)容。 在剛啟動(dòng)Emacs時(shí),Emacs己經(jīng)為您建立了一個(gè)名為*scratch*的Buffer,用于進(jìn)行隨意的文本輸入(它其實(shí)還有ELisp演算的功能的,這個(gè)后面再說)。后面每當(dāng)您用C-x C-f新建或打開一個(gè)文件時(shí),Emacs都會(huì)新建一個(gè)Buffer,名字就是你文件的名字,并且在當(dāng)前的Window中進(jìn)行顯示。如果是新建文件,Buffer就是空的,如果是打開文件,就會(huì)把文件的內(nèi)容讀入,放在Buffer中。所以如果你在編輯一個(gè)文件,在你存盤之前,其實(shí)你是在修改Buffer中數(shù)據(jù),而并沒有在修改實(shí)際的文件。 現(xiàn)在您可以試一下,先打開或創(chuàng)建幾個(gè)文件,這時(shí)當(dāng)前應(yīng)該顯示在最后一個(gè)文件對(duì)應(yīng)的Buffer中。按動(dòng)鍵盤上的C-x C-b,這時(shí)您會(huì)發(fā)現(xiàn)Emacs的屏幕被分成了上下兩部分,這兩個(gè)部分也就是Emacs中的所謂的Window了。 觀察一下下面的那個(gè)窗口,可以看到,它的名字是*Buffer List*,窗口的內(nèi)容就是列出了當(dāng)前所有的Buffer。我們先不介紹這個(gè)Buffer List的使用的方法,我們先介紹窗口的基本操作: C-x o:把光標(biāo)在屏幕上的窗口間進(jìn)行切換。記憶方法:其它(Other)窗口。 C-x 1:把當(dāng)前光標(biāo)所在的窗口放到最大,隱藏其它所有的窗口。記憶方法:只剩一(1)個(gè)。 現(xiàn)在您可以按幾次C-x o看看光標(biāo)是不是可以在上下兩個(gè)窗口間跳動(dòng),玩夠了就再讓光標(biāo)停到先前的窗口中,按C-x 1,這時(shí)Buffer List窗口應(yīng)該被隱藏了起來,這時(shí)如果你再試圖用C-x o來切換窗口就不管用了,因?yàn)槠聊簧现挥羞@一個(gè)窗口了。 那怎么切換顯示隱藏的窗口呢?其實(shí)這個(gè)說法本身就不是很準(zhǔn)確,在Emacs中只有顯示出來了,才叫窗口,如果沒有顯示出來,而數(shù)據(jù)還存在,這時(shí)它只能稱為是一個(gè)Buffer。 切換Buffer的快捷鍵是C-x b,可不要跟列出Buffer列表的快捷鍵搞混了。按下C-x b后,Emacs會(huì)在Mini-buffer中提示輸入要切換到的Buffer的名字,對(duì)于文件來說,這個(gè)Buffer的名字通常就是文件名了,對(duì)于沒有關(guān)聯(lián)到文件的Buffer,它們也有自己的名字,比如*scratch*,*Buffer List*之類這些都是。如果不輸入Buffer名字直接回車,就會(huì)打開上一次訪問的Buffer,所以反復(fù)按C-x b加上回車,就可以在最近工作過的兩上Buffer間切換,非常方便。同理,在輸入Buffer名字的時(shí)候,同樣可以用Tab鍵進(jìn)行自動(dòng)補(bǔ)齊。 如果只會(huì)新打開文件創(chuàng)建新的Buffer,而不會(huì)把它們關(guān)閉,這顯然是不行的,Buffer會(huì)越來越多。要關(guān)閉一個(gè)不需要的Buffer,所要做的就是先切換到這個(gè)Buffer,然后按動(dòng)C-x k,加上回車?;蛘咧苯影碈-x k再輸入Buffer名字后回車,效果都是一樣的。在關(guān)閉Buffer的時(shí)候,如果Buffer中的內(nèi)容沒有保存,Emacs會(huì)提示你是否真的要關(guān)閉。 講了不少,還沒有講到一開始按C-x C-b看到Buffer List的用法,其實(shí)如果不是要批量處理Buffer,比如一次關(guān)閉很多Buffer的話,我覺得Buffer List用處并不是很大,所以這部分功能就留待大家自己去琢磨了,其實(shí)在后面講到對(duì)列表型的窗口的操作的時(shí)候,這個(gè)Buffer List的操作方法也就顯而易見了。 有些朋友到現(xiàn)在為止可能已經(jīng)開始被復(fù)雜的快捷鍵搞暈頭了,不要怕,多用用也就熟悉了。另外,其實(shí)Emacs所有的快捷鍵都是可以自由定制的,隨著你對(duì)Emacs的不斷熟悉,你很快就可以找到一套最適合你自己使用的快捷鍵方案,到時(shí)我會(huì)介紹如何進(jìn)行這樣的定制。 |
|
|