天天看點

Emacs常用指令彙總

注意:以下指令中标注的按鍵,大寫的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-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

指定行移動

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

替換目前項不跳轉

,

不替換目前項并跳轉到下一項

替換全部剩下的查詢結果

!

回到上一個比對結果

^

退出查詢替換

進入遞歸編輯(c-m-c退出)

多窗格

首先解釋一下,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

 微型緩沖區

盡可能多地補全

補全至多一個單詞

補全并執行

顯示可能的補全項

?

切換到上一個輸入

切換到下一個輸入

用正規表達式往後搜尋曆史記錄

m-r

用正規表達式往前搜尋曆史記錄

m-s

終止指令

 緩沖區

選擇另一個緩沖區

c-x b

列出所有緩沖區

c-x c-b

關閉一個緩沖區

c-x k

交換字元

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

動态擴充上一個單詞

 正規表達式

比對換行符之外的任何字元

.

任意次重複

*

一次或一次以上重複

+

一次或一次也沒有

轉義字元

/c

分支

/|

分組

/(.../)

第n組

/n

單詞開始或結束

/b

非單詞開始或結束

機關

開始

結束

$

/<

/>

緩沖區

/'

字元類别

比對

不比對

字元集合

[ ... ]

[^ ... ]

/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

在節點中移動

  往前滾動

  反向滾動

  節點開始處

節點間移動

  下一個節點

n

  上一個節點

p

  上一層

u

  通過名字選擇菜單項

  選擇第n個菜單項

  填轉到節點

f

  傳回上一次所在的節點

l

  傳回到目錄節點

d

  通過名字跳轉到任意節點

g

其他:

  進入快速指南

h

  退出資訊文檔

q

  用正規表達式搜尋節點

寄存器

儲存區域到寄存器

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