作者: 陳斌(redguardtoo)
注意: 我會長期維護本文,請參考下面的更新時間
更新時間:
原創時間:
很容易.一年多前我還在Vi陣營,偶爾使用Emacs還總是忘記`退出`(C-x C-c)的快捷鍵,但是一年後我跨入高手行列.
現在網上很多中文文章都是和你強調Emacs有多牛,以激發你的興趣.最有名的大概是王垠的Emacs是一種信仰!世界最強編輯器介紹.
這些好文章讓你激動,你因此定下來一個偉大崇高的目標(掌握神一樣的編輯器Emacs),接下來的關鍵就是執行了(如何高效地學習Emacs).
國內關於"如何做"的文章不多,那些涉及到"如何做"的文章,涉及細節比較多,而談一般方法論的較少,所以本文的重點就是談談一般方法,
Table of Contents
1 爲什麼要學習Emacs(可選)
簡單談談,因爲我本文的重點是"怎麼做",而不是"爲什麼".
1.1 和單純的IDE比較,Emacs可以做的更多更快
這裏的更多並不是和IDE比支持某編程語言的特性更多,而是指Emacs內可完成的通用的任務比較多更快捷.
例如,我做開發時碰到難題,需要實時上IRC請教國外高手(工作流包括粘貼我的代碼到pastebin或者gist,在irc內提問,看網頁,將解決方案粘貼回來),emacs集成了IRC工具和瀏覽器(w3m),操作就很方便.
我使用Visual Studio有11年了,Firefox使用我也是高手,相信我,大多數情況下還是Emacs更快.
當然口說無憑,請看以下兩段高手操作的youtube視頻:
1.2 使用Emacs可以立刻開始工作.
軟件是開源的,配置是純文本,而且軟件的資源消耗較小,安裝包很小(命令行版本的安裝包30M左右),所以在任何環境下我都可以用Emacs開始工作,overhead很小.
這在大項目中特別明顯,例如,某項目我需要同時編輯perl,java,C,bash,SQL,需要遠程編輯在美國服務器上的代碼,網速也不是很快.Emacs的優勢就體現出來了.
2 讀官方教程
打開Emacs後,按Alt-x,輸入help-with-tutorial,回車.
第一步,僅需要半小時.關於Emacs的多難學的謬論可以休矣,因爲半小時的代價微不足道.想想你去年有多少小時白白虛度了吧.
4 站在巨人的肩膀上
這方面我是個負面榜樣.開始階段我還是抱着玩的心態,喜歡到處找有趣的配置粘貼到我的.emacs中去.
完全是浪費時間!
我應該一開始就照抄 世界級大師Steve Purcell的emacs配置(注意,Purcell的af5ca840版本支持Emacs23.1及更高版本,在Linux/OSX/Cygwin下測試過,更高版本只保證支持emacs24,因purcell只在mac下用emacs24版本,如果一定要使用emacs23,可考慮我的版本,網址見後文).
我請求你不要重複我的錯誤,不要質疑,不要創新,跟着Steve Purcell做.
順便說一下,Steve Purcell的配置需要git才能下載,這意味着你需要安裝git和cygwin(限於windows平臺).這是買一送二,我又給你介紹了兩個高手必備的世界級工具.
考慮到我的熱情會被認爲是傳銷,而我的嚴密邏輯和事實論證可能被忽視,我有必要簡單明瞭地說明推崇Steve Purcell原因:
- 已有很多人推薦他的配置(請google)
- 能力出衆,背景相當好(我已調查過他的Linkedin Profile)
- 人近中年,心智成熟(例如,他只在Mac下使用Emacs24,但是能夠根據我在Linux/Cygwin下使用Emacs23的需求做調整).
- 工程經驗豐富(看他的代碼一目瞭然)
- 勇於求新,不斷嘗試新插件,在他這個年齡極爲突出
以上事實在我給出的網址中稍作調查即可得知.
7 訂閱Emacs牛人的博客
最好的是Planet Emacsen,是多個Emacs博客的集合
8 在stackoverflow上搜索emacs相關的討論
google "emacs-related-keywords site:stackoverflow.com"
我會定期搜索,同樣的帖子反覆精讀.因爲stackoverflow上的討論質量很高.
9 github是我的新歡
github的版本控制服務很好.現在它的社區化傾向越來越強了,我喜歡.
例如,可以看一下https://github.com/languages/Emacs%20Lisp上最酷的Emacs插件.
11 將emacs配置管理起來
我將emacs配置納入github的版本控制,見https://github.com/redguardtoo/emacs.d.
版本控制可以是認爲一個集中式的知識管理,任何時刻任何地點對Emacs配置的修改都要及時上傳和合並(merge).這點對於個人能力的長期積累很重要.
12 將emacs相關資料管理起來
我將我收集的所有Emacs相關資訊都放在dropbox的服務器上,然後用dropbox的軟件同步資料到我的智能手機和我的IPad上,這樣我可以充分利用空閒時間學習.
我目前在讀<An Introduction to Programming in Emacs Lisp by Robert J. Chassell>和<Writing GNU Emacs Extensions by Bob Glickstein>.
請點擊這裏註冊dropbox帳號.注意,dropbox客戶端完全可以在國內使用,雖然訪問其首頁可能有點問題.
13 訂閱EmacsWiki
EmacsWiki是一個社區維護的Emacs文檔,可以認爲是最酷插件和最佳實踐的集合點.
14 到youtube上看emacs相關的視頻
例如,我就是看了Google Tech Talks上這個Org-mode作者的介紹而愛上org-mode.
15 認識到Emacs是一種生活方式
如果你照着我以上的做法做,就可以認識到Emacs牛人其他也很牛.Emacs實際上體現了牛人的一種生活方式.
像那些牛人一樣思考,像那些牛人一樣做事,不要懷疑,不要猶豫,很快你就會發覺自己也開始有些牛人的氣質了.
例如,Sacha Chua就是這樣一個有牛人氣質的女孩,這是她的Youtube錄像.
更直白地說,我認爲Emacs不僅僅是一種工具,它可以提升人的素質,讓人學會謙卑.
至少對我而言,當我明白了Emacs的其樸素的設計思想和其強大的功能後,我的感覺是敬畏,因爲我做不出這樣的軟件.
我既沒有能力把一個編輯器設計成一個人工智能語言Lisp的平臺,也不可能花30多年的時間對一個軟件精益求精.
16 小結
看到這裏你應該很清楚了,我的方法就是以興趣作爲切入點,以天才作爲榜樣,大量閱讀,大量練習.
如果你想獲得真才實學,想變得更強,變得更優秀,這就是唯一的方法,唯一的捷徑.
這個方法不是我發明的,古往今來的傑出人士都是這麼做的,如果你需要一點"更科學的"論證,請參考一萬小時天才理論.
17 聯繫我
這是我的twitter和google plus以及微博,也可以通過我的email<chenbin DOT sh AT GMAIL DOT COM>聯繫我.
我的主力博客爲http://blog.binchen.org.
我不會回答Emacs配置的具體問題,因爲如果你通讀本文,應該知道哪裏找答案更好.
18 答疑
18.1 我已是Vi高手,爲什麼要轉到Emacs來?
嘿嘿,我也是Vi精通後轉到Emacs的.我轉換陣營的原因就是因爲Emacs的強大(例如和gdb的完美結合)以及其腳本語言是lisp.
當然Vi的多模式編輯和快捷鍵比Emacs要高效得多,所以最佳方案是Vi的快捷鍵加上Emacs的強大.
目前我在用evil-mode,在Emacs下模擬Vim操作,結合了兩者的優點.簡單地說,現在我的運行模式"神用編輯器之神".
18.2 如有任何關於具體如何配置Emacs的問題
請善用google和我提供的信息 例如:
- 在.emacs.d中的init.el文件起什麼作用? google "emacswiki init.el"
18.4 爲什麼我用了牛人的配置後自己額外添加的插件無效
Emacs是個開放平臺,其衆多插件release之前並不一定有嚴格的測試.所以插件之間可能有衝突.
這也是我爲什麼建議初學者直接使用牛人配置的原因,因爲牛人已經解決了衆多兼容性的問題,你只要直接享受他的服務就行了.
即使你發覺了牛人尚未來得及處理的bug,最有效的方法是提交bug報告給牛人,而不是自己去鑽研elisp.
18.5 我想用Windows版本的Emacs而不是Cygwin版本的Emacs,怎麼做?
需要對基本的命令行操作有一定的熟悉.關鍵知識點有兩個:
- 設置HOME環境變量,因爲.emacs.d中的某些elisp腳本假定.emacd.d在HOME所指的路徑中.
- Emacs的某些功能需要使用第三方的命令行工具,這些工具的路徑應該添加至環境變量PATH中.
如果你不知道如何在Windows下添加修改環境變量,不知道如何安裝第三方工具,建議還是先用cygwin,因爲cygwin已自帶某些工具,沒有的話,安裝也和方便.且在cygwin下環境變量HOME默認已有.
第三方命令行工具清單請參考上文我的.emacs.d中的README(Steve Purcell沒有列出這些工具,因他只用OS X).