如何成爲Emacs高手,像神同樣使用編輯器

Links:

Emacs  Org-mode  -> GTD 最強的任務管理利器

http://www.cnblogs.com/holbrook/archive/2012/04/14/2447754.htmljavascript

http://www.cnblogs.com/holbrook/archive/2012/04/17/2454619.htmlhtml

http://www.360doc.com/content/11/1107/18/7735641_162571835.shtmljava



初學者使用Emacs的難點  

做者: 陳斌(redguardtoo)node

原創時間: 2012-03-06 二git

Table of Contents

1 配置成神同樣的編輯器要花不少時間

抄高手的配置,不要抱着玩玩的心態在低水平上創新.


Steve Purcell的配置 https://github.com/purcell/emacs.d
Matt Briggs的配置 https://github.com/mbriggs/.emacs.d
個人配置(抄Steve Purcell的,加中文和C++支持) https://github.com/redguardtoo/emacs.d

2 太難看

安裝emacs24,而後看這:http://www.emacswiki.org/emacs/ColorTheme

3 記不住那麼多命令,打字太煩

安裝Smex,記住你最經常使用的命令,只要打命令中的關鍵字就能夠匹配.使用Smex後我基本再也不設置快捷鍵.

4 沒有非用不可的功能,總能找到替代品

Org Mode是很是優秀的軟件,能夠用來作筆記,作GTD,寫文檔.我沒有找到替代品.

5 對Vi用戶來講快捷鍵陌生且低效

安裝Evil,emacs版的vim(注意,不是vi),結合Vi的高效和Emacs的強大的編輯器,完美了.

6 對普通用戶來講快捷鍵陌生

試着適應吧,Emacs比Notepad出生的早,因此你不能怪Emacs.

7 Ctrl鍵太難按

交換Caps Lock和左Ctrl.

8 不知道怎麼看幫助


快捷鍵 說明
C-h v 按變量名查找
C-h f 按函數名查找
C-h k 按快捷鍵查找

9 恩,有時候我要用代理(Emacs不少功能需網絡)

在bash下:

export http_proxy=http://127.0.0.1:8000; emacs

使用socks server和tsocks:

tsocks emacs

    

如何成爲Emacs高手,像神同樣使用編輯器

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


做者:陳斌(redguardtoo)

版本號:20140329

更新時間: 2014-03-29 Sat

原創時間: 2012-01-31 Tue

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

1 注意

1.1 個人某些觀點可能有爭議

首先請考慮到我觀點都是通過長期實踐得出的,絕非拷貝自他人.

我相信本文的大部份都是沒有爭議的.

有爭議的偏偏是我最具備原創性的觀點.

個人觀點是,徹底照抄頂尖高手如Steve Purcell的配置,儘可能避免研究本身如何配置Emacs,固然也儘量少寫Elisp代碼.

如下是個人理由:

  • 我文章的標題是 一年成爲高手,不是一年入門.

  • 高手是世界級別的高手,不是關起門來一個特定小圈子內的高手

  • 我就是這麼作的,你能夠看看一年內我給他報了多少 bug.

  • 說究竟是態度問題,若是你真正下定決心了,考慮到Purcell的天賦和勤奮,追趕他的最好辦法顯然只有加入他.

  • 要超越世界級高手就必須瞭解高手的標杆在哪裏,你須要一年的時間去模仿去學習.

  • 你基於Purcell的配置給他報bug(甚至是提交補丁),那你就是考慮到了他沒有考慮到的問題,至少在這個問題上你就超過他了,日積月累成果就很可觀了.

1.2 如何給我報告 bug

本文已放在 GitHub 上,網址爲 https://github.com/redguardtoo/mastering-emacs-in-one-year-guide.

若是有任何疑問,請在以上網址給我報 bug.這比 Email 要快.由於你報的任何 bug 我都會自動收到 GitHub 的郵件通知,GitHub 的郵件永遠會歸類至個人最優先文件夾下.

若是直接給我發 Email,就會淹沒於垃圾郵件中.

1.3 我會長期維護本文

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

1.4 若是你想和我討論本文

歡迎討論,建議在 GitHub 上給我報告 bug.

1.5 不要複製粘帖本文

如前所述,我會長期維護本文,若是你只是拷貝粘帖全文,會使你本身和其餘人錯過最新更新.

若是您想分享本文,最好分享本文的連接,

2 簡介

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

不少文章都是強調 Emacs 有多牛,以激發你的興趣.最有名的大概是王垠Emacs 是一種信仰!世界最強編輯器介紹.

這些好文章讓你激動,你所以定下一個偉大目標 (掌握神同樣的編輯器 Emacs),接下來就是執行了 (如何高效地學習 Emacs).

網上關於"如何作"的文章很少,那些涉及到 "如何作" 的文章,涉及細節多而談方法論少,因此本文的重點就是談談通常方法.

3 爲何要用Emacs(可選)

簡單談談,由於我本文的重點是"怎麼作 ",而不是"爲何 ".

3.1 Emacs 的特色決定了其社區的平均技術水準都不低

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

Emacs 自己並不能給你帶來任何好處,這就決定了其社區成員都是純粹的技術人員,投機取巧的功利主義者對其是沒有興趣.

3.2 和單純的 IDE 比較,Emacs 能夠作的更多更快

這裏的更多並非和 IDE 比支持某編程語言的特性更多,而是指 Emacs 內可完成的通用任務比較多更快捷.

例如,我作開發時碰到難題,須要實時上 IRC 請教國外高手 (工做流包括粘貼個人代碼到 pastebin 或者 gist,在 irc 內提問,看網頁,將解決方案粘貼回來),emacs 集成了 IRC 工具和瀏覽器 (w3m),操做就很方便.

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

固然口說無憑,請看如下兩段高手操做的 youtube 視頻:

3.3 Emacs 是自由軟件基金會開發的招牌開源軟件

我的會喪失開發軟件的興趣,公司會倒閉而中止維護軟件.可是自由軟件基金會會一直存在下去.Emacs 做爲其招牌軟件也會一直維護下去,我在其上投資永遠不會貶值.

3.4 使用 Emacs 能夠馬上開始工做.

軟件是開源的,配置是純文本,並且軟件的資源消耗較小,安裝包很小 (命令行版本的安裝包 30M 左右),因此在任何環境下我均可以用 Emacs 開始工做,overhead 很小.

這在大項目中特別明顯,例如,某項目我須要同時編輯 perl、java、C、bash、SQL,須要遠程編輯在美國服務器上的代碼,網速也不是很快.Emacs 的優點就體現出來了.

3.5 一年指的是充分利用空閒時間,一年後天然水到渠成

我沒說一年內必須什麼事也不幹專門學 Emacs,懸樑刺股沒有短時間利益回報的學習方法是我最反對的.

我同意的方法是,開始階段花極少的時間獲得巨大的回報 (以下文談到的 Org-mode),以興趣作導向.

天天花多少時間取決於我的須要和如何管理,以我爲例,天天八小時上班時間中有不少零碎時間能夠利用,上下班通勤時間有一個小時能夠利用.

3.6 態度決定一切

長期來講你能取得的成就是由態度決定的.

優秀人士的特色:

  1. 敢於接受新事物

  2. 追求更強的過程自己就是目的

  3. 觸類旁通

例如,雖然 Emacs 默認的快捷鍵已很高效,可是我更新了個人快捷鍵操做.保存文件時我原來要按按 "Ctrl+X Ctrl+S",如今按 ",ww".少按了一個鍵,同時手指避免了額外移動一寸去按 Ctrl 鍵.

這彷佛是個微小的改動,由於保存文件並非一個很頻繁的動做.並且放棄熟悉的快捷鍵操做,使用一個陌生的快捷鍵開始也有點不習慣 (後文我提到,我也是一個熟練的 Vim 用戶,可是 Vim 的保存快捷鍵默認是 ":w",並非如今的鍵位).

可是這只是我改進效率的一個開端,我花了幾個月時間把全部的操做都以相似的方法優化了一邊. 而後我又想到了進一步的優化應該有可靠的統計數據爲基礎,因此我安裝了名爲keyfreq 的 Emacs 插件,對於我使用最頻繁的操做從新分配了最方便的快捷鍵.

假設我一開始由於已習慣了 Vim 或者 Emacs 默認的快捷鍵,或由於改進保存文件動做的效率提高過小,因此拒絕改變,那麼就不會有後來的大規模優化鍵位的工程.

或者有人說輸入代碼效率只是軟件開發流程中很小一部分,重要的是 "XXXX(編程思想,架構,框架…)".此所謂顧左右而言它.若是你能觸類旁通,天然能夠猜到一樣的方法和原則也適用於軟件開發的任何一部分," 可是…" 只是不作的藉口罷了.

4 讀官方教程

打開 Emacs 後,同時按下 Alt 和 X 健,輸入 help-with-tutorial(後文中,相似快捷鍵以簡寫 `M-x help-with-tutorial` 代替),回車.

僅需半小時.關於 Emacs 的多難學的謬論能夠休矣,由於半小時的代價微不足道.想一想你去年有多少小時白白虛度了吧.

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

例如,我發覺不少讀者的問題是不知道如何查看變量函數的文檔,這在官方教程中都有說明.

5 以興趣和急需解決的問題做爲切入點

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

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

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

6 站在巨人的肩膀上

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

這是浪費時間!

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

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

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

若是你不肯意過於折騰,那麼你至少不要重複個人錯誤,你不要質疑,你不要創新,你要跟着高手作.好比 Eric Schulte 的 Emacs-starter-kit 很適合初學者.Bozhidar Batsov 的配置 也不錯 (不必定適合初學者).也能夠用個人配置.

直說了把,你是初學者,開始階段應以學習模仿爲主.這點怎麼強調也不過度!

爲了加深印象,讓我再舉一個例子.一些讀者向我反映,Emacs 快捷鍵太多,背起來壓力很大.實際上這是初學者先入爲主的偏見.對高手來講,有了恰當的工具後,快捷鍵不少狀況下並不須要.盲目地去背快捷鍵只會延遲你成 爲高手那一刻的到來.若是你只是複製了高手的配置開始使用而不是糾結於完成背快捷鍵這個無聊的任務,你會發覺高手以安裝了名爲 smex 的插件,使得你直接輸入命令比用快捷鍵還快.因此背快捷鍵也不須要了.

順便說一下,不少高手的配置須要 git 才能更新,這意味着你須要安裝 Git 和 Cygwin(限於 windows 平臺).這是買一送二,我又給你介紹了兩個高手必備的世界級工具.

7 高手都在哪裏

7.1 加入 google plus 的 Emacs 社區

Google Plus 的 Emacs 社區 在此時Geek 的氣場很是強,討論的貼子質量很是高.我上過不少大衆和小衆的 Emacs 社區,這是個人經驗之談.例如,我加入了 Linkedin 和 Facebook 的 Emacs 社區,目前都退出了.並非這些社區不夠專業,只是 Google Plus 討論問題的技術層次比較高.

若是你只能加入一個網絡社區的話,那麼就是 Google Plus 了.

另外,著名 Emacs 用戶 Xah Lee(我的網站爲 李殺網,其帳號名爲 ErgoEmacs) 每週二會在 Google Plus 上組織一次 Emacs 問答.

7.2 reddit 的 Emacs 社區質量也不錯

reddit 上一些討論挺有新意,深度上不及 Google+.

7.3 GitHub 是 geek 雲集的地方

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

例如,能夠看一下 https://github.com/search?p=1&q=stars%3A%3E20+extension%3Ael+language%3Aelisp&ref=searchresults&type=Repositories 上最酷的 Emacs 插件.

7.4 Emacs牛人的博客

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

7.5 Quora.com

我偏心的是"列舉Emacs中最有用的命令"之類的問題.不少回答拓寬了個人眼界.即便我已至關精通Emacs.

8 搜索最新訊息

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

twitter 人多,更新結果快.

8.2 在 stackoverflow 上搜索 emacs 相關的討論

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

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

8.3 使用 google 快訊

每週一次給我郵箱發一次摘要,僅限最佳結果.這樣的話信息質量能夠獲得保證.

8.4 到 Youtube 上看 emacs 相關的視頻

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

注意,Youtube 搜索的結果是最佳匹配的.問題是關於 Emacs 的視頻並不太多,若是按照 Youtube 的算法,我每次搜索看到的老是那幾個錄像.因此若是關注重點是看看 Emacs 社區有些什麼新東西的話,默認搜索結果應以時間排序.

9 將 emacs 配置管理起來

我將 emacs 配置歸入 github 的版本控制,見 https://github.com/redguardtoo/emacs.d.

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

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

10 將 emacs 相關資料 (如電子圖書,博客文章) 管理起來

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

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

11 EmacsWiki

EmacsWiki 是一個社區維護的 Emacs 文檔,能夠認爲是最酷插件和最佳實踐的集合點.

12 Emacs Lisp 書籍推薦(可選)

<Writing GNU Emacs Extensions by Bob Glickstein>是Elisp編程書籍中最好的.生動,例子豐富.做者明顯是高手,而且用心安排了書的結構.例如,他很早就介紹了 defadvice 的用法.我很認同這點,dfadvice 是 elisp 語言的精華.

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

13 認識到 Emacs 是一種生活方式

若是你照着我以上的作法作,就能夠認識到 Emacs 牛人其餘也很牛.Emacs 實際上體現了牛人的一種生活方式.

像那些牛人同樣思考,像那些牛人同樣作事,不要懷疑,不要猶豫,很快你就會發覺本身也開始有些牛人的氣質了.

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

想一想看,這些用 Emacs 的人都是什麼樣的 Geek 啊!因此,我認爲 Emacs 不只僅是一種工具,它是個社區,一種文化.

對我而言,加入 Emacs 社區讓我學會了謙卑.當我明白了 Emacs 的其樸素的設計思想和其強大的可拓展性後,個人感受是敬畏,由於我作不出這樣的軟件.

我既沒有能力把一個編輯器設計成一我的工智能語言 Lisp 的平臺,也不可能花 30 多年的時間對一個軟件精益求精.

14 精品 Emacs 第三方插件推薦

我推薦插件標準以下:

  • 高品質

  • 常常更新

  • 功能強大

全部插件均可以經過 Emacs 的 package manager 下載.

如下是插件清單:


名稱 說明 同類插件
evil 將 Emacs 變爲 vi viper
org org-mode,全能的 note 工具 不知道
org2blog 給 wordpress 寫博客 不知道
company-mode 自動完成輸入,支持各類語言和後端 cedet,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 語法解釋器 javascript-mode、js-mode、js3-mode
w3m Emacs 的網絡瀏覽器(需安裝命令行工具w3m) 不知道
elnode elisp 寫的 Web 服務器 不知道
smartparens 自動輸入須要成對輸入的字符如右括號之類的字符 autopair
window-numbering.el 跳轉到不一樣的子窗口 不知道
web-mode 支持各類 HTML 文件 nxml-mode、nxhtml-mode、html-mode

15 小結

看到這裏你應該很清楚了,個人方法就是以興趣做爲切入點,以天才做爲榜樣,大量閱讀,大量練習.

若是你想得到真才實學,想變得更強,變得更優秀,這就是惟一的方法,惟一的捷徑.

這個方法不是我發明的,從古到今的傑出人士都是這麼作的,若是你須要一點"更科學的"論證,請參考 一萬小時天才理論.

相關文章
相關標籤/搜索