注意:以下命令中標(biāo)注的按鍵,大寫的C代表Control,在鍵盤上通常是Ctrl鍵,而M代表Meta,在鍵盤上通常是Alt鍵,S則代表Shift,在鍵盤上通常是Shift鍵,也就是
C | Control |
M | Alt |
S | Shift |
這三個(gè)鍵在Emacs里通常作為組合鍵的前導(dǎo)按鍵使用,也就是說(shuō),執(zhí)行一條命令前可能需要按住這個(gè)鍵不放,比如搜索命令是C-s,要執(zhí)行這個(gè)命令首先要按住Ctrl鍵不放,再按下字母s鍵;而打開(kāi)文件命令是C-x C-f,要打開(kāi)文件就必須按下Ctrl鍵不放,依次按下x和f(當(dāng)然也可以按下Ctrl不放再按下x,放開(kāi),再按下Ctrl不放再按f);有的命令組合鍵和非組合鍵都要用到,比如保存所有文件是C-x s,需要按下Ctrl不放的時(shí)候按下x,然后放開(kāi)所有按鍵,再按下s;也有兩個(gè)組合按鍵一起使用的,比如使用正則表達(dá)式進(jìn)行增量搜索的快捷鍵是C-S-%,這就要求你同時(shí)按下Ctrl和Alt不放開(kāi),再按下s。
啟動(dòng)Emacs
在有圖形界面的環(huán)境下只需要在終端輸入Emacs按回車或者找到啟動(dòng)emacs程序的圖標(biāo)打開(kāi)就可以了。
在沒(méi)有圖形界面的環(huán)境或者偽終端下需要使用字符界面的Emacs可以輸入emacs -nw,也就是增加一個(gè)-nw參數(shù)。
掛起Emacs | C-z |
掛起在圖形界面下通常是把Emacs窗口最小化的意思,而在字符界面下則是把Emacs掛起到后臺(tái)后回到終端,比如在GNU/linux字符終端下按C-z會(huì)回到shell,使用jobs命令可以列出你掛起的所有任務(wù),使用fg可以返回以最后一次掛起的任務(wù),fg %num可以選擇回到任意一個(gè)被掛起的任務(wù)。
退出Emacs | C-x C-z |
如果沒(méi)有未保存的文件,那么這條命令會(huì)直接退出Emacs程序,否則它會(huì)提示是否保存文件。
文件
打開(kāi)文件 | C-x C-f |
保存文件 | C-x C-s |
保存所有文件 | C-x s |
插入其他文件到當(dāng)前緩沖區(qū) | C-x i |
在當(dāng)前緩沖區(qū)打開(kāi)另一個(gè)文件 | C-x C-v |
另存為文件 | C-x C-w |
獲取幫助
打開(kāi)快速指南 | C-h t |
獲取按鍵幫助 | C-h k |
獲取函數(shù)幫助 | C-h f |
打開(kāi)Emacs幫助手冊(cè) | C-h r |
錯(cuò)誤恢復(fù)
放棄當(dāng)前命令或終止正在執(zhí)行的操作 | C-g |
恢復(fù)因系統(tǒng)崩潰而丟失的文件 | M-x recover-file |
撤銷上一次操作 | C-x u或C-_ |
還原緩沖區(qū)的內(nèi)容 | M-x revert-buffer |
刷新屏幕 | C-l |
增量搜索
正向搜索 | C-s |
反向搜索 | C-r |
使用正則表達(dá)式正向搜索 | C-M-s |
使用正則表達(dá)式反向搜索 | C-M-r |
選擇上一個(gè)搜索結(jié)果 | M-p |
選擇下一個(gè)搜索結(jié)果 | M-n |
退出搜索并停留在當(dāng)前搜索到的位置 | RET |
中止當(dāng)前搜索 | C-g |
移動(dòng)
移動(dòng)的單位 | 向后 | 向前 |
字符 | C-b | C-f |
單詞 | M-b | M-f |
行 | C-p | C-n |
當(dāng)前行開(kāi)頭或結(jié)尾 | C-a | C-e |
句 | M-a | M-e |
段 | M-{ | M-} |
頁(yè) | C-x [ | C-x ] |
表達(dá)式 | C-M-b | C-M-f |
函數(shù) | C-M-a | C-M-e |
緩沖區(qū)開(kāi)頭或結(jié)尾 | M-< | M-> |
垂直滾動(dòng)屏幕 | C-v | M-v |
水平滾動(dòng)屏幕 | C-x < | C-x > |
滾動(dòng)當(dāng)前行到屏幕中央 | C-u | C-l |
指定行移動(dòng) | M-g M-g |
刪除
刪除的單位 | 向后 | 向前 |
字符 | DEL | C-d |
單詞 | M-DEL | M-d |
行 | M-0 C-k | C-k |
句 | C-x DEL | M-k |
表達(dá)式 | M-- C-M-k | C-M-k |
刪除當(dāng)前行 | C-S-DEL | |
刪除區(qū)域 | C-w | |
復(fù)制區(qū)域到刪除環(huán) | M-w | |
刪除到字符 | M-z char | |
從刪除環(huán)中拉回內(nèi)容 | C-y | |
從刪除環(huán)中拉回更早期的內(nèi)容 | M-y |
注:這里的DEL在你的鍵盤上可能是Backspace
標(biāo)記
設(shè)置標(biāo)記 | C-@ |
在當(dāng)前光標(biāo)位置和標(biāo)記處跳轉(zhuǎn) | C-x C-x |
設(shè)置單詞標(biāo)記 | M-@ |
標(biāo)記段 | M-h |
標(biāo)記頁(yè) | C-x C-p |
標(biāo)記表達(dá)式 | C-M-@ |
標(biāo)記函數(shù) | C-M-h |
標(biāo)記整個(gè)緩沖區(qū) | C-x h |
查詢替換
交互替換 | M-% |
使用正則表達(dá)式 | M-x query-replace-regexp |
在查詢替換模式下: | |
替換當(dāng)前項(xiàng)并跳轉(zhuǎn)到下一項(xiàng) | SPC |
替換當(dāng)前項(xiàng)不跳轉(zhuǎn) | , |
不替換當(dāng)前項(xiàng)并跳轉(zhuǎn)到下一項(xiàng) | DEL |
替換全部剩下的查詢結(jié)果 | ! |
回到上一個(gè)匹配結(jié)果 | ^ |
退出查詢替換 | RET |
進(jìn)入遞歸編輯(C-M-c退出) | C-r |
多窗格
首先解釋一下,Emacs里一個(gè)框(Frame)是值窗口系統(tǒng)中的一個(gè)窗口,一個(gè)窗格(Window)則是指顯示在一個(gè)Frame
命令描述 | 窗格 | 框 |
刪除所有其他窗格 | C-x 1 | |
垂直分割 | C-x 2 | C-x 5 2 |
刪除當(dāng)前窗格 | C-x 0 | C-x 5 0 |
水平分割 | C-x 3 | |
滾動(dòng)其他窗格 | C-M-v | |
切換到另一個(gè)窗格 | C-x o | C-x 5 o |
在其他窗格切換緩沖區(qū) | C-x 4 b | C-x 5 b |
在其他窗格顯示緩沖區(qū) | C-x 4 C-o | C-x 5 C-o |
在其他窗格打開(kāi)文件 | C-x 4 f | C-x 5 f |
在其他窗格以只讀方式打開(kāi)文件 | C-x 4 r | C-x 5 r |
在其他窗格打開(kāi)目錄 | C-x 4 d | C-x 5 d |
在其他窗格查找標(biāo)簽 | C-x 4 . | C-x 5 . |
窗格高度增加 | C-x ^ | |
窗格寬度減少 | C-x { | |
窗格寬度增加 | C-x } |
格式化
縮進(jìn)當(dāng)前行 | TAB |
縮進(jìn)區(qū)域 | C-M-/ |
縮進(jìn)表達(dá)式 | C-M-q |
增加縮進(jìn) | C-x TAB |
在當(dāng)前位置后增加新行 | C-o |
當(dāng)前位置到行尾的內(nèi)容下移 | C-M-o |
刪除當(dāng)前位置附近的空行 | C-x C-o |
將當(dāng)前行連接到上一行 | M-^ |
刪除光標(biāo)附近的空白 | M-/ |
大小寫轉(zhuǎn)換
單詞轉(zhuǎn)換為大寫 | M-u |
單詞轉(zhuǎn)換為小寫 | M-l |
單詞轉(zhuǎn)換為首字母大寫 | M-c |
區(qū)域轉(zhuǎn)換為大寫 | C-x C-u |
區(qū)域轉(zhuǎn)換為小寫 | C-x C-l |
微型緩沖區(qū)
盡可能多地補(bǔ)全 | TAB |
補(bǔ)全至多一個(gè)單詞 | SPC |
補(bǔ)全并執(zhí)行 | RET |
顯示可能的補(bǔ)全項(xiàng) | ? |
切換到上一個(gè)輸入 | M-p |
切換到下一個(gè)輸入 | M-p |
用正則表達(dá)式往后搜索歷史記錄 | M-r |
用正則表達(dá)式往前搜索歷史記錄 | M-s |
終止命令 | C-g |
緩沖區(qū)
選擇另一個(gè)緩沖區(qū) | C-x b |
列出所有緩沖區(qū) | C-x C-b |
關(guān)閉一個(gè)緩沖區(qū) | C-x k |
緩沖區(qū)
交換字符 | C-t |
交換單詞 | M-t |
交換行 | C-x C-t |
交換表達(dá)式 | C-M-t |
交換
交換字符 | C-t |
交換單詞 | M-t |
交換行 | C-x C-t |
交換表達(dá)式 | C-M-t |
拼寫檢查
見(jiàn)車當(dāng)前單詞拼寫 | M-$ |
檢查區(qū)域內(nèi)所有單詞 | M-x ispell-region |
檢查整個(gè)緩沖區(qū) | M-x ispell-buffer |
標(biāo)簽
查找標(biāo)簽 | M-. |
查找下一個(gè)標(biāo)簽 | C-u M-. |
指定一個(gè)新標(biāo)簽 | M-x visit-tags-table |
在標(biāo)簽表內(nèi)的所有文件用正則表達(dá)式搜索 | M-x tags-search |
在所有文件內(nèi)運(yùn)行查詢替換 | M-x tags-query-replace |
繼續(xù)最后一個(gè)標(biāo)簽搜索或查詢替換 | M-, |
Shells
執(zhí)行一個(gè)外部命令 | M-! |
在當(dāng)前區(qū)域運(yùn)行一shell命令 | M-| |
使用一個(gè)外部命令處理當(dāng)前區(qū)域 | C-u M-| |
啟動(dòng)一個(gè)shell | M-x shell |
矩形區(qū)域
復(fù)制矩形區(qū)域到寄存器 | C-x r r |
刪除矩形區(qū)域 | C-x r k |
拉回矩形區(qū)域內(nèi)容 | C-x r y |
插入一個(gè)矩形區(qū)域 | C-x r o |
清空矩形區(qū)域 | C-x r c |
矩形區(qū)域內(nèi)每行內(nèi)容替換為字符串 | C-x r t |
縮寫
增加全局縮寫 | C-x a g |
增加模式縮寫 | C-x a l |
給這個(gè)縮寫增加全局?jǐn)U展 | C-x a i g |
給這個(gè)縮寫增加模式擴(kuò)展 | C-x a i l |
擴(kuò)展縮寫 | C-x a e |
動(dòng)態(tài)擴(kuò)展上一個(gè)單詞 | M-/ |
正則表達(dá)式
匹配換行符之外的任何字符 | . | |
任意次重復(fù) | * | |
一次或一次以上重復(fù) | + | |
一次或一次也沒(méi)有 | ? | |
轉(zhuǎn)義字符 | /c | |
分支 | /| | |
分組 | /(.../) | |
第n組 | /n | |
單詞開(kāi)始或結(jié)束 | /b | |
非單詞開(kāi)始或結(jié)束 | /B | |
單位 | 開(kāi)始 | 結(jié)束 |
行 | ^ | $ |
詞 | /< | /> |
緩沖區(qū) | /' | /' |
字符類別 | 匹配 | 不匹配 |
字符集合 | [ ... ] | [^ ... ] |
單詞 | /w | /W |
國(guó)際化字符集
指定語(yǔ)言 | M-x set-language-environment |
顯示所有輸入法 | M-x list-input-methods |
開(kāi)啟或禁用輸入法 | C-/ |
設(shè)置命令編碼系統(tǒng) | C-x RET c |
顯示所有編碼系統(tǒng) | M-x list-coding-systems |
選擇編碼系統(tǒng) | M-x PRefer-coding-system |
信息
進(jìn)入信息文檔閱讀器 | C-h i |
在信息文檔中查找指定的函數(shù)或變量 | C-h C-i |
在節(jié)點(diǎn)中移動(dòng) | |
往前滾動(dòng) | SPC |
反向滾動(dòng) | DEL |
節(jié)點(diǎn)開(kāi)始處 | . |
節(jié)點(diǎn)間移動(dòng) | |
下一個(gè)節(jié)點(diǎn) | n |
上一個(gè)節(jié)點(diǎn) | p |
上一層 | u |
通過(guò)名字選擇菜單項(xiàng) | m |
選擇第n個(gè)菜單項(xiàng) | n |
填轉(zhuǎn)到節(jié)點(diǎn) | f |
返回上一次所在的節(jié)點(diǎn) | l |
返回到目錄節(jié)點(diǎn) | d |
通過(guò)名字跳轉(zhuǎn)到任意節(jié)點(diǎn) | g |
其他: | |
進(jìn)入快速指南 | h |
退出信息文檔 | q |
用正則表達(dá)式搜索節(jié)點(diǎn) | M-s |
寄存器
保存區(qū)域到寄存器 | C-x r s |
插入寄存器內(nèi)容到緩沖區(qū) | C-x r i |
保存當(dāng)前位置到寄存器 | C-x r SPC |
跳轉(zhuǎn)到保存在寄存器中的位置 | C-x r j |
鍵盤宏
開(kāi)始記錄鍵盤宏 | C-x ( |
結(jié)束記錄鍵盤宏 | C-x ) |
執(zhí)行最后一個(gè)宏 | C-x e |
追加內(nèi)容到最后一個(gè)鍵盤宏 | C-u C-x |
給最后一個(gè)鍵盤宏命名 | M-x name-last-kbd-macro |
插入鍵盤宏的Lisp定義到當(dāng)前緩沖區(qū) | M-x insert-kbd-macro |
新聞熱點(diǎn)
疑難解答
圖片精選