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

做者: 陳斌(redguardtoo)javascript

版本: 20150424html

更新時間: <2015-04-24 Fri>前端

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

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

簡單介紹

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

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

全文結構例如如下:web

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

爲何用Emacs(可選)

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

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

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

比方一個內嵌的插件管理器是最主要的.

例如如下載了第三方插件,假設發覺其有問題,可以在不碰該插件原始代碼的狀況下修復.

插件server關閉了,應可以在自帶的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 做爲其招牌軟件也會維護下去,個人投資永不會貶值.

使用 Emacs 可以立馬開始工做.

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

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

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

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

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

態度決定一切

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

新手的問題是,開始就 盲目 設定了入門必知.有些必知還很是費時間.

以我爲例,

詳細步驟

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

  • "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了.

Reddit

Reddit基本上和G+相同質量.長處是一直能訪問.

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"

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

到 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 的server上,這樣資料就同步到個人智能手機和個人平板電腦上,我可利用空暇時間學習.

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

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

第三方插件推薦

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

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

標準例如如下:

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

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

下面是清單:

名稱 說明 同類插件
Evil 將 Emacs變爲Vim 沒有
Org org-mode,全能的筆記工具 沒有
company-mode 本身主動完畢輸入,支持各類語言和後端 auto-complete
expand-region 按快捷鍵選中當前文本,可以將選擇區域擴展或者收縮 沒有
smex 讓輸入命令變得飛快 沒有
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

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 和源碼來了解.竅門是源碼文件的頭部有使用指南和做者的聯繫方式.

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

從性能和資源消耗的角度來說,高手的配置都是輕量級的.因爲他們知道怎樣優化.

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

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

搜了下github, 這是首頁的結果:

有沒有更簡單的配置?

可用 個人配置

  • 去掉了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,結合二者長處.

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

警告,我默認啓用了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 啓動時從server (elpa) 安裝第三方軟件包 (package) 會失敗?

請啓動 Emacs 後,執行 `M-x package-refresh-contents` 以從server更新軟件索引,而後從新啓動 Emacs 就能夠.

假設你沒實用Emacs24,沒有全然拷貝高手的配置 (這是本文的中心思想),那麼你需要安裝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足夠了.

但是鍵盤宏生成的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 本質上是一個社區和平臺,不斷有新的有趣的人和技術出現.我會按期更新本文.

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

我建議分享本文的連接,

相關文章
相關標籤/搜索