我們從一些大家最常問的問題開始:
很不幸的,還有。只是似乎越來越少…
但如果你看 MELPA(Emacs 的第三方外掛套件庫)的成長速度與活躍程度,應大可放心,Emacs 仍是個使用者群廣大的軟體,不用怕遇到問題沒有解答。
(01 時 45 分 25 秒) caasih: 認真問,跳 editor 的陣痛期大概多長?(凡人 ver. (01 時 45 分 53 秒) letoh: 雖然我還是每天用 vim,但真心覺得 vim 在寫程式這方面實在太弱....靠一堆 addon 應該勉強看得到車尾燈 XD (01 時 46 分 20 秒) letoh: 像我現在主要是改設定檔 看 log 會用 vim (01 時 46 分 38 秒) letoh: 之前用 vim script 寫了不少看 log 和 debug 工具,懶得移植到 emacs 了 XD (01 時 47 分 52 秒) letoh: 然後平常大概除了寫 c 就是寫 python,少了 c-c c-c 的 vim 實在用不下去 XD
我覺得不用想跳不跳的,原本(在 Vim 裡)用的做不好就想辦法弄好,或針對單一功能跳船就好。
我覺得 Vim 要跨出去相對簡單很多,因為 Vim 不太有把所有工作都丟進同一個環境做的習慣,但 Emacs 有....
我其實不覺得這樣比較好,但 Emacs 的整合能力會讓這件事的吸引力變強… 我跳船十幾年了還在抵抗這個引力 XD 現在唯一成功逃脫的是 IRC… 因為真的會無法專心
– letoh
Emacs 雖然適合包辦許多任務,但也不要把 Emacs 想得太萬能。例如圖片顯示絕對就是他的大弱點之一。
妄想用 Emacs 搞定所有事情有賺有賠,使用者投資時間前請詳閱 Emacs 101 公開說明書。
什麼時候不該用 Emacs?這裡有幾個例子:
- Qt 開發 – 這是我個人的經驗,Qt Creator 寫 Qt/C++ 程式比 Emacs 方便太多了,從自動補完到重構都是 Emacs 完全比不上的。
- 想要各種語言的自動補全與重構等 IDE 等級的功能。
- C / C++ ,尤其是 Qt,乖乖用 Qt Creator
- TypeScript 乖乖用 VSCode。
- Vue + TypeScript 乖乖用 VSCode。
- 以上都是我浪費了不知幾十個小時最後得出的結論。這是2018年11月得出的結論,也許未來的 Emacs 在這方面會大有進步吧。
- 看圖
- 慢
- 大圖捲動困難。
- 還看得出色階。
- 加上 Emacs Lisp 是 single-thread 縮圖會 block 住你的 Emacs 到你吐血三升。
- 基本上一切吃重圖片顯示的任務都別妄想 Emacs 能做得多好。
- PDF Reader
- 別被騙了,這堪稱史上最慢的 PDF reader
- 這貨的實做方式是呼叫外部程式把整個 pdf 檔轉成圖片後,才用 Emacs 顯示出來,圖片已經夠慢,這是慢上加慢。
- 在轉檔時整個 Emacs 也是被 blocked 住的,讚吧。
- RSS Reader
- 一樣,Single-thread,下載時 block 住 Emacs。
- 一樣,糟糕的圖片顯示能力。
- 常常遇到
GNU TLS error -19
,不知道是三小(有一部分人會遇到,例如我就碰到了…目前此題無解)。
- 網頁瀏覽器
- 理由同上。
- 大型的(超過一張 A4)試算表
- 別想了,乖乖開 OOo/M$ Office 吧
v- 自訂排版的簡報
- org-ioslide 這類工具只適合做一些簡單排版的簡報。
- 當你覺得不值得花那麼多時間學習、或用起來根本就沒有很順手的話,
- 就請放棄用 Emacs 做這件任務吧。
這要看你要求 Emacs 做到多少事情。
例如 Emacs 已經有為各種語言內建基本的編輯功能與 Syntax highlight,通常不用額外設定就可以直接使用。然而如果你需要 auto completion(例如 Python 的 Jedi),設定就常常會很煩人。這是 Emacs 的弱項,不像 IDE 那樣一裝好連 completion 都有了。雖然 Emacs 本來就只是編輯器。
我個人非常挑剔 UX,所以就會覺得 Emacs 沒有設定過簡直不能用。
不過像 Emacs 台灣社群裡的 kanru 說 Emacs 預設值他就覺得很好用了。甚至有人只有不到 100 行的設定也用得很開心,然而我光 Dired 的設定就超過 100 行了。
是有不少新手包,據說幾乎不用自己寫什麼設定,不過我有強迫症會覺得髒髒的所以從來沒用過。
有套設定包叫做 Spacemacs ,據身邊不少用 Emacs 的朋友說做得相當不錯,已經讓 Emacs 作到幾乎開箱即可用,不過我目前還沒去嘗試過就是了。有興趣的可以自行看看。
– ono hiroko
有什麼關係,反正 Emacs 一啟動後根本就不關的。
Vim 可能就常常開開關關,但不要拿 Vim 的使用邏輯放在 Emacs 上,兩者設計理念差太多了。Vim 一開始就是要做編輯器,但 Emacs 一開始是想做個 Lisp 環境。
如果你是使用 Vim 的 programmer,你可能不會每天開 Vim 寫程式;
如果你是 Emacser,你每天都會把 Emacs 開著放在桌面上。
如果你還是覺得啟動速度太慢,也是有幾種解決方案:
- 使用 use-package 來代替設定檔中的
require
,他能夠惰性地載入 package。- 用 Emacs daemon,讓系統常駐一個 Emacs。
由於兩者我目前都沒有使用過,所以也不方便介紹,有興趣的人可以自行 Google。
– ono hiroko
我個人是沒特別感覺,長時間使用也沒怎樣。
有個很常被提出的解決方案是把 Ctrl 跟 CapsLock 鍵交換,但我個人沒這樣做,因為一般 Ctrl 位置我按了三年半了也沒受傷。所以我無法告訴你這種方法是否真的比較順手。然而有個事實是, Emacs 在設計時的 1970 年代,鍵盤上的 Ctrl 是在現今鍵盤的 Caps Lock 處* ,而確實我聽過周圍的 Emacs 使用者都會把 Ctrl 跟 Caps Lock 給調換過來,他們也表示比較舒服。所以如果你也遇到小指不舒服的狀況確實可以試試。
– ono hiroko
其實要看個人感受喔....
我使用 emacs 7 年後開始發現小拇指有點點不太舒服,所以就將 Ctrl 和 CapsLock 交換了。不過其實我覺得 CapsLock 比較好按就是了 ~– coldnew
個人蠻推薦將 CapsLock 直接變成 Ctrl, 讓 Shift+CapsLock 變成原本大寫切換的功能。 因為 CapsLock 長這麼大顆、離你的小拇指比較近,而且你整天根本不會按到幾次。
– iblis
一樣,看你期望讓 Emacs 做哪些事。
其實說真的,先把英文學好可能比先學會 Lisp 重要得多。先不說 Emacs 自帶的文件全是英文,目前網路上的 Emacs 資源、教學、文件 85% 也都是英文,剩下 14.9% 則是日文,所以努力把英文唸好吧。
如果只是一般使用,不會 Lisp 也沒太大關係。安裝/設定各種外掛也只要按照他們的 README 複製貼上設定檔就行了。
然而如果你想讓 Emacs 完全聽你的話,當個 Emacs 魔法師、寫你需要的外掛的話,當然就要學 Lisp 了。後面會提到入門方法。
筆者從學生時代每天用 Emacs 到現在工作依舊每天用也已經五年多,應該還算有一點資格分享一下這個…,此部份有許多個人觀點與個人使用經驗心得,我無法完全客觀地描述,故請容許我用第一人稱敘述。請審慎採信。
– ono hiroko
- 學一套,幾乎什麼平台都能用。
- Org-mode, Dired 這兩個功能至今依舊打趴其他所有編輯器。
- 尤其 Org-mode 是至今我心目中無人能敵的筆記 + GTD + 出版軟體。(這是我當初學 Emacs 而不是 Vim 的主要理由之一)如果你用 Android 也可以參考一下 Orgzly。
- 有 CLI 界面,可純鍵盤操作,遠端 ssh 操作或 tty 也完全沒問題。
- 很多 UNIX 工具也是採用 Emacs-flavored 的 key-binding,尤其是 GNU 出品的。例如
info
、less
、甚至bash
/zsh
的預設操作方式其實就是模仿 Emacs 的。 - 歷史悠久,所以很多你想得到、想不到的方便功能幾乎都有人做過。舉凡一套完整的 Terminal Emulator、檔案管理員、Git 的前端 、 Serial Terminal到 Twitter 的 client。
- Emacs Lisp 是個頗為完整的語言,還可以順便學 Lisp。拿來做一些常用的文字處理功能甚至拋棄式程式都相當方便,隨時覺得什麼文字編輯操作不順手就順手寫一個,不需要再弄什麼外部程式,例如我自己就常常拿它來:
- 免費又 Open Source,不用擔心被專有軟體綁住,這是個學一次就可以用一輩子的編輯器。
Emacs 的一些缺點:
- 要花時間搞弄設定檔,或者另外抓別人做好的設定包,並不像 VisualStudio Code 那樣開箱即可用。
- 不要看了一些網路上的文章拼命吹噓說 Emacs 是地表最強的 IDE 什麼的就相信了,即使「理論上」Emacs 做得到某某功能到但不代表真的有人做,或者真的做得很好。例如至少我自己現在寫 Qt C++ 或 QML 時還是乖乖開 Qt Creator。為什麼?你用一次就知道了啦…(Qt 已經寫到成精、連自動補全都不需要的人除外)。
- Emacs Lisp 先天的 single-threaded 限制,效率本身並不優秀(自己在寫 LESS 時開 company-mode 發現還蠻容易卡住的…這部份我沒有特別深入底層是怎麼回事,也許問題不在 single-threaded?)。
- Emacs 在尺寸上比 Vim 肥很多。更加上設定檔的關係,不方便放進隨身碟裡到處帶著走。
- 幾乎所有主機上都有 Vim(再怎樣也有 Vi),但不一定會有 Emacs。
- 雖然說歷史悠久套件豐富,但其實有一些很必要的套件用起來令人訝異地還是覺得處於半完成狀態。例如 jade-mode 跟 pug-mode 兩個目前用起來都蠻雷的。mmm-mode 就不用說了,很必要但目前用起來感覺最糟糕但又沒有其他更好代用品的 Emacs 套件(因為經常出問題我甚至直接綁了
f5
專門重新啟動 mmm-mode…)。 參加 COSCUP 甚至面試時說自己用 Emacs 會被別人用像是在看瀕臨絕種的動物的眼神看待(沒有開玩笑)。