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