原文:http://aifreedom.com/technology/112
C = Control
M = Meta = Alt | Esc
Del = Backspace
基本快速鍵(Basic)
C-x C-f "find"檔案, 即在緩衝區開啟/建立一個檔案
C-x C-s 儲存檔案
C-x C-w 使用其他檔案名稱另存新檔檔案
C-x C-v 關閉當前緩衝區檔案並開啟新檔案
C-x i 在當前游標處插入檔案
C-x b 建立/切換緩衝區
C-x C-b 顯示緩衝區列表
C-x k 關閉當前緩衝區
C-z 掛起emacs
C-x C-c 關閉emacs
游標移動基本快速鍵(Basic Movement)
C-f 後一個字元
C-b 前一個字元
C-p 上一行
C-n 下一行
M-f 後一個單詞
M-b 前一個單詞
C-a 行首
C-e 行尾
C-v 向下翻一頁
M-v 向上翻一頁
M-< 到檔案開頭
M-> 到檔案末尾
編輯(Editint)
M-n 重複執行後一個命令n次
C-u 重複執行後一個命令4次
C-u n 重複執行後一個命令n次
C-d 刪除(delete)後一個字元
M-d 刪除後一個單詞
Del 刪除前一個字元
M-Del 刪除前一個單詞
C-k 移除(kill)一行
C-Space 設定開始標記 (例如標記地區)
C-@ 功能同上, 用於C-Space被作業系統攔截的情況
C-w 移除(kill)標記地區的內容
M-w 複製標記地區的內容
C-y 召回(yank)複製/移除的地區/行
M-y 召回更早的內容 (在kill緩衝區內迴圈)
C-x C-x 交換游標和標記
C-t 交換兩個字元的位置
M-t 交換兩個單詞的位置
C-x C-t 交換兩行的位置
M-u 使從游標位置到單詞結尾處的字母變成大寫
M-l 與M-u相反
M-c 使從游標位置開始的單詞的首字母變為大寫
重要快速鍵(Important)
C-g 停止當前運行/輸入的命令
C-x u 撤銷前一個命令
M-x revert-buffer RETURN (照著這個輸入)撤銷上次存檔後所有改動
M-x recover-file RETURN 從自動存檔檔案恢複
M-x recover-session RETURN 如果你編輯了幾個檔案, 用這個恢複
線上協助(Online-Help)
C-h c 顯示快速鍵綁定的命令
C-h k 顯示快速鍵綁定的命令和它的作用
C-h l 顯示最後100個鍵入的內容
C-h w 顯示命令被綁定到哪些快速鍵上
C-h f 顯示函數的功能
C-h v 顯示變數的含義和值
C-h b 顯示當前緩衝區所有可用的快速鍵
C-h t 開啟emacs教程
C-h i 開啟info閱讀器
C-h C-f 顯示emacs FAQ
C-h p 顯示本機Elisp包的資訊
搜尋/替換(Seach/Replace)
C-s 向後搜尋
C-r 向前搜尋
C-g 回到搜尋開始前的位置(如果你仍然在搜尋模式中)
M-% 詢問並替換(query replace)
Space或y 替換當前匹配
Del或n 不要替換當前匹配
. 僅僅替換當前匹配並退出(替換)
, 替換並暫停(按Space或y繼續)
! 替換以下所有匹配
^ 回到上一個匹配位置
RETURN或q 退出替換
使用Regex(Regular expression)搜尋/替換
可在Regex中使用的符號:
^ 行首
$ 行尾
. 單個字元
.* 任意多個(包括沒有)字元
\< 單詞開頭
\> 單詞結尾
[] 括弧中的任意一個字元(例如[a-z]表示所有的小寫字母)
M C-s RETURN 使用Regex向後搜尋
M C-r RETURN 使用Regex向前搜尋
C-s 增量搜尋
C-s 重複增量搜尋
C-r 向前增量搜尋
C-r 重複向前增量搜尋
M-x query-replace-regexp 使用Regex搜尋並替換
視窗命令(Window Commands)
C-x 2 水平分割窗格
C-x 3 垂直分割窗格
C-x o 切換至其他窗格
C-x 0 關閉窗格
C-x 1 關閉除了游標所在窗格外所有窗格
C-x ^ 擴大窗格
M-x shrink-window 縮小窗格
M C-v 滾動其他窗格內容
C-x 4 f 在其他窗格中開啟檔案
C-x 4 0 關閉當前緩衝區和窗格
C-x 5 2 建立視窗(frame)
C-x 5 f 在新視窗中開啟檔案
C-x 5 o 切換至其他視窗
C-x 5 0 關閉當前視窗
書籤命令(Bookmark commands)
C-x r m 在游標當前位置建立書籤
C-x r b 轉到書籤
M-x bookmark-rename 重新命名書籤
M-x bookmark-delete 刪除書籤
M-x bookmark-save 儲存書籤
C-x r l 列出書籤清單
d 標記等待刪除
Del 取消刪除標記
x 刪除被標記的書籤
r 重新命名
s 儲存列表內所有書籤
f 轉到當前書籤指向的位置
m 標記在多視窗中開啟
v 顯示被標記的書籤(或者游標當前位置的書籤)
t 切換是否顯示路徑列表
w 顯示當前檔案路徑
q 退出書籤列表
M-x bookmark-write 將所有書籤匯出至指定檔案
M-x bookmark-load 從指定檔案匯入書籤
Shell
M-x shell 開啟shell模式
C-c C-c 類似unix裡的C-c(停止正在啟動並執行程式)
C-d 刪除游標後一個字元
C-c C-d 發送EOF
C-c C-z 掛起程式(unix下的C-z)
M-p 顯示前一條命令
M-n 顯示後一條命令
DIRectory EDitor (dired)
C-x d 開啟dired
C(大寫C) 複製
d 標記等待刪除
D 立即刪除
e或f 開啟檔案或目錄
g 重新整理目前的目錄
G 改變檔案所屬組(chgrp)
k 從螢幕上的列表裡刪除一行(不是真的刪除)
m 用*標記
n 游標移動到下一行
o 在另一個窗格開啟檔案並移動游標
C-o 在另一個窗格開啟檔案但不移動游標
P 列印檔案
q 退出dired
Q 在標記的檔案中替換
R 重新命名檔案
u 移除標記
v 顯示檔案內容
x 刪除有D標記的檔案
Z 壓縮/解壓縮檔案
M-Del 移除標記(預設為所有類型的標記)
~ 標記備份檔案(檔案名稱有~的檔案)等待刪除
# 標記自動儲存檔案(檔案名稱形如#name#)等待刪除
*/ 用*標記所有檔案夾(用C-u */n移除標記)
= 將當前檔案和標記檔案(使用C-@標記而不是dired的m標記)比較
M-= 將當前檔案和它的備份比較
! 對當前檔案應用shell命令
M-} 移動游標至下一個用*或D標記的檔案
M-{ 移動游標至上一個用*或D標記的檔案
% d 使用Regex標記檔案等待刪除
% m 使用Regex標記檔案為*
+ 建立檔案夾
> 移動游標至後一個檔案夾
< 移動游標至前一個檔案夾
s 切換排序模式(按檔案名稱/日期)
或許把這個命令歸入這一類也很合適:
M-x speedbar 開啟一個獨立的目錄顯示視窗
Telnet
M-x telnet 開啟telnet模式
C-d 刪除後一個字元或發送EOF
C-c C-c 停止正在啟動並執行程式(和unix下的C-c類似)
C-c C-d 發送EOF
C-c C-o 清除最後一個命令的輸出
C-c C-z 掛起正在啟動並執行命令
C-c C-u 移除前一行
M-p 顯示前一條命令
Text
只能在text模式裡使用
M-s 使當前行置中
M-S 使當前段落置中
M-x center-region 使被選中的地區置中
宏命令(Macro-commands)
C-x ( 開始定義宏
C-x ) 結束定義宏
C-x e 運行最近定義的宏
M-n C-x e 運行最近定義的宏n次
M-x name-last-kbd-macro 給最近定義的宏命名(用來儲存)
M-x insert-kbd-macro 將已命名的宏儲存到檔案
M-x load-file 載入宏
編程(Programming)
M C-\ 自動縮排游標和標記間的地區
M-m 移動游標到行首第一個(非空格)字元
M-^ 將當前行接到上一行末尾處
M-; 添加縮排並格式化的注釋
C, C++和Java模式
M-a 移動游標到聲明的開始處
M-e 移動游標到聲明的結尾處
M C-a 移動游標到函數的開始處
M C-e 移動游標到函數的結尾處
C-c RETURN 將游標移動到函數的開始處並標記到結尾處
C-c C-q 根據縮排風格縮排整個函數
C-c C-a 切換自動換行功能
C-c C-d 一次性刪除游標後的一串空格(greedy delete)
C-M-h 選中當前(即游標所在的)函數
C-M-a 將游標定位到當前函數頭
C-M-e 將游標定位到當前函數尾
C-M-n和C-M- 將游標定位在兩個匹配的括弧上
為了實現下面的一些技術, 你需要在儲存原始碼的目錄裡運行"etags
*.c *.h *.cpp"(或者原始碼的其他的副檔名)
M-.(點) 搜尋標籤
M-x tags-search ENTER 在所有標籤裡搜尋(使用Regex)
M-,(逗號) 在tags-search裡跳至下一個匹配處
M-x tags-query-replace 在設定過標籤的所有檔案裡替換文本
GDB(調試器)
M-x gdb 在另一個的窗格中開啟gdb
版本控制(Version Control)
C-x v d 顯示目前的目錄下所有註冊過的檔案(show all registered files in this dir)
C-x v = 比較不同版本間的差異(show diff between versions)
C-x v u 移除上次提交之後的更改(remove all changes since last checkin)
C-x v ~ 在不同窗格中顯示某個版本(show certain version in different window)
C-x v l 列印日誌(print log)
C-x v i 標記檔案等待添加版本控制(mark file for version control add)
C-x v h 給檔案添加版本控制檔案頭(insert version control header into file)
C-x v r 擷取命名過的快照(check out named snapshot)
C-x v s 建立命名的快照(create named snapshot)
C-x v a 建立gnu風格的變更記錄檔(create changelog file in gnu-style)