Emacs 簡介

之前簡單介紹過 vim 了,所以就想也來簡單介紹一下 emacs。 加上之前在推坑學弟用 emacs org mode,如果不知道 emacs 基本操作也很難繼續使用。 所以就誕生這篇文章啦!


在開始介紹之前先講講一點我接觸 emacs 的原因。 基本上我碰 emacs 完全就是想說作為 vim 的對手以及古老的編輯器之一, 我應該找時間來玩玩看。 加上曾聽說 emacs org mode 是個強大的筆記工具, 但聽別人說一點感覺的沒有,還是要實際自己用過才有感覺。 基本上我時候使用 vim 居多,使用 emacs 主要都是在用 org mode (不管是寫文章還是做投影片、還可以作時間規劃)。 再加上安裝了提供 vim key binding 的套件,所以對 emacs 原生的按鍵功能並不算太熟(雖說比起不會用的人來說算熟了)。 對於 emacs 我能介紹的肯定是比 vim 還要來的少的,所以真的就是很基本的介紹。 那麼我們來進入正題吧!

Emacs 是什麼

依照一般的套路,當然要先講講 Emacs 到底是什麼(但會看這篇的人應該也多少有些認識了吧)。 Emacs 是 Editor MACroS 的縮寫,也就是說是個提供巨集功能的編輯器。 最初的開發者是提出 GNU 計畫的 Richard Stallman 與 Guy Lewis Steele Jr.1, 現在也仍作為 GNU 計畫下的項目持續開發中。 Emacs 與 vim 一樣提供了終端機版與圖形介面, 但是和 vim 較適合在終端機使用相反,Emacs 使用圖形介面會有完整的功能。 這跟 Emacs 採用修飾鍵(Ctrl, Alt 等)來做編輯功能而不是像 vim 採用符號鍵有關。 而這也使得 Emacs 的編輯方式比起 vim 更像是現在常見的筆記本、Nodepad++、Vscode 等編輯器, 同時也有人戲稱 Emacs 是 Escape, Meta, Alt, Ctrl, Super (都是鍵盤上的修飾鍵)的縮寫。 Emacs 不像 vim 有多種編輯模式,而是讓每種檔案類型有各自的主模式,然後可以疊加上不同的副模式。 主模式主要提供檔案類型相關的設定(縮排、註解等),而副模式多是按鍵設定或是介面、功能上的輔助。 加上 Emacs 本身也是在 Lisp 這個古老語言的直譯器上堆出來的, 這些特性使得 Emacs 的可定制性相對其他編輯器較為強大。 甚至有人戲稱 Emacs 是偽裝成編輯器的作業系統。 Emacs 的簡單背景介紹到此為止,接著談談 Emacs 的基本使用吧。

Emacs 基本操作

首先,比起第一次進入 vim 按什麼鍵都不知道會發生什麼事。 第一次進入 Emacs 至少還可以直接輸入文字,方向鍵也可以正常使用。 因為 Emacs 一般狀態下跟常見編輯器相同是在插入模式。 而問題就在於要如何存檔與離開編輯器,只要可以做到這兩個功能,至少就能做簡單的文字編輯。 雖然 GUI 還有選單列可以救,但終端機版可就救不了了,連怎麼離開都不知道。 前面提到,Emacs 編輯功能主要是透過修飾鍵來做到的, 這兩個功能想當然爾也要配上 Ctrl 之類的按鍵。 想要存檔,我們可以按下 C-x C-s (save),而若是要離開編輯器則是按下 C-x C-c (cancel)。 在這邊習慣上會用 C- 來表示 Ctrl 鍵,所以 C-x C-s 表示按著 Ctrl 鍵按下 x 鍵, 然後再按著 Ctrl 鍵按下 s 鍵。 值得一提的是,因為 Emacs 中有很多功能,如果只單純用一個修飾鍵配一個符號是表示不完的, 所以許多編輯功能都是透過一串的按鍵組合觸發的(可以想像 Emacs 縮寫的戲稱了嗎)。 C-x 就提供了最為按鍵前綴的功能,很多編輯功能都要先按下 C-x 再按下其他鍵。 C-c 也和 C-x 一樣可以作為前綴鍵,而這多半是被副模式或是套件所採用, 主要編輯功能的前綴多是 C-x

多一點操作

好啦,雖然前面講的兩個功能就能做基本的編輯,但我想多介紹一些其他的按鍵。 學會這些有個主要的好處,那就是在 gnu 或是 *nux 上的軟體多會採用 Emacs 的按鍵按法, 所以學一招就可以用在很多地方。

首先講講 Emacs 中不用方向鍵移動游標的方法, 上下左右分別對應: C-p (previous), C-n (next), C-b (backward), C-f (forward)。 比起 vim 的上下左右算比較好記了(英文縮寫),但使用上其實蠻不好按的。 不過如果克服這關,其實也蠻好用的(在 bash 中)。 在縱向移動中除了 C-p, C-n ,還可以用 C-v, M-v 來做 page down 與 page up。 這裡 M- 代表 Meta 鍵,在現在鍵盤多對應到 Alt 鍵。 至於橫向移動可以用 C-a (第一個字母), C-e (end) 來移動到行首與行尾。 另外可以用 M-fM-b 在 word 上左右移動。

最後講幾個簡單的編輯操作。 <BS> (backspace) 與 C-d 分別可以刪掉游標左邊與右邊的一個字元, 而 M-<BS>M-d 則是刪掉游標左邊與右邊的一個 word。 C-t (transpose) 可以將游標左右邊的字元位置交換,這個按鍵蠻好用的,很常用到。 C-k 會刪掉游標右邊到行尾的所有字,配合 C-a 就可以直接刪掉整行文字了, 我自己是很常在 bash 中使用。

基本上這些應該就蠻夠用了,想要更深入的了解 Emacs 操作, 可以在 Emacs 中 C-h t 進入 30 分鐘簡單教學文件, C-h r 閱讀 Emacs 文檔, 以及 C-h i 觀看所有相關 info 文檔。


嘛,這篇文章基本上就是個簡單的導入,希望大家認識一下這個古老的編輯器。 有興趣的話,強力推薦可以學學 Org Mode,真的超好用,但學習曲線有點高。 也許有空可以簡單介紹一下 Org Mode。 最後的最後推銷一下自己的 emacs 設定檔(雖然大家設定檔各有所好),有興趣可以到這裡看看。 注意一下我設定檔把一些 GUI 功能關掉了,如果是習慣抱選單列大腿的人請小心服用。


Footnotes:

1

取自維基百科

Date: 2019-04-27 週六 00:00

Author: 飄殘

Created: 2019-07-15 週一 19:47

Emacs 26.2 (Org mode 9.2.3)

Validate