Emacs 編輯器(轉)

post0發表於2007-08-11
Emacs 編輯器(轉)[@more@]

[b][size=4][color=blue]Emacs 是什麼的簡稱?[/color][/size][/b]

E. M. A. C. S.

Emacs Makes A Computer Slow

Escape Meta Alt Control Shift

Emacs Makers Are Crazy Sickos

Emacs Makes All Computing Simple

Emacs Makefiles Annihilate C-Shells

Emacs Manuals Always Cause Senility

Emacs May Allow Customized Screwups

Emacs Manuals Are Cryptic and Surreal

Eventually Munches All Computer Storage

Eight Megabytes And Constantly Swapping

Elsewhere Maybe All Commands are Simple

Excellent Manuals Are Clearly Suppressed

Emacs May Alienate Clients and Supporters

Except by Middle Aged Computer Scientists

Extended Macros Are Considered Superfluous

Every Mode Accelerates Creation of Software

Each Manual's Audience is Completely Stupefied

Exceptionally Mediocre Algorithm for Computer Scientists

Easily Maintained with the Assistance of Chemical Solutions

Eradication of Memory Accomplished with Complete Simplicity

[b][size=4][color=blue]Emacs 能做什麼[/color][/size][/b]

很多人不理解為什麼 Emacs 的使用者那麼多,他們是如此的熱愛 Emacs,甚至有的人把它當成了“信仰”。雖然我沒有這個信仰,但是它的確很好,我很喜歡用它編輯各種檔案,現在來看看 Emacs 能做什麼。

據我所知,Emacs 的能力包括

1. 編輯文字

Emacs 編輯文字的能力是最強的了。Emacs 的其它很多功能都是這種強大的編輯能力。Emacs 是人性化的設計,你心裡很舒服,對編輯東西充滿熱情,因為它能幫你完成很多事情。它非常可靠,絕對不會弄壞你的檔案,用它編輯文字,你的心裡有保障。

可能你開頭覺得它的鍵繫結用起來非常不順手。但是 Emacs 的優勢不在於擊鍵的頻率,我們的目標是用一個鍵,甚至不按鍵盤,就完成非常多,非常智慧的操作。

Emacs 的自動文字處理能力極強。不管是中文還是英語,不管你是寫小說,寫 HTML 還是 C 程式,我都可以按 M-e 向前移動一句話 (C語句),按 M-k 刪除一句話,按 M-} 移動一段話,按 M-p (我自己設定的按鍵) 刪除一段話。因為我事先告訴 Emacs,什麼樣算是一句話 (sentence-end),什麼算是一段話(paragraph-start)。

我只要按 M-q 就可以把一段話排的規規矩矩,而不會把不該斷開的地方斷開。我只要按一個鍵就可以把一個數字列表重新排序。我只要在 HTML 文件裡按 C-c backspace 就可以把一組tag刪掉,按C-c C-c i 就可以插入一個圖片,按 C-c C-v 就可以馬上把這個文件送到一個 Mozilla 視窗去預覽……在 LaTeX 文件裡按 C-c C-r RET 就可以把我的文件裡選定的區域送給 LaTeX 處理,馬上看到效果。

Emacs 有非常友好而強大的人機介面。在搜尋替換字串時,你就能明顯感覺到這個優點。它在輸入regexp(正規表示式)搜尋的時候還能進行 incremental search,而且對部分匹配的字串都有非常漂亮的加量。在替換的時候,它獨有 recursive edit,可以打斷替換過程,編輯附近的需要糾正的文字,然後繼續替換。這個功能對很多人都是非常重要的,因為,在替換過程中,被替換的文字附近的文字很可能會因為它被替換而需要修改。看看這個抓圖,就是 isearch 輸入一個正規表示式的情況。

Emacs 的拼寫檢查能力非常強大。你可以使用 flyspell 隨時檢查你的拼寫錯誤,看看這幅圖 是 flyspell-mode 的 LaTeX 文件, flyspell 知道段落裡的某些單詞是錯的,而 egin{myquotation} 裡的 myquotation 被認為是一個使用者自己定義的 LaTeX 環境名字而不認為是拼寫錯誤。

你還可以利用 ispell 的補全功能輸入你容易打錯的很長的英語單詞,看看這幅圖。

Emacs 的 hippie-expand 能夠非常智慧的補全你的文字,檔名,和其它很多東西,而這個功能都是用同一個按鍵完成!

Emacs 能輸入和顯示多國語言文字 ,是一個真正的國際化程式。Emacs 能識別多種人類語言符號裡的語法,它能知道那些符號是括號,那些是標點。看看這個抓圖裡, Emacs 顯示了中文書名號的匹配情況。 《正確》,和《錯誤>

Emacs 的鍵是可以任意繫結的。我甚至可以使用 Windows 鍵盤上的 Win 和 Menu 鍵來控制。我的 Win + 滑鼠中間可以彈出一個 buffer裡所有引用到的檔案和URL的列表,當我點選它們就可以編輯那個檔案或者在 Mozilla 中開啟連線。看看這個抓圖(ffap-at-mouse)。

你能想到的和你不能想到的編輯功能,Emacs 都能完成。說到這裡你可能又會說:“這個功能,vi也有”,“這個功能, UltraEdit 都有”……對,這些能力可能很多其它程式也有,不過同樣的功能, Emacs 總是要比別人完成得更好。這一點你用過才能體會到。

而且這些功能只不過是 Emacs 浩如煙海的功能中的一部分,它們還可以被不斷的擴充。因為 Emacs 具有非常強大擴充套件能力。

Emacs 編輯文字方面的擴充套件簡直沒法計數。folding, narrow, outline, ... 這些給人帶來了非常大的方便,已經被許許多多的人採用。

2. 編輯程式

程式也是一種特殊的文字檔案。因為 Emacs 特別適合編輯程式,所以特別在這裡提出。Emacs 可以方便的編輯任何型別的計算機語言程式程式碼,而且為它們提供語法加亮,自動縮排。你可以對程式的語句進行操作。比如向下移動一個 list, 刪除整個 C 函式,…… 你可以用一個鍵就把許多行註釋重新排的整整齊齊。

一些擴充套件可以讓你方便的瀏覽程式碼,而且它們可以識別程式碼的語義。列出函式名,引數和型別,變數名,類,宏,方法,defun, include 的檔案。當你編輯程式時,Emacs 可以幫你補全函式名,引數等等。你可以在程式碼中間自由的穿梭。看看這個用 Emacs 寫程式的介紹。

你可以使用 Ediff 來比較兩個或者三個檔案,Emacs 可以把不同的地方高量,而且修改過的地方有特別明顯的顏色不同。我經常用這個功能很快找到我修改過的程式碼裡新出現的錯誤的位置。看看這個抓圖。

你用一個指頭就可以讓 Emacs 呼叫編譯器編譯程式,列出錯誤列表,啟動偵錯程式,在另一個視窗顯示當前執行原始碼的位置。看看這個抓圖就是 emacs 正在呼叫 gdb 除錯程式。

Emacs 的 narrow 和 folding 功能使你能夠編輯幾萬行程式碼在一個檔案裡而不會覺得摸不著方向。看看這幅圖,你能想像這是 TeX 的原始碼的 24000 多行裡的一部分嗎?你操作它的時候就像只有幾十行。 folding 可以使你的很長的文件摺疊起來,看看這幅圖就是我的一個很長的網頁,我在需要的時候可以進入其中一個主題進行編輯,當我退出主題時,整個文件看起來就像只有一頁那麼長。我可以隨意的移動我的主題,就像只移動了一行。

加上一些 elisp,Emacs 就可以成為一個程式碼瀏覽器。

3. 作為其它程式的介面

Emacs 可以作為很多程式的前端。比如w3m, lynx 瀏覽器,MAXIMA 計算機代數系統, Scheme48 等 Scheme 直譯器,shell,……這些文字方式的程式一旦與 Emacs 接合就擁有了巨大的編輯的能力。看看這幅圖,Scheme48 加上 Emacs,就有了語法加亮和方便的熱鍵,可以非常方便的使用Scheme 直譯器了。

4. 作為作業系統

Emacs 就像一個具有編輯功能的作業系統,你可以用它幹很多事情。比如,閱讀email和新聞組, 瀏覽網頁,管理檔案目錄 (dired),作為網頁伺服器,遠端編輯檔案,記錄日程,約會提醒,電子日曆 ,查字典,ICQ 聊天,放 mp3,……

5. 煮咖啡

Emacs 的功能已經超越了電腦的範圍啦!看看這個很奇特的用途: coffee.el :P

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-945108/,如需轉載,請註明出處,否則將追究法律責任。

相關文章