TWIL #4

瑣事

  • TWIL 系列中斷了大概兩個禮拜。這段時間都在重新尋找自己的職場定位與找工作,等找到新工作之後再把中間這段空白歸納成一篇文章填補回去。

Emacs 入門

入門了快一個月,終於算是有點起色了,Emacs 果然是軟體史上使用曲線最陡的編輯器。稍微歸納一下,要入門大概有以下幾個訣竅:

笨拙沒關係,一直碰就對了

學習 Vim 時不也是如此嗎?一堆快速鍵一開始用腦子硬記根本記不起來。最好的方式還是三不五時去碰,碰久了手指自然而然就記起來了,讓腦子空出來寫文章或是寫程式,學習新的編輯器才有意義。

先不要管事實,要一直說服自己新的編輯器一定比較好用

如果要戰 Vim 或 Emacs 誰好誰壞,戰個三天三夜絕對沒有問題。問題是,如果一直留戀 Vim,那一百年也學不會 Emacs 啊!

Master Emacs in one year

這算是我開始學習 Emacs 之後最難接受的概念,別一開始就自幹設定檔。我記得學習 Vim 沒多久,我就開始搗鼓自己的 .vimrc,開始加一大堆亂七八糟的 plug-in;換到 Emacs 之後,要搗鼓自己的 .emacs 可以,你要先學會 Emacs Lisp,自幹的門檻一開始就高的嚇死人。所以,要自幹 .emacs 最好的方式就是先撿別人的設定檔來用,用到某個功能或快捷鍵真的很不習慣再找方法去改,比起一開始就要從零開始架構整個 .emacs 快很多。

如果你跟我一樣也是從 Vim 跳槽到 Emacs,在這裡推薦一套 Emacs distribution spacemacs

The best editor is neither Emacs nor Vim, it’s Emacs and Vim!
- spacemacs

spacemacs 已經預先包好幾個 Emacs 上對從 Vim 跳槽過來的使用者較友善的 plug-ins:

  • evilextensible vi layer for Emacs,將 Emacs 的環境與快速鍵調整到幾乎與 Vim 一模一樣,例如:ex 指令列;區分 normal mode、insert mode;使用 Esc (Vim 使用者的習慣) 而不是 Ctrl-G (Emacs 使用者的習慣) 來終止操作⋯⋯等。而所謂的 ex 指令列,簡單來說就是 Vim 用來輸入 : 開頭的命令 (例如 :set:nnoremap:bdelete) 的指令列。
  • helm:Emacs 的自動完成框架。有用過 YouCompleteMe 的 Vim 使用者只要一用過就回不去了,在 Emacs 上如果沒有類似的套件真的會很難過。
  • 其他例如 vim-easymotionvim-surroundvim-unimpaired ,spacemacs 維護成員也會視社群意見,選擇要不要把類似的功能打包進 spacemacs。事實上,Emacs 與 Vim 相互參考彼此的功能,然後移植過去的例子不在少數。同樣都是開放原始碼,就不要去計較誰抄襲誰的問題了啦!

我現在基本上都開著 spacemacs 的官方文件 DOCUMENTATION.org,真的想不起來某個指令怎麼用就去翻一下,大部分問題都可以得到解決。有時候甚至會在文件中找到一些之前沒有發現的新功能,例如我就是在這份文件裡得知 spacemacs 有將 vim-surround 移植過去。

最後獻醜一下自己的 spacemacs 設定檔 .spacemacs

Emacs 跟 Vim 類似,單個設定檔用 .emacs、多個設定檔就會新增個 .emacs.d 的目錄把設定檔都塞在裡面。由於 spacemacs 的原理是把整個 .emacs.d 覆寫掉,改放 spacemacs 修改後的 Emacs 設定檔,官方稱之為 Layer,所以另外開了個 .spacemacs 將一些與 spacemacs 有關的設定獨立出來,日後如果使用者想要像我一樣把設定檔擺在 GitHub 上跟別人分享,只要公開 .spacemacs 這個檔案就可以了。

  • 作者: Heng-Yi Wu
  • 文章連結: https://henry40408.com/twil-4/
  • 版權聲明: 本網誌所有文章除特別聲明外,均採用 BY-NC-ND 許可協議。轉載請註明出處!