一年成爲Emacs高手(像神同樣使用編輯器)

做者: 陳斌(redguardtoo)javascript

版本號: 20160125html

更新時間: <2016-01-25 Mon>前端

原創時間: <2012-01-31 Tue>java

版權: 本文采用如下協議進行受權,自由轉載 - 非商用 - 非衍生 - 保持署名 | Creative Commons BY-NC-ND 3.0,轉載請註明做者及出處.node

簡介

成爲高手很容易.當初我在Vi陣營,偶爾用Emacs還忘記"退出"的快捷鍵,一年後我跨入高手行列.git

不少文章強調Emacs有多牛,但關於"如何作"則語焉不詳.即便涉及到"如何作",談細節多而方法論少,因此本文就 側重方法論.程序員

全文結構以下:github

  • 爲何Emacs值得學習,如對開源文化熟悉可跳過這一章,不然至少讀一下態度一節
  • 本文最核心觀點,要充分利用高手成果,不要從新發明輪子
  • 儘快掌握Emacs的步驟
  • 進一步提升的提示(社區,閱讀,知識管理)
  • 跳出具體Emacs技巧,重要的是人
  • 答疑和小結

爲何用Emacs(可選)

簡單談談,因重點是"怎麼作",不是"爲何".web

真正精通後Emacs,其餘編輯器天然精通

一旦嘗過最好的,你天然瞭解好的編輯器應該有哪些功能.算法

好比一個內嵌的插件管理器是最基本的.

以下載了第三方插件,若是發覺其有問題,能夠在不碰該插件原始代碼的狀況下修復.

插件服務器關閉了,應能夠在自帶的U盤上快速創建鏡像.

目前流行的編輯器如Sublime Text還作不到以上幾點.

Emacs 的特色決定了其社區水準不低

Emacs 用 Lisp 開發,Lisp 不一樣尋常的語法決定了其開發者都是資深開發者,掌握了多門語言.

Lisp 並不能給你帶來任何好處,因此其社區成員都是純粹的技術愛好者,投機取巧的功利主義者對其沒有興趣.

和IDE比較,Emacs 作的更多更快

IDE針對特定語言或框架優化,而Emacs完成通用任務更有效.

例如,我碰到難題,須要上IRC請教國外高手(工做流是,粘貼代碼到http://gist.github.com, 在irc提問,看網頁,將解決方案粘貼回來),Emacs 集成了IRC工具和瀏覽器 (例如),操做就很方便.

我使用 Visual Studio 多年,Firefox 也是高手,相信我,大多數狀況下 Emacs 更快.

口說無憑,請看高手操做的 youtube 視頻, Emacs Power: Can your editor do THIS!

順便說一下,不少初學者關心的代碼自動完成,幾門主流語言支持都不錯(包括Java).

Emacs會永存

我的開發者會喪失興趣,公司會倒閉.但自由軟件基金會將一直存在下去.

Emacs做爲其招牌軟件也會維護下去,個人投資永不會貶值.

能夠馬上開始工做.

軟件開源,配置是純文本,且資源消耗小,安裝包很小 (命令行版本 30M 左右),任何環境下均可用.

這在大項目中特別有益,例如,某項目需同時編輯 Perl, Java,C, Bash, SQL, 要編輯遠程服務器上的代碼,網速不快. Emacs的優點就體現出來了.

一年指的是一年中的空閒時間

我沒說一年內須什麼事都不幹專學Emacs, 我最反對沒有短時間回報的懸樑刺股.

我利用一年中通勤時間就取得了很大進步,自信到能夠寫下本文.

態度決定一切

重要的是頭腦開放,不先入爲主.

新手的問題是,根據以前習慣 盲目 設定了入門必知.有些必知還很費時間.

以我爲例,

也要避免門戶之見,好比用了Emacs就排斥Vim的快捷鍵.好比必定要Helm和Ido中二選一(我是同時用的).治療就是重讀武俠小說"笑傲江湖".

具體步驟

開始前,解釋一下後文用到的命名慣例,

  • "C" 表示按下Ctrl鍵,"M"表示按下Alt鍵
  • "M-x my-command"表示同時按下"Alt"和"X", 輸入"my-command",而後回車

無Linux/Unix經驗新手的快速指南(可選)

建議,

  • 安裝Emacs 24
  • 不安裝任何第三方插件
  • 掌握基本知識,什麼是環境變量(好比PATH, HOME之類的變量),什麼是stdin, stdout, pipe
  • 讀官方教程,學會基本的文本操做(大概十幾個快捷鍵)
  • 使用Emacs 24自帶的org-mode做我的管理
  • org-mode關鍵是用起來,只要記住按TAB鍵是展開內容就能夠了,其餘都不用學

這步的目的是:

  • 理解Emacs可愛之處
  • 知道Emacs如何和其餘軟件交互

讀官方教程

按如下步驟閱讀教程:

  • 不安裝任何插件打開Emacs, 好比在Shell中運行命令"emacs -nw -Q"
  • 同時按下 Alt 和 X 健,輸入 help-with-tutorial(相似快捷鍵後文簡寫爲`M-x help-with-tutorial` 代替),回車.

僅需半小時.關於Emacs多難學的謬論能夠休矣.半小時的代價微不足道.想一想你去練了多少個半小時吧.

即便你不打算使用Emacs默認的快捷鍵,這步也是必須的,不要跳過!

最起碼要知道如下命令,

  • "M-x describe-variable", 快捷鍵"C-h v", 查看變量的文檔
  • "M-x describe-function", 快捷鍵"C-h f", 查看命令的文檔
  • "M-x describe-key", 快捷鍵 "C-h k", 查看快捷鍵的文檔

以實際問題做爲切入點

微小的努力如能獲得巨大回報,你會越學越有樂趣,進入一個感情上的正反饋.

在任何領域要成爲高手,興趣是最重要的.

以我爲例,我急需 GTD 的工具,而 Emacs 的 Org-mode 是同類軟件中最好的(沒有之一). 用 Org-mode 大大節省了時間後,我對Emacs愛屋及烏,興趣高漲了100倍.

反面例子是不少人以啃Lisp教程開始他們的Emacs之旅,堅持下來的人寥寥無幾.

待解決的問題設定優先度

關鍵在於理性地考慮你最迫切須要解決的一個問題.

以這個問題做爲出發點,除此以外均可以妥協.

雖然Emacs無所不能,可是飯也要一口一口吃.有時候退一步進兩步.

例如,我一直覺得Emacs的中文顯示很完美,因此搞不懂爲何有人會在字體配置上花那麼多時間.在陸續接到反饋後,我才明白原來是由於我一直在終端下使用Emacs,終端軟件能夠完美顯示中文字體,因此就沒Emacs什麼事了.須要配置字體的人用的是圖形界面Emacs.

當初只在終端下使用Emacs是由於需鏈接到遠程服務器.我認爲這是重點.甚至爲此放棄了漂亮的配色主題(後來發覺此犧牲毫無必要).

因禍得福,由此也避免了圖形界面版本的全部問題.

站在巨人的肩膀上

這方面我是個負面榜樣.剛開始抱着玩的心態,處處找有趣的配置粘貼到個人配置中去.

這是浪費時間!

我應一開始就照抄世界級大師 Steve PurcellEmacs 配置.

警告,Purcell 總愛試用最新的 Web 開發的新技術,對他而言穩定性不是第一位的,若是你有熱情和能力,願意一塊兒折騰,那麼水平會提升很快.

這個若是是很重要的前提,當我上了Purcell的船時,我已有10年開發經驗,精通多種語言.

如你不肯折騰,那至少不要重複個人錯誤,不要質疑,不要創新,跟着高手作.直說了把,你是初學者,開始階段應以模仿爲主.這點怎麼強調也不過度!

爲了加深印象,讓我再舉一例.有人向我反映,Emacs 快捷鍵太多,背起來壓力很大.個人建議是,拿高手配置來用,而不是強加給本身背快捷鍵這樣無聊的任務.你會發覺高手已安裝了名爲smex 的插件,使直接輸入命令比快捷鍵還快.

若是你還未信服,請再考慮一下個人理由:

  • 文章標題是 一年成爲高手,不是一年入門.
  • 高手是世界級別的高手,不是關起門來一個小圈子內的高手
  • 我就是這麼作的,你能夠看看一年內我給他報了多少 bug
  • 說究竟是態度問題,若是你真下定決心,考慮到Purcell的天賦和勤奮,追趕他的最好辦法只有加入他
  • 要超越高手就必須瞭解其標杆在哪,你須要一年時間去模仿去學習
  • 基於Purcell的配置給他報bug(甚至是提交補丁),你就是考慮到了他未考慮到的問題,至少在這點就超過他了,日積月累就很可觀了.

好吧,你如今信服了.可是你是否 真正理解 了?

好比你是否立刻推論到:即便不用高手的配置,也可在github上訂閱(watch)高手配置,其更新通知等價於免費的維護服務.

報bug

像武俠小說那樣拜高手爲師是白日作夢.惟一能讓高手指點的辦法是先付出.最可靠的付出就是報bug.

我就是這樣學到一些高級Lisp技巧的.

不要有報bug低級的想法.不少高手都是樂於且善於報bug.卻是菜鳥喜歡從新發明輪子.

幫助高手,你的起點就高,還有獲得指點的好處.

持續改進

前提是起點高,要在高手已有工做上改善.即便是微小的改善,若是堅持一段時間,就是巨大的進步了,你就能夠在這一點上笑傲江湖.

再找出另外一高手須要改善的地方,使用一樣的方法.

例如,默認在Emacs中移動子窗口焦點不是很方便.需按"C-x O"屢次.我找到了emacs插件switch-window,只要按"C-x O"一次,會有提示子窗口編號,接下來只要輸入編號就能夠了.但還有改善空間,我又找到了window-number.el,只要按"M-NUM"就能夠了.

window-number.el已完美,但Alt鍵仍是有點慢,我結合evilevil-leader,能夠按逗號和數字飛速切換子窗口了.

加入社區更上一層樓

最重要的是專注.

例如,Quora.com上有不少有趣的話題.請剋制興趣,不去定閱和Emacs無關的話題.

Reddit

Reddit是最好的.優勢是一直能訪問.

Google Plus

Google Plus 貼子質量高.例如,我加入了 Linkedin和Facebook的Emacs論壇,目前都退出了.不是它們不專業,只是Google Plus討論技術層次較高.

目前人氣不如reddit,緣由在於Google.

GitHub 是 geek 雲集的地方

GitHub 的版本控制服務很好.如今它的社區化傾向愈來愈強了,我喜歡.

例如,能夠看一下 https://github.com/search?p=1&q=stars:>20+extension:el+language:elisp&ref=searchresults&type=Repositories 上最酷的 Emacs 插件.

Emacs牛人的博客

最好的是Planet Emacsen,多個Emacs博客的集合.

Quora.com

我偏心的是"列舉最有用的命令"之類的具體問題.不少回答大開眼界.即便我已精通Emacs.

那種"如何入門"的問題,人人都能插上一腳.即便有高水平的回答,也淹沒在衆多平庸回答中.

若是你的問題就是比較泛泛而談的,從一個能測量水準的具體問題入手找到高手,而後看高手是如何回答那些比較泛的問題的.

在 twitter 上以 "emacs :en" 按期搜索

twitter人多,更新結果快.

之因此加上":en"是由於要排除日文內容.

在 stackoverflow 上搜索相關討論

google "emacs-related-keywords site:stackoverflow.com"

我會按期搜索,同一帖子反覆精讀.由於討論質量很高.

http://emacs.stackexchange.com 是Emacs專門的問答子社區.

到 Youtube 上看 emacs 相關的視頻

例如,我就是看了 Google Tech Talks 上這個 Org-mode 做者的介紹 而愛上 org-mode.

不過Youtube搜索結果是最佳匹配的.因爲相關視頻並很少,如按照默認算法,每次老是那幾個.因此若是關注最新進展,搜索應以時間排序.

讀書最有效

 

EmacsWiki

EmacsWiki 是社區維護的文檔,是最酷插件和最佳實踐的集合點.

有人抱怨文檔太亂,質量良莠不齊.前者我有同感.後者不贊同.EmacsWiki文檔質量至關高,因其是 惟一的 半官方文檔.忍受其亂中有序的現狀吧.

最佳閱讀方法是,選定一特定主題,從頭讀到尾.這樣對最新進展都瞭解了.是否要採用其建議另當別論.

Emacs Lisp 書籍推薦(可選)

Bob Glickstein的Writing GNU Emacs Extensions是最好的.

生動,例子豐富.做者用心安排了書的結構.例如,很早就介紹了defadvice的用法.defadvice 是Emacs Lisp的精華.

Xah Lee 提供付費Lisp教程也至關不錯.

Steve Yegge的Emacs Lisp教程

他的Emergency Elisp很簡潔.我特別喜歡"Statements"一章.

知識管理

不要低估長期管理的累積效應.

正面例子參考Steve Purcell的配置. 2000年開始14年的維護! 8年github記錄! 1000多顆星的配置決非浪得虛名.

知識積累的越多,這些知識之間的聯繫就會越多.聯繫增加的速度是以指數的方式增加的.如從頭來過,意味着積累的知識的書面記錄丟失了.損失是很大的.基數已歸零,增加的量又能有多少.

因此決不要重置配置!

這也是後文談到爲何要用工具保存配置和知識的緣由.

配置歸入 github 的版本控制

個人配置見 https://github.com/redguardtoo/emacs.d.

版本控制能夠認爲是一個集中式的知識管理,任什麼時候刻任何地點對配置的修改都要及時上傳合併 (merge).這是積累能力的關鍵.

共享實際也是一種利己行爲,有不少人使用個人配置,等於幫我測試.

將相關資料 (如電子圖書,博客文章) 備份

我將全部資訊都放在 dropbox 的服務器上,這樣資料就同步到個人智能手機和個人平板電腦上,我可利用空閒時間學習.

點擊這裏註冊 dropbox 賬號.注意,dropbox 客戶端徹底能夠在國內使用,雖然訪問其首頁可能有點問題.

我還寫了許多博客文章.這些文章都存在org格式的文件中.最後發佈的靜態博客也歸入版本控制,參見http://github.com/redguardtoo/blog.binchen.org.

第三方插件推薦

初學者的問題是裝了太多插件,管理成了問題.

我建議的原則是少而精,被少數最優秀的插件培養出品味後,可自由挑選適合的.

標準以下:

  • 高品質
  • 常更新
  • 很強大

全部插件均可經過包管理器下載.

如下是清單:

名稱 說明 同類插件
Evil 將 Emacs變爲Vim 沒有
Org org-mode,全能的筆記工具 沒有
company-mode 自動完成輸入,支持各類語言和後端 auto-complete
expand-region 快捷鍵選中文本,可將選擇區域伸縮 沒有
smex 讓輸入命令變得飛快 沒有
yasnippet 強大的文本模板輸入工具 沒有
flymake 對不一樣語言作語法檢查 flycheck
helm 自動完成,在其上有插件完成具體功能 ido
ido 和helm相似,helm和ido可同時用 helm
js2-mode javascript的主模式,自帶語法解釋器 js-mode
w3m 網絡瀏覽器(需安裝命令行工具w3m) Eww
simple-httpd Lisp 寫的 Web 服務器 elnode
smartparens 自動輸入須要成對輸入的字符如括號 autopair
window-numbering.el 跳轉到不一樣的子窗口 switch-window.el
web-mode 支持各類 HTML 文件 nxml-mode
magit 玩轉git 沒有
git-gutter.el 標記版本控制的diff(支持subversion) 沒有

Emacs是一種生活方式

牛人其餘方面也很牛.觸類旁通你收穫會不少.

Sacha Chua 就是這樣一個有牛人氣質的女孩,這是她的 Youtube 錄像. 她學習的方式是 讓 Emacs 自動將手冊語音合成,這樣她在房間裏走來走去的時候也能夠聽文檔了.

我如今有意識地整理高手名單,觀察他們 除了Emacs外 用什麼工具.

例如, js2-mode 的維護者Masafumi Oyamada(網名mooz)也開發了keysnailpercol. 特別是percol,使我命令行效率提升了10倍.

這個階段可稱之爲 心中有劍,手中無劍.

是否用Emacs不重要了,重要的是爲所欲爲.例如,不少人爭論哪一個編輯器自帶的文件管理較好.我從mooz那學到大招後,就跳出五行外,不在三界中了.

付之於行動

如何行動因人而異.

關鍵是真正理解本文要點.

例如,你是否意識到以前的章節意味着如下行動:

  • 找出全部插件的做者
  • 在Quora/Twitter/Github/Reddit/Google+上跟隨他們
  • 通讀他們已發表的貼子

答疑

 

菜鳥怎麼開始

https://github.com/redguardtoo/emacs.d 參考"Install stable version in easiest way"一節.

只要點擊下載兩個zip文件就能夠了,不需Git的任何知識.

Steve Purcell 的配置是否有文檔能夠參考?

除了 README 外沒有,我主要是經過看 EmacsWiki 和源代碼來了解.竅門是源代碼文件的頭部有使用指南和做者的聯繫方式.

高手的配置是否過重量級?

高手的配置都是輕量級的,由於他們知道如何優化.

好比有種叫Autoload的技術. 只有用到模塊的某一功能時那個模塊纔會被載入內存. 我推薦的高手都知道這類技巧.

除了Purcell的配置,還有其餘高手的設置嗎?

搜了下github:

有沒有更簡單的配置?

可用 個人配置

  • 去掉了Git依賴.
  • 網絡不是必須的
  • 安裝了拼音輸入法
  • C++支持強大

注意,Purcell做爲頂尖Web開發者,會試用最新的Web技術,而個人配置Web類插件更新會滯後一段時間.另外個人工具鏈和Purcell不徹底一致.你本身權衡了.

該使用Emacs的哪一個版本

目前穩定版是Emacs 24.3 或 24.4,建議不要用高於此版本的Emacs.

一般不用擔憂版本問題.主流的Linux發行版會處理.

Vi高手要轉陣營嗎?

嘿嘿,我也是Vi精通後轉到Emacs的.就是由於Emacs的強大(例如和 gdb 的完美結合)以及其腳本語言是Lisp.

固然Vi的多模式編輯和快捷鍵比Emacs要高效得多,因此最佳方案是Vi+Emacs.

目前我用Evil, 在Emacs下模擬Vim,結合二者優勢.

如今我是 神用編輯器之神!

警告,我默認啓用了Vim的快捷鍵,不習慣可打開~/.emacs.d/init.el,將其中一行代碼註釋掉,細節參考README.

爲何不少Vim高手不能接受Evil?

由於他們對Vim快捷鍵作了深度配置.Emacs默認要常常按Ctrl鍵,如自定義的Vim快捷鍵也用Ctrl鍵,不免有衝突.

解決辦法是你們都使Leader(Vim直接支持,Emacs需第三方插件).

還有一個辦法是呆在Vim的溫馨區裏.如能忍受沒有org-mode和lisp的生活,那麼不會有問題.

如猶豫不決,請重讀"態度決定一切"一節.

我一旦認識到Evil和Evil-leader的潛力,馬上把我Vim的設置按Emacs的重設了一遍。

更光輝燦爛的例子就是spacemacs的做者了,無數的github星星表明瞭他的成功.

不習慣默認快捷鍵,怎麼辦?

!

默認快捷鍵通過幾十年考驗至關高效,未成爲高手前仍是要忍.

如必定要在用 Windows 快捷鍵的,可考慮 ergoemacs.

快捷鍵太多記不住怎麼辦?

不必記,我也只記經常使用的十幾個快捷鍵.順其天然,多用記住,不用就忘,很正常.

目前不少高手在用 Smex,可飛快輸入命令,快捷鍵實際上不須要了.

使用牛人配置後,界面有些奇怪的 bug,怎麼改?

不要改! 參考上文站在巨人的肩膀上一章,你以爲奇怪是由於缺少經驗,把某些特性誤認爲是bug.請堅持至少一年.

例如,有人反映右邊第80列處總有一豎線,但願能去掉.

實際上這是一特性,提醒用戶一行寬度不要超過第80列. 這是 每行不要超過 80 列的緣由.

我建議第一年應 儘可能理解而不妄加判斷.

已更新軟件包,可是沒有任何做用,也沒有任何錯誤信息

刪除HOME目錄下的".emacs", "~/.emacs.d/init.el"就是取代原來的".emacs".

若有任何關於如何配置的問題

  • 讀官方教程
  • 善用 google 和我提供的信息

例如,問:在 .emacs.d 中的 init.el 文件起什麼做用?答:google "emacswiki init.el".

使用牛人配置後啓動報錯,如何解決?

先確認已裝上了 你須要的 第三方命令行工具,這些工具是可選的,清單見個人README.

如排除了以上緣由,帶上"–debug-init"參數從新啓動,而後將錯誤信息及環境報告到對應的開發者.

報告時應給出細節.例如不少讀者給個人bug都是因爲第三方插件版本較新引發的,我拿到版本號後,才能下載特定版本已重現 bug.不然只能靠猜,來回郵件浪費不少時間.

牛人的配置太複雜,仍是從一簡單的配置改起好控制

那你就是走我後悔莫及的老路,一我的在黑暗中摸索.開頭興致很高,但現實是殘酷的,碰到複雜問題解決不了.只能逃避,藉口Emacs太複雜而放棄了.

我最終醒悟過來走上光明大道,不少走上岐路的人恐怕就沒這個覺悟和毅力了.

但願本身掌控坦率地說是一個非技術問題,由於沒有自信心,因此有補償心態. 但願經過一種錯誤的方式來證實本身.結局無非是惡性循環.

正確地方法是放下身段至少一年 (我已反覆強調這一點),打好基本功,讀書,虛心向高手學習.

爲何我用了牛人配置後本身額外添加的插件無效

Emacs 是個開放平臺,其衆多插件發佈前並不必定有嚴格的測試.因此插件之間可能有衝突.

這也是我爲何建議初學者直接使用牛人配置的緣由,由於牛人已經解決了衆多兼容性的問題,你只要直接享受他的服務就好了.

即便你發覺了牛人還沒有來得及處理的bug,最有效方法是提交報告給牛人,而不是本身去鑽研Lisp.

我想用 Windows 版本的 Emacs 而不是 Cygwin 版本,怎麼作?

需對命令行操做熟悉.關鍵知識點有兩個:

  1. 設置 HOME 環境變量,由於 .emacs.d 中的某些 elisp 腳本假定 .emacs.d 在 HOME 所指定的路徑中.
  2. Emacs 的某些功能須要使用第三方的命令行工具,這些工具的路徑應該添加至環境變量 PATH 中 (可選,緣由見後面).

如你不知道如何在 Windows 下添加修改環境變量,不知道如何安裝第三方工具,建議仍是先用Cygwin中的Emacs,因它已自帶工具,沒有的話安裝也方便.且在 Cygwin 下環境變量 HOME 默認已設.

第三方命令行工具清單請參考個人.emacs.d 中的 README.

Emacs 在代碼跳轉和自動完成上和商業IDE有差距,怎麼辦?

這個差距說究竟是後端語法解析引擎的問題.一般這個問題都是以微軟的Visual Studio和IBM的Eclipse做參照.

就C++來講目前有用蘋果公司的 clang 的方案,效果不錯.具體用什麼插件來調用這些引擎有不少選擇,不展開了.

實戰中,我一般就用ctags做爲後端引擎,因其通吃全部語言. 雖然解析效果差一點,可是恰當的命名規範(儘可能少重名)能夠彌補.

如ctags不滿意,可考慮用Gnu Global (gtags).

以上討論的都是後端引擎.

就前端界面來講,作的比較好的是company-mode,維護很活躍,你可就特定語言如何配置諮詢其開發者.

Java和C#語言的主力開發工具最好用IDE而不是Emacs.C#又比Java更難在Emacs中使用.緣由你懂的.

網頁瀏覽

強烈建議用Keysnail.

這是最佳的,我已試過 全部 可選項.

郵件

我用Gnus. 但有不少其餘方案.

如你必須訪問Microsoft Exchange Servers, 還要用Davmail.

用了Davmail後, 還能夠用Popfile 來分撿郵件. Davmail+Popfile讓我生活在天堂.

爲何 Emacs 啓動時從服務器 (elpa) 安裝第三方軟件包 (package) 會失敗?

請啓動 Emacs 後,運行 `M-x package-refresh-contents` 以從服務器更新軟件索引,而後重啓 Emacs 便可.

若是你沒有用Emacs24,沒有徹底拷貝高手的配置 (這是本文的中心思想),那麼你須要安裝package.el,細節參考這裏.

Emacs 下載軟件包 (package) 是經過 http 方式,因此若是網絡出問題的話你須要用 http 代理服務器,具體操做見後文.

有些網站 Emacs 訪問不了

在命令行中啓動 Emacs 時加上 "http_proxy=your-proxy-server-ip:port" 前綴.

例如,

http_proxy=http://127.0.0.1:8000 emacs -nw

有些軟件包下載不下來,也不會用代理

那麼就用個人Emacs配置.

和個人配置配套的是我創建的獨立的第三方包服務,請參考其主頁上的README.

早點學習 Emacs Lisp 是否有助於成爲 Emacs 高手?

否,只會起阻礙做用!

Lisp語法和一般的語言不一樣,除非有至關編程經驗(至少10年),通常人都會對其有一點負面情緒(固然是毫無道理的偏見!).學習任何新東西,長期來講興趣最重要.一開始應避免任何負面情緒.

Emacs Lisp又是隻用於Emacs的語言,有大量術語須要掌握.如"Buffer","Yank","Font face",只有資深用戶才能理解.

因此在軟件使用沒有至關基礎前學習其拓展語言是浪費時間.

參考前文關於找到切入點的一節,我推薦的順序是,先用優秀的配置享受到好處,有了興趣後學習Lisp就水到渠成了.

有世界級高手(名字不點了)對個人建議不覺得然,他說Lisp很強大頗有趣,應該先學.

可是他的盲點在於,忘記了本身轉向Emacs前在其餘編輯器上已一覽衆山小了.他用Python拓展Sublime已熟到厭煩,Lisp的奇特語法反而刺激了興趣.編輯器的經常使用術語也不在話下. 而本文針對的是大多數的凡人.

選擇適合本身的路,一年之後天才也好,凡人也好, 達到的高度都是同樣的.

掌握 Emacs Lisp 是不是成爲高手的必要條件?

否.但Lisp是很強大的語言,特色是一切皆可改.當我說"一切"的時候,我就是指字面意義上的"一切",不是修辭上的誇張.

我用過許多編輯器,除了Emacs沒有一個能作到"一切可改"這點 .vim也不行.

因此學點Lisp對提升Emacs水平沒壞處.另外Lisp語法不錯,值得程序員一學.

順便說一下,Lisp很簡單,比VB容易多了,一旦你適應其語法,就會發覺它其實蠻友好的,至少少打不少字.

有必要學習鍵盤宏(Keyboard Macros)嗎?

不必,Lisp足夠了.

可是鍵盤宏生成的Lisp代碼有時候比較有趣,建議你精通Lisp後再來玩玩鍵盤宏.

基本操做我會了,下一步學什麼迷茫中

關鍵是你打算用這把瑞士軍刀作什麼.

前文已強調過以興趣和解決實際問題做爲切入點.

舉一些我本身的例子說明:

  • 我有寫博客須要,懶得用Wordpress那個破界面,因此用org2blog
  • 開發Ruby on Rails程序須要IDE,裝了 rinari
  • 作跨平臺C++桌面開發,裝了cmake-mode
  • 需在多個子窗口間跳來跳去,因此裝了window-numbering.el
  • 大項目需同時調試多種語言,因此裝了evil-nerd-commenter,這樣不用記特定語言的語法就可註釋掉代碼.

如何學習org-mode?

Org-mode簡明手冊 是不錯的中文教程.

最好的英文教程是Carsten Dominik(Org-mode發明者)在google tech talks上的演講.其要點爲org-mode本質是一個文本文件,只要記住按TAB展開或者縮進條目就能夠了.其餘特性可慢慢學.

對於"一切都用Emacs來完成"的觀點你怎麼看?

不要走火入魔.Emacs本質是個平臺,提供了無限可能性.

從實用角度講,Emacs和其餘工具結合有時能更快完成工做(不過在沒有一年的修煉以前 千萬不要猜Emacs不能作什麼).

如下是Emacs不必定能吃獨食的地方:

  • 剪貼簿: 應結合命令行工具xsel(Linux)/pbpaste(OSX)/putclip(Cygwin)
  • Web瀏覽: 用Firefox結合插件如keysnail
  • 遠程登陸管理: 用screen/tmux
  • FTP: 用專門的FTP軟件
  • 文件管理: 用專用軟件
  • Lisp速度比較慢,若有大計算量的工做,交給第三方工具來做.

重點是頭腦靈活,既堅信Emacs無所不能,也適當變通.

聯繫我

這是個人 Twitter 和 Google Plus 以及 微博,也可經過我 email<chenbin DOT sh AT GMAIL DOT COM>聯繫我.我在新浪 weibo.com 上開通帳號 emacsguru.

主力博客爲 http://blog.binchen.org.

我不回答具體配置的問題.如你通讀本文,應知道哪裏找答案更好.

結語

再強調一下本文最重要的觀點:

  • 以 基於解決實際問題產生的興趣引導
  • 徹底照抄世界頂尖高手如Steve Purcell的配置,儘可能避免本身寫Lisp
  • 給高手報bug就是最好的學習,
  • 學習Emacs和 學任何專業技能(拉小提琴,解數學題)的方法論都是同樣的,請參考一萬小時天才理論.

關鍵是你以嚴肅的態度把其看成專業技能學習.

不少人之因此不贊同個人核心觀點,是由於心裏深處還有把Emacs當玩具來炫耀"我有多酷"的意識.

Emacs強大到能夠做爲另類娛樂來博眼球.但本質是專業人士使用的神器.

打個比方,職業殺手對於刀只關心兩件事:

  1. 高效地殺人
  2. 任何環境下均可靠

刀的裝飾是否漂亮或技巧是否本身原創對他並不重要.

Emacs就是那把刀.

如何報bug

本文官方網址爲 https://github.com/redguardtoo/mastering-emacs-in-one-year-guide.

有任何疑問,請在以上網址報bug.這比Email快.因GitHub會以郵件通知我,GitHub郵件永遠歸類至個人最優先文件夾下.

如給我發Email,會淹沒於垃圾郵件中.

不要複製粘帖本文

Emacs 本質上是一個社區和平臺,不斷有新的有趣的人和技術出現.我會按期更新本文.

若是你拷貝粘帖全文,會使本身和他人錯過更新.

我建議分享本文的連接,

from: http://blog.csdn.net/redguardtoo/article/details/7222501/

相關文章
相關標籤/搜索