簡介
沒 有聽說過 Emacs
嗎?沒有關(guān)系,花上30分鐘就能了解和熟悉這個古老而強大 的編輯器。他被很多人稱作世界上最強大的編輯器。用戶從無數(shù)高手到IT民工到
普通文本編輯器用戶,可以符合幾乎所有人的需求。甚至可以在 Emacs 里運行 音樂播放器、網(wǎng)頁瀏覽器等等,Emacs 更像是一個操作平臺。
使用 Emacs 可以完全拋棄鼠標,不必在打字的同時把手移開鍵盤找鼠標,不必在
一大堆深藏不露的菜單里尋找那些常用功能,也不必被一條條工具欄遮擋視線。 大多數(shù)的 Windows
編輯器都有一條菜單欄,n條工具欄。菜單里有無數(shù)選項,很 多選項都會彈出一個對話框,這個對話框又會帶有層層疊疊的標簽,每個標簽里
又有很多輸入框很多按鈕。一個簡單的把所有字母大寫的命令就要在菜單里翻半 天,說不定還找不到,而他們的幫助信息又總是不知所云。而 Emacs
的大多數(shù)操 作都可以通過快捷鍵或直接輸入命令完成,而且有著極好的幫助系統(tǒng),可以通過 多種方式找到你想要的命令或按鍵。
不要被 Emacs 簡單的外觀和與眾不同的操作方式迷惑,上手 Emacs
并不是什么 難事,看一遍 Tutorial 就可以了,Emacs23 已經(jīng)帶著多種語言版本的快速指南, 包括中文。仍然覺得 Tutor
太長?那可以繼續(xù)看本文。
按鍵說明
首先說明一下,Emacs 的按鍵表示方法。最常用的是
Ctrl 和 Alt 的組合鍵, 分別用 C 和 M 表示,比如:
- C-x 就是 Ctrl+x,
- M-x 就是 Alt+x,
- C-M-f 就是 Ctrl+Alt+f,
- M-% 就是 Alt+%,實際上是 Alt+Shift+5
- C-x C-f 就是 Ctrl+x 然后再按
Ctrl+f,中間可以一直按著 Ctrl 也可以松 開,無所謂間隔多長時間。
這樣你就可以簡單的用 C 和 M 表示 ctrl 和 alt 了。Shift
可以用 S 表示。
鍵盤上的特殊按鍵用<>表示,比如回車,空
格,方向鍵上, 等等,一看就知道什么意思。
不必追究為什么把 alt 寫為 M,因為你這次只有30分鐘時間。
下載及安裝
Windows 用戶
Windows 用戶可以去 http://ntemacs.sf.net 下載可執(zhí)行文件或者源代碼。建議 下載Emacs23.x 。這是一個
7zip 的自動解壓縮包,解壓到你喜歡的目錄就可以 了。
到這里你大概用了5分鐘,當然,下載和解壓縮時間不算在內(nèi)。:)
Linux 用戶 (windows 用戶可以忽略)
可以下載 CVS 的 Emacs
代碼,編譯一下就好了。下載 CVS Emacs23:
$ cvs -z3 -d:pserver:anonymous@cvs.savannah.gnu.org:/sources/emacs
co -r emacs-unicode-2 emacs
編譯:
$ cd emacs $ ./configure
—enable-font-backend —with-xft —with-freetype —with-gtk
注意 configure 的輸出,是否缺少什么東西,沒有問題的話就可以
make:
$ make bootstrap
運行一下 src/emacs 如果沒有問題的話就可以安裝到默認路徑:
$ sudo make install
常用命令
啟動和退出
Windows 用戶可以用 Emacs bin
目錄下的 runemacs.exe 啟動,Linux 用戶鍵 入 emacs & 就可以了。
啟動 Emacs 后應(yīng)該能看到這個界面:
退出 Emacs 按 C-x C-c (就是 Ctrl+x 接著按
Ctrl+c)。
打開和保存文件
啟動 Emacs 后,按 C-x
C-f,minibuffer (就是 Emacs 最下面一條) 會提示路 徑,你可以在這里輸入路徑名和文件名,或者回車看到這個目錄列表。可以 用方向鍵移動光標到文件名上回車打開文件,或者在子目錄上進入子 目錄,在 .. 上進入上一層目錄。
打開文件后像往常一樣編輯,隨便按字母鍵輸入一些字符。按 C-x C-s
保存文件。按 C-x k 回車關(guān)閉這個 buffer。
小結(jié):按鍵說明
這 里可以看到很多 C-x
開頭的組合鍵,這些通常都是 Emacs 預先定義,全局性 的命令。按了 C-x 不動,一秒鐘后 minibuffer 提示 C-x- ,表示
Emacs 正在 等待用戶按下一個鍵。如果你想取消這次按鍵,可以接下去按 C-g,minibuffer 提示 C-x C-g is
undefined 也就是說 Emacs 什么都沒有執(zhí)行。C-g 一般都是取 消命令,取消按鍵。如果按了 C-x C-h 就會出現(xiàn)一個幫助
buffer,里面是以 C-x 開頭的按鍵幫助。C-h 是一個幫助按鍵。如何獲得更多的幫助,會在之后的 小節(jié)介紹。C-c
開頭的按鍵通常是用戶自定義的按鍵和擴展包或擴展模式定義的 按鍵,同樣也可以獲得幫助信息。
選定區(qū)域,剪切、復制、粘貼
好了,到現(xiàn)在為止你大概一共花了 10 分鐘吧。
你 可以用鼠標拖選一塊區(qū)域。當然,最好用鍵盤。按 C-@,minibuffer
提示 Mark set,設(shè)定了一個 mark。然后移動光標,這時候你就選定了光標和 Mark 之 間的區(qū)域。什么都看不到?你可以按
C-w,這塊區(qū)域就消失了,C-w 是剪切。按 C-x u 可以撤銷上一次的剪切,C-x u 是取消。你肯定想看到你到底選中了哪塊
區(qū)域,可以按M-x 然后輸入 transient-mark-mode ,回車。這次你就可以看到你 選中了哪塊區(qū)域了。M-x 是執(zhí)行 Emacs
命令。
【插播廣告】如果是德語鍵盤,在 Windows 下很可能按不出 C-@, 而
C-又被輸入法占去了。所以最好自己設(shè)定 set-mark
的按鍵。比如把 C-" 設(shè)為 mark 命令。按 C-: (ctrl-冒號) 輸入下面這句話,然后回車:
(global-set-key (kbd "C-\"")
'set-mark-command)
可以在你的.emacs文件里加入類似的語句
【廣告結(jié)束】
Emacs 有一個很有用的功能,在你選定了區(qū)域之后按 C-x C-x
可以交換光標 (point) 和 Mark 的位置,這樣你就可以修改調(diào)整你選定的區(qū)域了。
按 C-g 取消選定的區(qū)域。
重新用 C-@ 選定一塊區(qū)域,按 M-w,這是復制,移動光標到別處,按
C-y,這是 粘貼。緊接著再按一次 M-y,這時可以看到粘貼的內(nèi)容變成了上一次剪切的內(nèi)容。 再按 M-y 又變成之前一次復制的內(nèi)容。
C-k 可以剪切一行。連續(xù)的 C-k 會把剪切的內(nèi)容放在一起,一次 C-y
就可以把 之前的 n 行一起貼上。
C-x u 可以撤銷,不過這個撤銷和常規(guī) windows
程序的撤銷不太一樣。按了 C-x u 撤銷后,如果移動一下光標,再按一次 C-x u,可以撤銷之前的撤銷命令。 這樣相當于是 redu。
小結(jié):
- C-@ 選定區(qū)域
- C-w 剪切
- M-w 復制
- C-y 粘貼
- M-y 粘貼剪貼板之前的內(nèi)容
- C-k 剪切一行
- C-x u 撤銷
查找
其 他 windows
程序的查找通常會跳出一個對話框,這很討厭,會遮住文本內(nèi)容, 有時候我就會忘了我到底要找什么。Emacs 就不會這樣。按 C-s 是查找,
minibuffer 提示 I-search: 接下來你可以輸入你要找的詞,比如想找 windows, 輸入 w,Emacs 開始找到
w,光標移動到 w 上,接著輸入 i,Emacs 找到 wi, 并注意到Emacs 會同時高亮所有的 wi,接著輸入 n,Emacs 找到
win,等等。這 就是 incremetal search,它的好處是,你想要找 windows,但實際上你只要輸 入 win 就能定位到
windows 上了,不需要繼續(xù)輸入 dows 了。繼續(xù)按 C-s 找下 一個匹配的。C-r 往回查找。按回車或者方向鍵結(jié)束本次查找,再按兩次
C-s 重 復上次查找,按 C-g 取消查找,光標回到原處。
C-s 或 C-r 也可以用作光標定位,比如想要移到前面 Emacs 處,就可以
C-r Emacs,效率很高,可以說是指哪打哪。
如果查找輸入的全是小寫,那么這次查找是大小寫不敏感的,如果輸入字符中有
大寫字母,那么這次查找就是大小寫敏感的。很智能吧。
C-M-s 或 C-M-r 是正則表達式查找。或者在 C-s 之后按 M-r
也可以切換到正則 表達式查找。這里不仔細講 Emacs 的正則表達式是怎么樣的。那樣會多花一個小 時。
替換
M-% 是
query-replace,輸入查找內(nèi)容和替換內(nèi)容,然后 Emacs 會詢問是否要 替換,y 替換,n 不替換,! 替換光標之后所有,q
結(jié)束,? 可以得到幫助。
Emacs 的替換有一個很好的特性,可以只在選定區(qū)域內(nèi)進行替換。這樣就可以放
心大膽地使用 ! 替換所用,而不用擔心超出范圍了。
C-M-% 是正則表達式的替換。
小結(jié):
- C-s 和 C-r 向前向后查找
- C-% 替換
- C-M-s 和 C-M-r 向前向后正則表達式查找
- C-M-% 正則表達式替換
尋求幫助
到這里你用了大概20分鐘,基本的文本編輯功能都有了。
接著你可以自己摸索了。
Emacs 提供了極其強大的幫助系統(tǒng)。
C-h t 是一個 tutorial,現(xiàn)在也有不同語言的 tutorial。按
M-x 輸入 help-with-tutorial-spec-language 可以選擇不同的語言。按
Emacs
可 以幫你補全命令。按兩次
會有補全的提示。
C-h a 是 apropos
command,你可以輸入幾個簡單的單詞,Emacs 可以幫你找到 相應(yīng)的命令,這個幫助非常好用。比如你想把一個單詞全部大寫,但不知道該怎
么做,可以 C-h a 輸入 upcase word 或者 up word,Emacs 就會找到幾個命令, 其中一個是
upcase-word,并且對應(yīng)的按鍵是 M-u,你只要把光標移動到單詞前 按 M-u 就可以了。
C-h k 是描述某個按鍵會執(zhí)行什么。例如你要看看 M-; 是干什么的,按
C-h k, 接著按 M-; 你就會看到 M-; 會運行 comment-dwim,dwim 是 do what i mean
的縮寫,這個命令會注釋或反注釋你選定的區(qū)域,如果沒有選定區(qū)域,會在這一 行后面加上注釋。很聰明的命令吧。
C-h c 簡單描述某個按鍵執(zhí)行什么。
C-h f 描述某個函數(shù)
C-h v 描述某個變量
C-h 會提供很多很多幫助信息,C-h ? 會顯示有哪些幫助信息。
簡單配置
Emacs
有超強的可配置性,1000個人可以有1000種配置,可以有自己的鍵綁定, 有自定義的函數(shù),有自己喜歡的擴展包。配置放在 home 目錄下的
.emacs 里, Emacs 啟動的時候會自動讀取這個文件。啟動 Emacs 后,C-x C-f ~/.emacs 會 打開 .emacs
文件,如果不存在的話就是新建這個文件。home 目錄在哪里呢? 可以 M-x getenv home 得
到 home 的位置。Linux 系統(tǒng)很好理解。 Windows 系統(tǒng),會默認放在 C:\Documents and
Settings\username\Application Data 下,有幾種方法可以指定 home 的位置:
- 在 我的電腦->屬性->高級->環(huán)境變量 里添加一個
HOME 環(huán)境變量,指定位 置。
- 在注冊表
[HKEY_CURRENT_USER\SOFTWARE\GNU\Emacs] (如果沒有 GNU 或 Emacs,添加一個即可) 添加 HOME
字符串變量,值為指定的 home 路徑。
Emacs 配置使用的語言是 Elisp,Emacs 附帶非常詳細的 Elisp
手冊,可以通 過 M-x info 得到。配置 .emacs 一般只需要幾個簡單語句,比如:
- (setq variable-name value) 設(shè)置變量值,例如
(setq transient-mark-mode t) 設(shè)置選定區(qū)域范圍高亮
- (require 'extension) 安裝一個擴展包。
- (load "file-name") 使用一個 .el 文件
- (global-set-key (kbd "C-c f")
'function-name) 全局自定義鍵綁定
- (define-key dired-mode (kbd "j")
'dired-next-line) 局部鍵綁定,只在 dired-mode 起作用
- (if ...) 一些簡單的判斷語句
這里提供一個簡單的 .emacs 文件: quick.emacs.el
你可以把它復制到你的 home 目錄下并改名為 .emacs 注意有個.
或者用 runemacs.exe -q -l quick.emacs.el
來指定 emacs 使用這個配置文件。
總結(jié)
到
這里差不多就是30分鐘吧,介紹一些文本編輯的基本操作。只是為了說明上手 Emacs 其實很簡單,而且?guī)缀趺恳粯硬僮鞫加斜绕胀?Windows
文本編輯器更好 的特性,比如可以任意調(diào)整已選定的區(qū)域,更好的復制粘貼機制,更好的撤銷機 制,更好的 isearch
查找方式,可以在區(qū)域內(nèi)替換,強大得多的幫助系統(tǒng),沒 有任何限制的擴展性。用了幾天或幾個星期后就會覺得其他的編輯是多么麻煩和 弱小。