簡(jiǎn)介
Emacs 被很多人稱(chēng)作世界上最強(qiáng)大的編輯器。用戶(hù)從無(wú)數(shù)高手到IT民工到普通文本編輯器用戶(hù),可以符合幾乎所有人的需求。甚至可以在Emacs 里運(yùn)行音樂(lè)播放器、網(wǎng)頁(yè)瀏覽器等等,Emacs 更像是一個(gè)操作平臺(tái)。
使用 Emacs
可以完全拋棄鼠標(biāo),不必在打字的同時(shí)把手移開(kāi)鍵盤(pán)找鼠標(biāo),不必在一大堆深藏不露的菜單里尋找那些常用功能,也不必被一條條工具欄遮擋視線(xiàn)。大多數(shù)的
Windows 編輯器都有一條菜單欄,n條工具欄。菜單里有無(wú)數(shù)選項(xiàng),很多選項(xiàng)都會(huì)彈出一個(gè)對(duì)話(huà)框,這個(gè)對(duì)話(huà)框又會(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 表示。
鍵盤(pán)上的特殊按鍵用<>表示,比如回車(chē),空格,方向鍵上, 等等,一看就知道什么意思。
打開(kāi)和保存文件
啟動(dòng) Emacs 后,按 C-x C-f,minibuffer (就是 Emacs 最下面一條) 會(huì)提示路 徑,你可以在這里輸入路徑名和文件名,或者回車(chē)看到這個(gè)目錄列表??梢?用方向鍵移動(dòng)光標(biāo)到文件名上回車(chē)打開(kāi)文件,或者在子目錄上進(jìn)入子 目錄,在 .. 上進(jìn)入上一層目錄。
打開(kāi)文件后像往常一樣編輯,隨便按字母鍵輸入一些字符。按 C-x C-s 保存文件。按 C-x k 回車(chē)關(guān)閉這個(gè) buffer。
小結(jié):按鍵說(shuō)明
這里可以看到很多 C-x
開(kāi)頭的組合鍵,這些通常都是 Emacs 預(yù)先定義,全局性 的命令。按了 C-x 不動(dòng),一秒鐘后 minibuffer 提示 C-x- ,表示
Emacs 正在 等待用戶(hù)按下一個(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)頭的按鍵通常是用戶(hù)自定義的按鍵和擴(kuò)展包或擴(kuò)展模式定義的 按鍵,同樣也可以獲得幫助信息。
選定區(qū)域,剪切、復(fù)制、粘貼
你可以用鼠標(biāo)拖選一塊區(qū)域。當(dāng)然,最好用鍵盤(pán)。按 C-@,minibuffer
提示 Mark set,設(shè)定了一個(gè) mark。然后移動(dòng)光標(biāo),這時(shí)候你就選定了光標(biāo)和 Mark 之 間的區(qū)域。什么都看不到?你可以按
C-w,這塊區(qū)域就消失了,C-w 是剪切。按 C-x u 可以撤銷(xiāo)上一次的剪切,C-x u 是取消。你肯定想看到你到底選中了哪塊
區(qū)域,可以按M-x 然后輸入 transient-mark-mode ,回車(chē)。這次你就可以看到你選中了哪塊區(qū)域了。M-x 是執(zhí)行 Emacs
命令。
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 可以撤銷(xiāo),不過(guò)這個(gè)撤銷(xiāo)和常規(guī) windows 程序的撤銷(xiāo)不太一樣。按了 C-x u 撤銷(xiāo)后,如果移動(dòng)一下光標(biāo),再按一次 C-x u,可以撤銷(xiāo)之前的撤銷(xiāo)命令。 這樣相當(dāng)于是 redu。
小結(jié):
- C-@ 選定區(qū)域
- C-w 剪切
- M-w 復(fù)制
- C-y 粘貼
- M-y 粘貼剪貼板之前的內(nèi)容
- C-k 剪切一行
- C-x u 撤銷(xiāo)
查找
其他 windows
程序的查找通常會(huì)跳出一個(gè)對(duì)話(huà)框,這很討厭,會(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 往回查找。按回車(chē)或者方向鍵結(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á)式是怎么樣的。
替換
M-% 是 query-replace,輸入查找內(nèi)容和替換內(nèi)容,然后 Emacs 會(huì)詢(xún)問(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á)式替換
尋求幫助
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
文件,如果不存在的話(huà)就是新建這個(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é)
介紹一些文本編輯的基本操作。只是為了說(shuō)明上手
Emacs 其實(shí)很簡(jiǎn)單,而且?guī)缀趺恳粯硬僮鞫加斜绕胀?Windows
文本編輯器更好的特性,比如可以任意調(diào)整已選定的區(qū)域,更好的復(fù)制粘貼機(jī)制,更好的撤銷(xiāo)機(jī) 制,更好的 isearch
查找方式,可以在區(qū)域內(nèi)替換,強(qiáng)大得多的幫助系統(tǒng),沒(méi)有任何限制的擴(kuò)展性。用了幾天或幾個(gè)星期后就會(huì)覺(jué)得其他的編輯是多么麻煩和弱小。
本文摘自《30分鐘Emacs入門(mén)》,特此聲明。