Emacs這個東東聽說功能很強大。不過感覺有些難學(xué),還好網(wǎng)絡(luò)上的資源還是比較豐富的。目前基于最基本的文本編輯來學(xué)習(xí)。而且它的快捷鍵很多,所以要在使用過程中學(xué)習(xí)會比較容易記住。這個是從網(wǎng)上搜索來的,總結(jié)的比較好的,貼在自己這里當(dāng)做摘錄了,方便查詢。
C = Control
M = Meta = Alt | Esc
Del = Backspace
RET = Enter
沒啥好說的了,每個按鍵都去試驗下吧,注意觀察所有窗口的變化
C = Ctrl
M = Meta = Alt | Esc
Del = Backspace
基本快捷鍵(Basic)
C-x C-f “find”文件, 即在緩沖區(qū)打開/新建一個文件
C-x C-s 保存文件
C-x C-w 使用其他文件名另存為文件
C-x C-v 關(guān)閉當(dāng)前緩沖區(qū)文件并打開新文件
C-x i 在當(dāng)前光標(biāo)處插入文件
C-x b 新建/切換緩沖區(qū)
C-x C-b 顯示緩沖區(qū)列表
C-x k 關(guān)閉當(dāng)前緩沖區(qū)
C-z 掛起emacs
C-x C-c 關(guān)閉emacs
光標(biāo)移動基本快捷鍵(Basic Movement)
C-f 后一個字符
C-b 前一個字符
C-p 上一行
C-n 下一行
M-f 后一個單詞
M-b 前一個單詞
C-a 行首
C-e 行尾
C-v 向下翻一頁
M-v 向上翻一頁
M-< 到文件開頭 注意這里是‘<’不是‘,’需要按shift,遇到相同情況下同
M-> 到文件末尾
編輯(Editint)
M-n 重復(fù)執(zhí)行后一個命令n次
C-u 重復(fù)執(zhí)行后一個命令4次
C-u n 重復(fù)執(zhí)行后一個命令n次
C-d 刪除(delete)后一個字符
M-d 刪除后一個單詞
Del 刪除前一個字符
M-Del 刪除前一個單詞
C-k 移除(kill)一行
C-Space 設(shè)置開始標(biāo)記 (例如標(biāo)記區(qū)域)
C-@ 功能同上, 用于C-Space被操作系統(tǒng)攔截的情況
C-w 移除(kill)標(biāo)記區(qū)域的內(nèi)容
M-w 復(fù)制標(biāo)記區(qū)域的內(nèi)容
C-y 召回(yank)復(fù)制/移除的區(qū)域/行
M-y 召回更早的內(nèi)容 (在kill緩沖區(qū)內(nèi)循環(huán))
C-x C-x 交換光標(biāo)和標(biāo)記
C-t 交換兩個字符的位置
M-t 交換兩個單詞的位置
C-x C-t 交換兩行的位置
M-u 使從光標(biāo)位置到單詞結(jié)尾處的字母變成大寫
M-l 與M-u相反
M-c 使從光標(biāo)位置開始的單詞的首字母變?yōu)榇髮?/p>
重要快捷鍵(Important)
C-g 停止當(dāng)前運行/輸入的命令
C-x u 撤銷前一個命令
M-x revert-buffer RETURN (照著這個輸入)撤銷上次存盤后所有改動
M-x recover-file RETURN 從自動存盤文件恢復(fù)
M-x recover-session RETURN 如果你編輯了幾個文件, 用這個恢復(fù)
在線幫助(Online-Help)
C-h c 顯示快捷鍵綁定的命令
C-h k 顯示快捷鍵綁定的命令和它的作用
C-h l 顯示最后100個鍵入的內(nèi)容
C-h w 顯示命令被綁定到哪些快捷鍵上
C-h f 顯示函數(shù)的功能
C-h v 顯示變量的含義和值
C-h b 顯示當(dāng)前緩沖區(qū)所有可用的快捷鍵
C-h t 打開emacs教程
C-h i 打開info閱讀器
C-h C-f 顯示emacs FAQ
C-h p 顯示本機(jī)Elisp包的信息
搜索/替換(Seach/Replace)
C-s 向后搜索
C-r 向前搜索
C-g 回到搜索開始前的位置(如果你仍然在搜索模式中)
M-% 詢問并替換(query replace)
Space或y 替換當(dāng)前匹配
Del或n 不要替換當(dāng)前匹配
. 僅僅替換當(dāng)前匹配并退出(替換)
, 替換并暫停(按Space或y繼續(xù))
! 替換以下所有匹配
^ 回到上一個匹配位置
RETURN或q 退出替換
使用正則表達(dá)式(Regular expression)搜索/替換
可在正則表達(dá)式中使用的符號:
^ 行首
$ 行尾
. 單個字符
.* 任意多個(包括沒有)字符
\< 單詞開頭
\> 單詞結(jié)尾
[] 括號中的任意一個字符(例如[a-z]表示所有的小寫字母)
M C-s RETURN 使用正則表達(dá)式向后搜索
M C-r RETURN 使用正則表達(dá)式向前搜索
C-s 增量搜索
C-s 重復(fù)增量搜索
C-r 向前增量搜索
C-r 重復(fù)向前增量搜索
M-x query-replace-regexp 使用正則表達(dá)式搜索并替換
窗口命令(Window Commands)
C-x 2 水平分割窗格
C-x 3 垂直分割窗格
C-x o 切換至其他窗格
C-x 0 關(guān)閉窗格
C-x 1 關(guān)閉除了光標(biāo)所在窗格外所有窗格
C-x ^ 擴(kuò)大窗格
M-x shrink-window 縮小窗格
M C-v 滾動其他窗格內(nèi)容
C-x 4 f 在其他窗格中打開文件
C-x 4 0 關(guān)閉當(dāng)前緩沖區(qū)和窗格
C-x 5 2 新建窗口(frame)
C-x 5 f 在新窗口中打開文件
C-x 5 o 切換至其他窗口
C-x 5 0 關(guān)閉當(dāng)前窗口
書簽命令(Bookmark commands)
C-x r m 在光標(biāo)當(dāng)前位置創(chuàng)建書簽
C-x r b 轉(zhuǎn)到書簽
M-x bookmark-rename 重命名書簽
M-x bookmark-delete 刪除書簽
M-x bookmark-save 保存書簽
C-x r l 列出書簽清單
d 標(biāo)記等待刪除
Del 取消刪除標(biāo)記
x 刪除被標(biāo)記的書簽
r 重命名
s 保存列表內(nèi)所有書簽
f 轉(zhuǎn)到當(dāng)前書簽指向的位置
m 標(biāo)記在多窗口中打開
v 顯示被標(biāo)記的書簽(或者光標(biāo)當(dāng)前位置的書簽)
t 切換是否顯示路徑列表
w 顯示當(dāng)前文件路徑
q 退出書簽列表
M-x bookmark-write 將所有書簽導(dǎo)出至指定文件
M-x bookmark-load 從指定文件導(dǎo)入書簽
Shell
M-x shell 打開shell模式
C-c C-c 類似unix里的C-c(停止正在運行的程序)
C-d 刪除光標(biāo)后一個字符
C-c C-d 發(fā)送EOF
C-c C-z 掛起程序(unix下的C-z)
M-p 顯示前一條命令
M-n 顯示后一條命令
DIRectory EDitor (dired)
C-x d 打開dired
C(大寫C) 復(fù)制
d 標(biāo)記等待刪除
D 立即刪除
e或f 打開文件或目錄
g 刷新當(dāng)前目錄
G 改變文件所屬組(chgrp)
k 從屏幕上的列表里刪除一行(不是真的刪除)
m 用*標(biāo)記
n 光標(biāo)移動到下一行
o 在另一個窗格打開文件并移動光標(biāo)
C-o 在另一個窗格打開文件但不移動光標(biāo)
P 打印文件
q 退出dired
Q 在標(biāo)記的文件中替換
R 重命名文件
u 移除標(biāo)記
v 顯示文件內(nèi)容
x 刪除有D標(biāo)記的文件
Z 壓縮/解壓縮文件
M-Del 移除標(biāo)記(默認(rèn)為所有類型的標(biāo)記)
~ 標(biāo)記備份文件(文件名有~的文件)等待刪除
# 標(biāo)記自動保存文件(文件名形如#name#)等待刪除
*/ 用*標(biāo)記所有文件夾(用C-u */n移除標(biāo)記)
= 將當(dāng)前文件和標(biāo)記文件(使用C-@標(biāo)記而不是dired的m標(biāo)記)比較
M-= 將當(dāng)前文件和它的備份比較
! 對當(dāng)前文件應(yīng)用shell命令
M-} 移動光標(biāo)至下一個用*或D標(biāo)記的文件
M-{ 移動光標(biāo)至上一個用*或D標(biāo)記的文件
% d 使用正則表達(dá)式標(biāo)記文件等待刪除
% m 使用正則表達(dá)式標(biāo)記文件為*
+ 新建文件夾
> 移動光標(biāo)至后一個文件夾
< 移動光標(biāo)至前一個文件夾
s 切換排序模式(按文件名/日期)
或許把這個命令歸入這一類也很合適:
M-x speedbar 打開一個獨立的目錄顯示窗口
Telnet(大致了解)
M-x telnet 打開telnet模式
C-d 刪除后一個字符或發(fā)送EOF
C-c C-c 停止正在運行的程序(和unix下的C-c類似)
C-c C-d 發(fā)送EOF
C-c C-o 清除最后一個命令的輸出
C-c C-z 掛起正在運行的命令
C-c C-u 移除前一行
M-p 顯示前一條命令
Text
只能在text模式里使用
M-s 使當(dāng)前行居中
M-S 使當(dāng)前段落居中
M-x center-region 使被選中的區(qū)域居中
宏命令(Macro-commands)(大致了解)
C-x ( 開始定義宏
C-x ) 結(jié)束定義宏
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-\ 自動縮進(jìn)光標(biāo)和標(biāo)記間的區(qū)域
M-m 移動光標(biāo)到行首第一個(非空格)字符
M-^ 將當(dāng)前行接到上一行末尾處
M-; 添加縮進(jìn)并格式化的注釋
C, C++和Java模式
M-a 移動光標(biāo)到聲明的開始處
M-e 移動光標(biāo)到聲明的結(jié)尾處
M C-a 移動光標(biāo)到函數(shù)的開始處
M C-e 移動光標(biāo)到函數(shù)的結(jié)尾處
C-c RETURN 將光標(biāo)移動到函數(shù)的開始處并標(biāo)記到結(jié)尾處
C-c C-q 根據(jù)縮進(jìn)風(fēng)格縮進(jìn)整個函數(shù)
C-c C-a 切換自動換行功能
C-c C-d 一次性刪除光標(biāo)后的一串空格(greedy delete)
為了實現(xiàn)下面的一些技術(shù), 你需要在保存源代碼的目錄里運行”etags
*.c *.h *.cpp”(或者源代碼的其他的擴(kuò)展名)
M-.(點) 搜索標(biāo)簽
M-x tags-search ENTER 在所有標(biāo)簽里搜索(使用正則表達(dá)式)
M-,(逗號) 在tags-search里跳至下一個匹配處
M-x tags-query-replace 在設(shè)置過標(biāo)簽的所有文件里替換文本
GDB(調(diào)試器)(大致了解)
M-x gdb 在另一個的窗格中打開gdb
版本控制(Version Control)(以后會用到現(xiàn)在大致了解就可以了)
C-x v d 顯示當(dāng)前目錄下所有注冊過的文件(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 標(biāo)記文件等待添加版本控制(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 創(chuàng)建命名的快照(create named snapshot)
C-x v a 創(chuàng)建gnu風(fēng)格的更改日志(create changelog file in gnu-style)
文件操作:
C+x C+f | 打開文件 |
C+x C+r | 以只讀的方式打開文件 |
C+x C+q | 進(jìn)行 只讀/讀寫 模式切換 |
C+x C+v | 切換緩沖區(qū) |
C+x C+s | 保存文件 |
C+x C+w | 文件另存為 |
C+x i | 向緩沖區(qū)中插入文件 |
移動操作:C+f
前進(jìn)一個字符C+b
后退一個字符M+f
前進(jìn)一個單詞M+b
后退一個單詞C+a
移動到行首C+e
移動到行尾M+a
移動到句首M+e
移動到句尾C+p
后退一行C+n
前進(jìn)一行M+g g
跳到指定行C+v
向下翻頁M+v
向上翻頁M+< 移動到緩沖區(qū)首M+>
移動到緩沖區(qū)尾C+M+f
向前匹配括號C+M+b
向后匹配括號標(biāo)記/復(fù)制/剪切/粘貼:C+x
h
全選C+@
標(biāo)記開始M+w
復(fù)制區(qū)域到
kill ring中,但不刪除C+w
刪除區(qū)域C+y
將kill ring 中的內(nèi)容粘貼到緩沖區(qū)C+Del
剪切光標(biāo)到單詞結(jié)束M+Del
剪切光標(biāo)到單詞開始C+k
剪切光標(biāo)到行結(jié)尾M+k
剪切光標(biāo)到句結(jié)尾(C+d)/Del
刪除光標(biāo)上的字M+d
剪切光標(biāo)到下一個單詞結(jié)尾ctrl-S(shift+s)-Backspace
刪除當(dāng)前行
緩沖區(qū)操作:
C+x C+f 打開/創(chuàng)建一個文件,并創(chuàng)建一個新的緩沖區(qū)
C+x C+s 保存緩沖區(qū)內(nèi)容到文件
C+x C+w 保存緩沖區(qū)內(nèi)容到其它文件
C+x k 關(guān)閉當(dāng)前緩沖區(qū)
C+x C+b 顯示緩沖區(qū)列表,可以使用方向鍵來選擇緩沖區(qū)
C+x C+c 關(guān)閉所有緩沖區(qū),并推出emacs
M+x 命令:
查找和替換:
C+s 向前查找C+r 向后查找按下這兩個快捷鍵后,
M+p顯示上一個搜索詞,
M+n顯示下一個搜索詞。輸入查找內(nèi)容后,按C+s跳到下一個結(jié)果,
C+r跳到上一個結(jié)果。
Enter結(jié)束查找光標(biāo)在當(dāng)前位置,C+g取消查找光標(biāo)返回原處。
2,查找單詞
按C - s RET C - w 或 C - r RET C - w 來使用單詞搜索。
3,查找及替換
按M - %啟動查找替換,輸入要被替換的詞,回車,然后輸入要替換的詞,再回車。
被替換的詞會高亮起來,這時,輸入y替換并跳到下一個,輸入n忽略并跳到下一個,輸入q結(jié)束,輸入!替換剩下的全部。
一些常用的選項:
C - g 中斷查找替換過程。
^ 返回上一個替換點,按y繼續(xù)下一個,如果不想替換上一個的話,用^返回到上一個,然后按 C - r 進(jìn)入編輯,修改完后按C - M - c退出繼續(xù)下一個。
C - l 使當(dāng)前匹配顯示在文檔中間。
C - r 進(jìn)入修改。
4,列出匹配的模式
有時候想列出匹配的全面模式,而不是在文檔中瀏覽,這個可以使用occur這個函數(shù)。
例子:M - x occur RET Create RET
這時,emacs會新開一個窗口來列出匹配的行,用鼠標(biāo)點擊或把光標(biāo)移到一行按回車就會跳轉(zhuǎn)到那里。
執(zhí)行SHELL命令
M-x shell | 打開shell命令 |
M-! | 執(zhí)行shell命令(shell-command) |
M-1 M-! | 執(zhí)行Shell命令,命令輸出插入光標(biāo)位置,不打開新輸入窗口 |
M-| | 針對某一特定區(qū)域執(zhí)行命令(shell-command-on-region),比如 C-x h M-juuencode |
窗口操作
C-x 0 | 關(guān)閉本窗口 |
C-x 1 | 只留下一個窗口 |
C-x 2 | 垂直均分窗口 |
C-x 3 | 水平均分窗口 |
C-x o | 切換到別的窗口 |
C-x s | 保存所有窗口的緩沖 |
C-x b | 選擇當(dāng)前窗口的緩沖區(qū) |
C-x ^ | 縱向擴(kuò)大窗口 |
C-x } | 橫向擴(kuò)大窗口 |
目錄操作
C-x d | 打開目錄模式 |
s | 按日期/文件名排序顯示 |
v | 閱讀光標(biāo)所在的文件 |
q | 退出閱讀的文件 |
d | 標(biāo)記為刪除 |
x | 執(zhí)行標(biāo)記 |
D | 馬上刪除當(dāng)前文件 |
C | 拷貝當(dāng)前文件 |
R | 重命名當(dāng)前文件 |
+ | 新建文件 |
Z | 壓縮文件 |
! | 對光標(biāo)所在的文件執(zhí)行SHELL命令 |
g | 刷新顯示 |
i | 在當(dāng)前緩沖區(qū)的末尾插入子目錄的內(nèi)容 |
[n]m | 標(biāo)記光標(biāo)所在的文件,如果指定n,則從光標(biāo)所在的文件后n個文件被標(biāo)記 |
[n]u | 取消當(dāng)前光標(biāo)標(biāo)記的文件,n的含義同上 |
t | 反向標(biāo)記文件 |
%-m | 正則標(biāo)記 |
q | 退出目錄模式 |
其他:
C+x u 撤銷
C+x C+c 退出emacs