Emacs-keys

title: Emacs keys
categories:
- Technology
- Emacs
date: 2014-10-30 14:32:15
tags:

- emacs

Emacs 經常用到的快捷鍵, 很全。

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-> 到文件末尾

Buffer管理
C-x 選擇buffer列表中的上一個buffer
C-x 選擇buffer列表中的下一個buffer
M-x rename-buffer 重命名buffer
C-x C-b buffer列表

‘.’ 表明該buffer是當前buffer. ‘%’ 表明該buffer是隻讀的. ‘*’ 表明該buffer有修改
d 標記等待刪除
s 保存列表內所有buffer
x 執行被標記的buffer操作
u 移除標記
f/ENTER 轉到當前buffer
q 退出buffer列表
~ 將buffer標記爲未修改
% 修改buffer的讀寫狀態
o 在另一個窗口打開該buffer
b Bury this line’s buffer
v Select this line’s buffer, and also display in other windows any buffers flagged with the m command
T 不顯示non-file buffer

編輯(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 退出替換

使用正則表達式(Regular expression)搜索/替換
可在正則表達式中使用的符號:
^ 行首
$行尾
. 個字符
.* 任意多個(包括沒有)字符
\< 單詞開頭
> 單詞結尾
[] 括號中的任意一個字符(例如[a-z]表示所有的小寫字母)

M C-s RETURN 使用正則表達式向後搜索
M C-r RETURN 使用正則表達式向前搜索
C-s 增量搜索
C-s 重複增量搜索
C-r 向前增量搜索
C-r 重複向前增量搜索
M-x query-replace-regexp 使用正則表達式搜索並替換

窗口命令(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 *移除標記)
= 將當前文件和標記文件(使用C-@標記而不是dired的m標記)比較
M-= 將當前文件和它的備份比較
! 對當前文件應用shell命令
M-} 移動光標至下一個用*或D標記的文件
M-{ 移動光標至上一個用*或D標記的文件
% d 使用正則表達式標記文件等待刪除
% m 使用正則表達式標記文件爲*
+ 新建文件夾
> 移動光標至後一個文件夾
< 移動光標至前一個文件夾
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)

爲了實現下面的一些技術, 你需要在保存源代碼的目錄裏運行”etags
.c .h *.cpp”(或者源代碼的其他的擴展名)
M-.(點) 搜索標籤
M-x tags-search ENTER 在所有標籤裏搜索(使用正則表達式)
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)

Others
C-x = : show the character at point
%%: read-only not modified
%*: read-only and modified
**: not read-only but modified
C-h i d m ecb RET i topic RET
C-h i d m ecb RET s topic RET
C+x ret r utf-8 ret
C+x ret r gbk ret

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章