Skip to content

Latest commit

 

History

History
47 lines (31 loc) · 3.72 KB

07-學習Emacs Lisp.org

File metadata and controls

47 lines (31 loc) · 3.72 KB

Emacs 一般使用應該已經可以符合你的需求了,然而到後來也許你會越用越多,開始對於現有 Packages 與操作方式不滿,可能會開始想要動手寫自己想要的功能,甚至 Package、major/minor mode,這時就得學一點 Emacs Lisp 了。會很難嗎?我自己的經驗是基本的部份並不困難,其實我自己開始用 Emacs 時根本完全不會寫程式,學會的第一個程式語言就是 Emacs Lisp。

網路上教 Emacs 的文章已經太多太多了,但要學 Emacs Lisp 就有點困難了,因為不知該從何下手。

個人覺得學 Emacs Lisp 其實不一定要靠 GNU 提供的那厚厚一堆文件,對我來說我就沒啥耐心看那個…下面整理了一些 Emacs Lisp 的學習資源,不多但都非常值得參考。

聖經

適合慢慢當書來翻

這是本寫得相當清楚易懂的 Common Lisp 教學,包含了非常多的範例。雖然是 Common Lisp 而不是 Emacs Lisp,但如果你完全不懂 Lisp,我個人很推薦這本,有了這些基礎 Lisp 概念對於學習 Emacs Lisp 依舊是非常好的入門方式。我當初完全不會寫程式時就是讀這本而學會 Emacs Lisp,非常推薦!

  • Xah Emacs TutorialXah Emacs Lisp Tutorial : Xah Lee 的 Emacs 教學,應該已經成為很多初學者的學習指南。整理了超多 Emacs Lisp 的範例與實戰經驗,例如要怎麼用 elisp 把一個網站中的 HTML 標籤替換掉等等。
  • ElispCookbook : Emacs wiki 上的超棒條目,有很多很常見的文字處理用法整理。

搜尋用

  • GNU 文件 沒事基本上不會拿起來翻的東西,但完整性沒話說。查詢一些 Emacs Lisp 獨有用法時(例如 save-excursion ),GNU 文件就非常非常有用。
  • Emacs 內建文件 : 不要忘記這個,忘記 function 用法時他非常有用(例如我老是記不得 match-stringstring-match 的差別)。

雖然前面提過但還是再強調一次:查詢 function 是 C-h f ,查詢 variable 是 C-h v

  • Emacs Wiki 龐大的社群,很多知名的 .el 在上面都找得到,但這主要也是用搜尋引擎找內容。

太多啦真的要看完嗎?

其實不用,就跟前面講的一樣,我們不需要讀完整本字典才能開始開口說英文。我們現在就假設你已經完全理解之前所講的所有東西,然後開始來從無到有試著用 Elisp 寫出一點你想要的功能試試。

在這之前,如果你在這之前完全不懂 Lisp,建議請先讀完 ANSI Common Lisp 第二章:歡迎來到 Lisp,如果你已經有程式基礎那應該蠻快能掌握一點 Lisp 的基本概念。如果你在這之前完全不懂程式,那更務必詳讀此篇、試試每個範例並思考原因。

別忘了,你可以在 Emacs 中任何地方,用 C-x C-e 來試著 eval 看看 ANSI Common Lisp 一書中的範例。

雖然 Common Lisp 與 Emacs Lisp 有著不小的差異,但對初學者而言是不會差太多的。

拿 Common Lisp 教材來學 Emacs Lisp 的話,最需要知道的幾個差異是:

  1. Emacs Lisp 是有區分大小寫的(Case-sensitive),Common Lisp 則無。
  2. Emacs Lisp 比較常用 setq 而不是 setf
  3. Emacs Lisp 的 Array 是用 [1 2 3] 而不是 Common Lisp 的 #(1 2 3)