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