2007年8月16日 星期四

使用 Emacs 心得

好不容易把 GNU Emacs Manual 翻的差不多了,但覺得有點失望,而且很難用。原本在 Vim 內好用的東西似乎在 GNU Emacs 裡面都沒有,譬如說我常用的 ciw ci( ci{ 這些 Text Object Operator,而這些東西在 Emacs 裡頭,就得靠自己去寫 LISP 來達成,或者抓別人的外掛來用。

在游標移動方面,Emacs 使用的是 Ctrl+f,b,n,p ,距離很遠,和 Vim 的 hjkl 比起來就不是這麼直覺。選取文字區塊方面很容易讓手指打節,因為在 Emacs 裡頭,要用 Ctrl-Shift-2 也就是 ( Ctrl-@ ),在速度上就比 VIM 的大 V 慢很多了..

CC Mode 下,Emacs 不會自動幫你找對應的括號,VIM 則有。

行號在 Emacs 裡頭沒有預設,而使用外掛則有很多問題。

Emacs 沒有程式碼折疊,也是必須去找延伸套件來裝。

即使是在 CC Mode 下,另外提供的編輯功能也很有限,沒有像 VIM 那樣有好用的 Text Object 編輯功能可用。

Emacs 裡頭沒有內建 Tabpage 的功能,也是得另外裝延伸的 LISP 檔才行。( vimpulse.el )

因此裝起 Emacs 之後,自己另外調整、設定就變成非常重要,也因此才有人說,如果你把 .emacs 搞丟了,那你差不多可以不要用了。 XD

timchen 的 Blog 就讀到:
從前有一個喜愛使用emacs的人,
因為他慣用的 .emacs 被人弄丟了,
從此之後就使用了vi.

(註: 這個人的名字叫Tim O'reilly.)
由此可見 .emacs 設定檔案的重要性。

在啟動速度上, Emacs 比 Gvim 慢了些,推測應該是 Emacs 啟動之後才會讀其他 el 檔的關係。

也許是因為我一開始就是 Vim 的重度使用者,所以在使用 Emacs 的時候,非常的不適應,譬如說我常用的 hjkl , ZZ , HML , yy , p , dd 等,在 Emacs 裡頭似乎沒有針對行處理的快捷 ( vim 裡頭的 yy , dd , p ) ,所以也得自己寫 Lisp 才行。 Orz

不過 Emacs 最下方的 Command-Line 挺漂亮的,此外在 Completion 跟指令的及時說明都不錯。

Emacs 雖然在設定上的彈性跟潛力不錯,但是要熟透到比 Vim 好編輯還是得花上許多時間去『開發』自己想要的功能,想到這個就很痛苦,我覺得簡直是在浪費時間了,而且現有輪子用一用可能還會發現現有的輪子怎麼還不太可靠,譬如說 setnu , linum 都有一些 bug ....

對一開始沒用過 vim 的使用者來說 Emacs 應該會比較好上手,因為 Emacs 內編輯修改存檔沒有像 vim 那樣分模式,得用 insert mode 才能輸入,因此使用者可以像使用一般編輯器那樣照平常的方式輸入文字,然後存檔、關檔、開檔等等。

雖然講了這麼多,但其實 Emacs 還是不錯的,只是他給使用者更大的空間可以發揮,更多自由、個人化。譬如說,你可以在裡頭直接寫 LISP ,把許多小功能湊起來變大功能。 ( 這點方面其實與 VIM 非常相似 )

所以想用 Emacs 有個前提,就是你本身對 LISP 相當熟練才行,否則花上一兩個星期調整你的 Emacs 是很有可能的。

許多人可能想到 Emacs vs Vim 可能就會有一場聖戰要開打了吧?我搞不懂幹嘛癡迷到這樣?XD 不過在 wiki 上有個條目 "Editor war" 裡頭就引述了一段宗教似的文章: ( Emacs 的支持者 )
Truly, our responsibility to spread the Gospel of the Gnu is weighty.
Cleave to what is good. Remember the words the prophet Stallman
brought down from the Mount MIT, graved in Lisp on tablets of
crystalline lambda calculus.

Only this true: Emacs is pure.
All else is false.
Do not be misled by false gods like Vi, the Editor of the Beast.
Do not be seduced by Word, the Scarlet Woman of Babylon.
Do not be driven to madness by Xcode, the Blind Priest of the Children of Asherath.

When the wild winds of chaos blow, stay pure.
When the universe collapses in shards around you, stay holy.
When the gibbering hobgoblins of apostate Editors attack with shards
of broken syntax, seek the crystalline stillness within you.

Brethren, ensure that you (Meta-x-say-hallel-to-Emacs) daily for otherwise you will be lost.
When the Beast comes, only Emacs can save you.

This was brought to you as a public service by the Holy and Ineffable Church of The Mighty Emacs.
SUPPORT THIS CRUSADE WITH YOUR DONATIONS. EMAIL THE STILL BEATING
HEART OF A VILE VI USER TO emacs-highpriest@god-hates-vi-users
很有趣吧,這讓我想到...眾阿拉、耶穌信徒彼此之間的聖戰。 XD

An Tutorial Introduction to GNU Emacs
GNU Emacs Lisp Programming Reference
An introduction to programming in Emacs Lisp