Emacs 一週體驗

This is emacs!

Emacs 真的不錯用!
Emacs 根本就是聖人嘛!

前言

上個星期心血來潮,決定用 emacs 來處理程式碼,沒想到成果意外不錯,鎮痛期比想像的還短,把該設定的東西弄一弄其實就相當順手了。

配置

老實說,我有點懶地 從頭 打造自己的 emacs 設定,所以我選擇 Spacemacs。Spacemacs 本質上還是 emacs 的插件跟設定檔,但是已經包含了許多較爲 friendly 的功能,像是預覽指令用途等,上手起來相當快速。如果是 Vim 的使用者,emacs 本身也提供了 evil mode,讓部分操作和 Vim 操作相同,也讓人跟快跳坑。

配置大概就是這樣,spacemacs 也很好安裝,因爲本身就是設定檔,git clone 下來後放到指定目錄下後,開啓 emacs 一切就會自行搞定了。(值得一提的是,安裝 spacemacs 後的第一次啓動 emacs 會需要網路環境,來安裝所需要的套件。對,emacs 有 套件庫 可以直接在 emacs 裏面尋找安裝)

常用的快捷鍵網路上有相當多教學,這裏就不介紹了,下面我就來說說個人覺得不錯使用的功能 (內建跟插件混雜討論) 。

Projecttile

這大概是最吸引我的功能之一了。Projectile 是管理專案的程式,簡要來說,每當在 emacs 中開啓一份檔案時,projectile 會利用目錄名稱或是資料夾狀態,判斷該檔案是否處在某一個 專案 之中。如果平時需要在一個以上的專案中遊走,這個功能就相當有用,projectile 會自動將開啓的檔案歸入所屬的專案中,我們可以藉由輸入:

  • SPC p p(evil mode) 或是 C-m p p 切換專案
  • SPC p f 搜尋專案內的檔案 (速度比起 Vim 的 Ctrl-P 快上許多)
  • SPC p b 切換已開啓且同專案的 buffer (buffer 的概念和 Vim 相同)
  • SPC p o 在該專案中已開啓的 buffer 中,用 occur 搜尋關鍵字 -C-c p s s 在該專案目錄中,用 ag (sliver searcher) 搜尋關鍵字

其他還有像是儲存同一專案的檔案,C-c p S,之類的功能。

Desktop saving (session saving)

說起來有些慚愧,一直到最近才知道 Vim 也可以存 session...

這個功能很單純,就是可以把當前開啓的 buffer 存起來,供下次啓動 emacs 後直接開啓已存的檔案。除了 buffer 外,這裏還可以選擇要存取的 local variable,或是選擇只存哪些 mode 下的 buffer (像搜尋模式下的 buffer 就不見得需要存下來)。目前我的用法是設定離開 emacs 時存一份,這樣就不用擔心關機後所有檔案又要重開一次的麻煩。(雖然說,有了 projectile 開檔案不是很大的問題就是了)

Customize

emacs 內建的 GUI 設定程式。所有設定都可以在這裏用 搜尋群組 (group) 的方式找到且設定。例如,使用者可以直接搜尋 “indent-wdith”,或是尋找跟 editor 相關的 group。

xkcd

emacs 好玩的地方就在於他不是純 console application,所以顯示圖片也不是問題!

xkcd 這個插件提供閱讀 xkcd 漫畫的界面,就這樣。

  • SPC a x 開啓 xkcd mode

我想這個插件 (或者說軟體) 真的很好讓人體會到 emacs 被稱爲 神的編輯器 的原因。

結語

整體來說,我很享受使用 emacs 來處理事情的環境,過去在 Vim 上喜歡的插件也都能在 emacs 這邊找到想對應的功能,我想之後 Vim 就先退居到小型專案的編輯工具吧。特別是在像 B2G 或是 Firefox 這類大型專案,使用 Vim 的 CtrlP 效率真的很不優,emacs 剛好滿足了我這樣的使用需求:快速查找關鍵字,快速依檔名搜尋檔案等。

不過 emacs 也不全然符合我的需求,有一個問題我一直搞不定,開啓 emacs 一段時間後,它的 CPU usage 會一直標高不下。這問題我目前還找不到原因,變成在沒有電源的情況下,我必須隨時檢查 emacs 有沒有在作怪,然後決定要不要重新開啓...
(2015/11/28 更新)
問題找到了,貌似是 mode line 上面那隻 Nyan cat 的 bug,一直以來都是它在吃 CPU 效能,關掉後就一切正常了...

總之總之呢,今天開始我除了是 Vimer 外,也正式成爲 emacser (?) 的一員啦!

小抱怨

Ubuntu 14.04 的 emacs 版本太舊,Magit (emacs 的 git 操作界面) 裝不起來...

Comments

comments powered by Disqus