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

做者:陳斌(redguardtoo)javascript

版本:20150317html

更新時間: 2015-03-17 Tue前端

原創時間: 2012-01-31 Tuejava

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

1.1 簡單介紹

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

很是多文章強調Emacs有多牛,但關於"怎樣作"則語焉不詳,即便涉及到"怎樣作",談細節多而方法論少,因此本文就側重方法論.github

全文結構例如如下:web

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

1.2 爲何用Emacs(可選)

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

  • Emacs 的特色決定了其社區水準不低
    Emacs 用 Lisp 開發,Lisp 不一樣日常的語法決定了其開發人員都是資深開發人員,掌握了多門語言.

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

  • 和IDE比較,Emacs 作的不少其它更快
    IDE針對特定語言或框架優化,而Emacs完畢通用任務更有效.

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

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

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

    順便說一下,很是多剛開始學習的人關心的代碼本身主動完畢,幾門主流語言支持都不錯(包含java).

  • Emacs會永存
    我的開發人員會喪失興趣,公司會倒閉.但自由軟件基金會將一直存在下去.Emacs 做爲其招牌軟件也會維護下去,個人投資永不會貶值.
  • 使用 Emacs 可以立馬開始工做.
    軟件開源,配置是純文本,且資源消耗小,安裝包很是小 (命令行版本號 30M 左右),不論什麼環境下均可用.

    這在大項目中特別故意,好比,某項目需同一時候編輯 Perl, Java,C, Bash, SQL, 要編輯遠程server上的代碼,網速不快. Emacs的優點就體現出來了.

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

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

1.3 詳細步驟

在正式開始前,我需要解釋後文會用到的命名慣例,

  • "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多難學的謬論可以休矣.半小時的代價微不足道.想一想你去年了多少個半小時吧.

    這步是必須的,不要跳過!

    最起碼要知道下面命令,

    • "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是因爲需鏈接到遠程server.我以爲這是重點.甚至爲此放棄了美麗的配色主題(後來發覺此犧牲毫無必要).

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

  • 站在巨人的肩膀上
    這方面我是個負面模範.剛開始抱着玩的心態,處處找有趣的配置粘貼到個人配置中去.

    這是浪費時間!

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

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

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

    如你不肯折騰,那至少不要反覆個人錯誤,不要質疑,不要創新,跟着高手作.比方 Eric Schulte 的 Emacs-starter-kit 很是適合剛開始學習的人.Bozhidar Batsov 的配置 也不錯 (不必定適合剛開始學習的人).也可用 個人配置.

    直說了把,你是剛開始學習的人,開始階段應以模仿爲主.這點怎麼強調也只是分!

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

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

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

    • Google Plus是最好的
      Google Plus 此時氣場很是強,貼子質量高.我上過很是多社區,沒有比它更好的了.好比,我增長了 Linkedin和Facebook的Emacs論壇,眼下都退出了.不是它們不專業,僅僅是Google Plus討論技術層次較高.

      如你僅僅能增長一個社區,那就是Google Plus了.

    • Emacs牛人的博客
      最好的是Planet Emacsen,多個Emacs博客的集合.
    • Quora.com
      我偏心的是"列舉最實用的命令"之類的詳細問題.很是多回答大開眼界.即便我已精通Emacs.

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

      假設你的問題就是比較泛泛而談的,從一個能測量水準的詳細問題入手找到高手,而後看高手是怎樣回答那些比較泛的問題的.

    • 在 twitter 上以 "emacs :en" 按期搜索
      twitter人多,更新結果快.

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

    • 在 stackoverflow 上搜索相關討論
      google "emacs-related-keywords site:stackoverflow.com"

      我會按期搜索,同一帖子重複精讀.因爲討論質量很是高.

    • 到 Youtube 上看 emacs 相關的視頻
      好比,我就是看了 Google Tech Talks 上這個 Org-mode 做者的介紹 而愛上 org-mode.

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

1.4 讀書最有效

  • 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"一章.

1.5 知識管理

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

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

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

因此決不要重置配置!

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

  • 配置歸入 github 的版本號控制
    個人配置見 https://github.com/redguardtoo/emacs.d.

    版本號控制可以是以爲一個集中式的知識管理,不論什麼時刻不論什麼地點對配置的改動都要及時上傳合併 (merge).這點是積累能力的關鍵.

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

  • 將相關資料 (如電子圖書,博客文章) 備份
    我將所有資訊都放在 dropbox 的server上,這樣資料就同步到個人智能手機和個人平板電腦上,我可利用空暇時間學習.

    點擊這裏註冊 dropbox 賬號.注意,dropbox client全然可以在國內使用,儘管訪問其首頁可能有點問題.

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

1.6 第三方插件推薦

剛開始學習的人的問題是裝了太多插件,管理成了問題.

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

標準例如如下:

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

所有插件均可經過包管理器下載.

下面是清單:

名稱 說明 同類插件
Evil 將 Emacs 變爲 vim 沒有
Org org-mode,全能的 note 工具 沒有
company-mode 本身主動完畢輸入,支持各類語言和後端 auto-complete
expand-region 按快捷鍵選中當前文本,可以將選擇區域擴展或者收縮 沒有
smex 讓輸入 M-x command 變得飛快 沒有
yasnippet 強大的文本模板輸入工具 沒有
flymake-xxxx 以 flymake 開頭的所有包,針對不一樣語言作語法檢查 flycheck
helm 選擇和本身主動完畢的框架,在其上有很是多插件完畢詳細功能 ido
ido 和 helm 相似,我是 helm 和 ido 同一時候用 helm
js2-mode javascript 的 major-mode,自帶 javascript 語法解釋器 js-mode
w3m Emacs 的網絡瀏覽器(需安裝命令行工具w3m) Eww
elnode elisp 寫的 Web server 不知道
smartparens 本身主動輸入需要成對輸入的字符如右括號之類的字符 autopair
window-numbering.el 跳轉到不一樣的子窗體 switch-window.el
web-mode 支持各類 HTML 文件 nxml-mode

1.7 Emacs 是一種生活方式

意思是說,牛人其它也很是牛.觸類旁通你收穫會很是多.

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

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

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

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

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

1.8 答疑

  • 我是絕對菜鳥,該怎麼開始
    https://github.com/redguardtoo/emacs.d 參考"Install stable version in easiest way"一節.

    你僅僅要點擊下載兩個zip文件就可以了,不需要git的不論什麼知識.

  • Steve Purcell 的配置是否有文檔可以參考?
    除了 README 外沒有,我主要是經過看 EmacsWiki 和源碼來了解.竅門是源碼文件的頭部有使用指南.
  • 高手的配置是否過重量級?
    從性能和資源消耗的角度來說,高手的配置都是輕量級的.因爲他們知道怎樣優化.

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

  • 有沒有更簡單的配置?
    可用 個人配置
    • 去掉了Git依賴.
    • 網絡也不是必須的
    • 已安裝了拼音輸入法
    • C++ 支持強大

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

  • 該使用Emacs的哪一個版本號
    眼下穩定版是Emacs 24.3.1,建議不要用高於此版本號的Emacs.一般不用操心版本號問題.主流的Linux發行版會處理.

    24.4儘管已公佈,但還有些小問題,我建議再等半年左右.也也就是說,2015年下半年可以考慮升級.

  • 我已經是Vi高手,爲何要轉陣營?
    嘿嘿,我也是Vi精通後轉到Emacs的.就是因爲Emacs的強大(好比和 gdb 的完美結合)以及其腳本語言是Lisp.

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

    眼下我用Evil, 在Emacs下模擬Vim,結合二者長處.

    現在我是 神用編輯器之神!

    警告,Steve Purcell和我默認都啓用了Vim的快捷鍵,不習慣可打開~/.emacs.d/init.el,將當中一行代碼凝視掉,細節參考README.

  • 爲何很是多Vim高手不能接受Evil?
    因爲他們對Vim快捷鍵作了深度配置.Emacs默認要經常按Ctrl鍵,如本身定義的Vim快捷鍵也用Ctrl鍵,不免有衝突.

    解決的方法是你們都使Leader(Vim間建支持,Emacs需要安裝第三方插件).

    另外一個辦法是呆在Vim的溫馨區裏.假設你能忍受沒有org-mode和lisp的生活,那麼不會有其它問題的.

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

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

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

    如必定要在用 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 是個開放平臺,其衆多插件 release 以前並不必定有嚴格的測試.因此插件之間可能有衝突.

    這也是我爲何建議剛開始學習的人直接使用牛人配置的緣由,因爲牛人已經攻克了衆多兼容性的問題,你僅僅要直接享受他的服務便可了.

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

  • 我想用 Windows 版本號的 Emacs 而不是 Cygwin 版本號,怎麼作?
    需對命令行操做熟悉.關鍵知識點有兩個:
    1. 設置 HOME 環境變量,因爲 .emacs.d 中的某些 elisp 腳本假定 .emacs.d 在 HOME 所指定的路徑中.
    2. Emacs 的某些功能需要使用第三方的命令行工具,這些工具的路徑應該加入至環境變量 PATH 中 (可選,緣由見後面).

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

    第三方命令行工具清單請參考個人.emacs.d 中的 README(Steve Purcell 沒有列這些工具,因他僅僅用Mac).

  • 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 啓動時從server (elpa) 安裝第三方軟件包 (package) 會失敗?
    請啓動 Emacs 後,執行 `M-x package-refresh-contents` 以從server更新軟件索引,而後從新啓動 Emacs 就能夠.

    假設你沒有使用 Emacs 24,並且沒有全然拷貝高手的配置 (這是本文的中心思想),那麼你需要安package.el,細節參考這裏.

    Emacs 下載軟件包 (package) 是經過 http 方式,因此假設網絡出問題的話你需要用 http 代理server,詳細操做見後文.

  • 有些站點 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前在其它編輯器上(如Sublime之類)已經是一覽衆山小了.他用Python拓展Sublime已熟到厭煩,Lisp的奇特語法反而刺激了興趣.編輯器的常用術語也不在話下. 而本文針對的是大多數的凡人.

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

  • 掌握 Emacs Lisp 是不是成爲高手的必要條件?
    否.但Lisp是很是強大的語言,特色是一切皆可改.當我說"一切"的時候,我就是指字面意義上的"一切",不是修辭上的誇張.

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

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

    順便說一下,Lisp很是easy,比VBeasy多了,一旦你適應其語法,就會發覺它事實上對程序猿蠻友好的,至少少打很是多字.

  • 有必要學習鍵盤宏(Keyboard Macros)嗎?
    不是必需,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軟件
    • 文件管理: 用專用軟件

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

1.9 聯繫我

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

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

我不會回答詳細配置的問題.假設你通讀本文,應知道哪裏找答案更好.

1.10 結語

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

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

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

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

Emacs固然很是強大,可以做爲一種另類娛樂來博眼球.但是它的本質是爲專業人士使用的神器.

讓我打個例如,職業殺手對於殺人的刀僅僅關心兩件事:

  1. 高效地殺人
  2. 不論什麼環境下均可靠

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

Emacs就是那把刀.

相關文章
相關標籤/搜索