Emacs快捷鍵的總結
文件操作
C-x C-f 打開文件,出現提示時輸入/username@host:filepath可編輯FTP文件
C-x C-v 打開一個文件,取代當前緩沖區
C-x C-s 保存文件
C-x C-w 存為新文件
C-x i 插入文件
C-x C-q 切換為只讀或者讀寫模式
C-x C-c 退出Emacs
編輯操作
C-f 前進一個字符
C-b 后退一個字符
M-f 前進一個字
M-b 后退一個字
C-a 移到行首
C-e 移到行尾
M-a 移到句首
M-e 移到句尾
C-p 后退一行
C-n 前進一行
M-x goto-line 跳到指定行
C-v 向下翻頁
M-v 向上翻頁
M-< 緩沖區頭部
M-> 緩沖區尾部
C-M-f 向前匹配括號
C-M-b 向后匹配括號
C-l 當前行居中
M-n or C-u n 重復操作隨后的命令n次
C-u 重復操作隨后的命令4次
C-u C-u 重復操作隨后的命令8次
C-x ESC ESC 執行歷史命令記錄,M-p選擇上一條命令,M-n選擇下一條命令
C-d 刪除一個字符
M-d 刪除一個字
C-k 刪除一行
M-k 刪除一句
C-w 刪除標記區域
C-y 粘貼刪除的內容
注意:C-y可以粘貼連續C-k刪除的內容;先按C-y,然后按M-y可以選擇粘貼被刪除的內容
C-@ 標記開始區域
C-x h 標記所有文字
C-x C-x 交換光標位置和區域標記區開頭
M-w 復制標記區域
C-_ or C-x u 撤消操作
執行SHELL命令
M-x shell 打開SHELL
M-! 執行SHELL命令 (shell-command)
M-1 M-! 執行SHELL命令,命令輸出插入光標位置,不打開新輸出窗口
M-| 針對某一特定區域執行命令(shell-command-on-region), 比如 C-x h M-|uuencode
窗口操作
C-x 0 關閉本窗口
C-x 1 只留下一個窗口
C-x 2 垂直均分窗口
C-x 3 水平均分窗口
C-x o 切換到別的窗口
C-x s 保存所有窗口的緩沖
C-x b 選擇當前窗口的緩沖區
C-x ^ 縱向擴大窗口
C-x } 橫向擴大窗口
緩沖區列表操作
C-x C-b 打開緩沖區列表
d or k 標記為刪除
~ 標記為未修改狀態
% 標記為只讀
s 保存緩沖
u 取消標記
x 執行標記的操作
f 在當前窗口打開該緩沖區
o 在其他窗口打開該緩沖區
目錄操作
C-x d 打開目錄模式
s 按日期/文件名排序顯示
v 閱讀光標所在的文件
q 退出閱讀的文件
d 標記為刪除
x 執行標記
D 馬上刪除當前文件
C 拷貝當前文件
R 重名名當前文件
+ 新建文件夾
Z 壓縮文件
! 對光標所在的文件執行SHELL命令
g 刷新顯示
i 在當前緩沖區的末尾插入子目錄的內容
[n]m 標記光標所在的文件,如果指定n,則從光標所在的文件起后n個文件被標記
[n]u 取消當前光標標記的文件,n的含義同上
t 反向標記文件
%-m 正則標記
q 退出目錄模式
說明:在目錄模式中,如果輸入!,在命令行中包含*或者?,有特殊的含義。*匹配當前光標所在的文件和所有標記的文件,?分別在每一個標記的文件上 執行該命令。
程序編譯
M-x compile 執行編譯操作
M-x gdb GDB排錯
M-x dbx DBX排錯
M-x xdb XDB排錯
M-x sdb SDB排錯
搜索模式
C-s key 向前搜索
C-s 查找下一個
ENTER 停止搜索
C-r key 反向搜索
C-s C-w 以光標所在位置的字為關鍵字搜索
C-s C-s 重復上次搜索
C-r C-r 重復上次反向搜索
C-s ENTER C-w 進入單詞搜索模式
C-r ENTER C-w 進入反向單詞搜索模式
M-x replace-string ENTER search-string ENTER 替換
M-% search-string ENTER replace-string ENTER 交互替換
C-r 在進入單詞搜索(查找/替換)模式后,該命令進入迭代編輯模式
C-M-x 退出迭代編輯模式,返回到查找/替換模式
C-M- s 向前正則搜索
C-M-r 向后正則搜索
C-M-% 正則交互替換
SHELL模式
C-c C-c 相當于Bash下的C-c
C-c C-z 相當于Bash下的C-z
C-c C-d 相當于Bash下的C-d
M-p 執行前一條命令
C-n 執行下一條命令
C-c C-o 刪除最后一條命令產生的輸出
C-c C-r 屏幕滾動到最后一條命令輸出的開頭
C-c C-e 屏幕滾動到最后一套命令輸出的結尾
C-c C-p 查看前一條命令的輸出
C-c C-n 查看后一條命令的輸出
打印資料
M-x print-buffer 先使用pr,然后使用lpr
M-x lpr-buffer 直接使用lpr
M-x print-region
M-x lpr-region
收發郵件
M-x mail 發送郵件, C-c C-s 發送,C-c C-c 發送并退出
M-x rmail 接受郵件
參考資料:
O'Reilly, Emacs 3rd Edition
Comments
Tue, 2007-01-23 02:41 — Marchday
一些FAQ
Q:如何使用gdb設置斷點的時侯讓emacs高亮源代碼那一行?
A:設斷點是 C-x space
-------------------------------
ecb可以到這里下 載:http://ecb.sourceforge.net/
-------------------------------
Q:編輯 c++文件時,現在M-;用的是//形式的注釋
我想用/**/的
怎么辦 ?
A:[1]M-x c-mode
[2](defun my-c-comment ()
(interactive)
(insert "/* */"
(backward-char 3))
(global-unset-key "\M-;"
(global-set-key "\M-;" 'my-c-comment)
-------------------------------
Q:Emacs 和 XEmacs 的區別?
A:http://www.xemacs.org/About/XEmacsVsGNUemacs.html
-------------------------------
最 新emacs for windows的下載地址
http://ftp.gnu.org/gnu/windows/emacs/
-------------------------------
Q: 想在打開文件的時候就 auto indent ,不要老按 TAB 鍵,.emacs 怎樣寫?
A:
(global-set-key "\C-m" 'reindent-then-newline-and-indent)
或者 這樣:
(add-hook 'c-mode-common-hook
(lambda ()
(define-key c-mode-map
"\C-m" 'reindent-then-newline-and-indent)))
-------------------------------
Q: 我的是21.3.1,ecb2.27。我的ecb不支持鼠標雙擊阿,不知道大家的ecb是什么版本的,能不能支持鼠標雙擊,或者用快捷鍵切換到ecb窗 口?
A:快捷鍵有啊。好些是C-c , g m 就調到methods窗口。g d 就goto directorey 窗口,
說實話,我覺得 ecb窗口跳轉很不方便。不如speedbar,只要設置一下speedbar-get-focus的快捷鍵,這個是可以 toggle的。而且speedbar上該有的都有,成員函數列表都在上面。按 f 就跳到 file mode,基本ecb有的它都有了。
-------------------------------
Q:ecb 有沒有windows版本的?
這些東西沒有什么平臺一說,都是elisp語言,用emacs byte-compile一下就可以了。但是我認為ecb的跳轉很麻煩。
-------------------------------
Q: 我在emscs中打開了幾個文件進行編輯,我要關閉緩存中某一個文件應當怎樣操作?
A:1C-x k
A2:c-x c-b 在要關閉的buffer的那行 d, 在x就ok了
-------------------------------
Q: 我想在打開文件的時候就 auto indent
A:你可以C-x h 選中所有內容,然后C-M \ 就可以了。
-------------------------------
Q: 不想要emacs de工具欄,怎樣讓它不顯示?
A1:options 里面 show/hide ,關掉 toolbar,然后 options 再選擇 一下 save options ,下次就再也不出來了。
A2:也可把(tool-bar-mode nil)加到.emacs中
-------------------------------
Q:emacs 的正確發音?
A:一馬克思?一賣殼絲?
-------------------------------
Q:在打開文件時如果文件名中有空格, 請問我怎么輸入這個空格
發表:
A:在空格前加"\"
-------------------------------
Q:果我不小心按錯了鍵,跑到文件頭或者文 件尾了,怎么能快速回到剛才光標所在的位置?
A:C-u C-@
-------------------------------
Q:編譯某行出錯時,我想快速把光標定位到此 行,我應該如何做?
A:可以使用C-x ' 。注意是 `,也就是F1 下面的那個,不是單引號。
實在不行,M-x next-error 也可以。
-------------------------------
Q: 怎樣讓emacs中復制的 東西可以在系統中使用?好象emacs不和系統使用相同的粘貼板
A1:C-y 不行嗎?要不就直接在emacs中干吧。M-x shell
A2:
M-x gdb
file xxx.c
run
-------------------------------
Q:emacs 中怎樣才能運行.c的程序?我只會編譯.c的程序,不會運行。每次只能退出emacs,在shell下運行
A:不用退出啊、直接按C-x C-z 就會進入shell,你然后shell下運行,然后fg回來就可以了。或者你M-x shell,直接在emacs中運行也可以的。
-------------------------------
Q:我的emacs縮進 是2兩個空格。怎樣設置為8個呢?
A:(setq c-basic-offset 8)
-------------------------------
Q:終端下 使用Ctrl+x 2/3可以上下左右分屏,默認的是一半對一半。請問可以調整兩個窗口的大小嗎?
A:M-x enlarge-window (c-x ^)
M-x shrink-window
你可以把他們綁定到你喜歡得鍵上。
-------------------------------
Q: 請問在emacs里怎么顯示日期?
A:(setq display-time-day-and-date t)
(display-time)
-------------------------------
Q: 請問C-s時候如何粘貼要搜的內容?
A1:移動光標到你要查找的東西上(不用粘貼), C-s C-w
A2:M-y
-------------------------------
Q: 不產生備份文件
A:(setq make-backup-files nil)
-------------------------------
Q: 請問在emacs中怎么刪除從光標位置到行首?
A1:Meta - C-k
A2:Ctrl-u 0 Ctrl-k
-------------------------------
Q: 我在xp中用GNU Emacs 21.3.1...
當按pagedown多次后...emacs就會失去響應...請問怎么回事?
A:因為你設置了scroll-margin
-------------------------------
Q:寫程序時經常會 遇到一個很長的代碼塊(用'{}'包起來的)
有什么辦法能把一個代碼塊縮起來,需要的時候再展開
A:
M-x hs-minor-mode
* C-c @ ESC C-s show all
* C-c @ ESC C-h hide all
* C-c @ C-s show block
* C-c @ C-h hide block
* C-c @ C-c toggle hide/show
我重新定義了show block和hide block的鍵
(add-hook 'c-mode-hook 'hs-minor-mode)
C-c bh show block
C-c bs hide block
-------------------------------
Q: 每次都語法高亮顯示:(global-font-lock-mode t) 加入你的.emacs文件。
-------------------------------
Q:裝上ecb,有個color-themes可以調整配色方 案,ecb-change-layout可以改變ecb窗口布局
-------------------------------
Q:emacs 中,想復制一段文字,或復制一行,應該怎樣做
我現在是先cut,(C-SPACE ..... C-w),然后在paste(C-y)一下,有沒有更好的操作
A:M-w
-------------------------------
Q:請問誰知道在編譯程序的時候,怎樣讓光標從當前 buffer自動跳到正在編譯程序的buffer,然后光標一直保持在這個buffer的底部?我現在每一次編譯程序后,都是C-x o,然后再C-Shift >;到最底看結果,挺麻煩的,不知道這樣一個..........
A:
;; S-F9 調用 compile 并設置編譯命令
;; F9 則保存所有文件并編譯(無提示)
(defun du/onekey-compile ()
"Save buffers and start compile"
(interactive)
(save-some-buffers t)
(switch-to-buffer-other-window "*compilation*"
(compile compile-command)
; (other-window 1)
)
(global-set-key [S-f9] '(lambda ()
(interactive)
(switch-to-buffer-other-window "*compilation*"
(compile)
; (other-window 1)
))
(global-set-key [f9] 'du/onekey-compile)
-------------------------------
Q:如何顯示 ASCII表?
A:http://www.cpqd.com.br/~vinicius/emacs/ascii.el
-------------------------------
Q: 怎樣使得 emacs 里面, 選取的區域為矩形,而不是一行行全選上了?
A:Ctrl+空格建,然后把光標移到下幾行
ctrl+x r k
ctrl+x r y
-------------------------------
Q: 我的tab鍵被用來做格式化功能了,那我怎樣才能鍵入一個真正的tab呢?
A:C-q TAB
-------------------------------
Q:如何重新從磁盤里load當前編輯的文 件?因為有時候文件可能被別人改了,所以才有這個需求
A:M-x revert-buffer
-------------------------------
Q:一般我的emacs 啟動后都是去/usr/share/emacs/site-lisp下面找擴展程序
請問這個目錄是否可以指定?
因為我現在要把我的 emacs搬家到另一個沒有root權限的機器
所以我不能去改他們的/usr/share/emacs/site-lisp,只能在自己的目錄干 活
A:
在.emacs最前頭加一條(setq load-path (cons "/home/bleem1998/.emacs-site-lisp/" load-path))
然后把所有的擴展包都丟在"/home /bleem1998/.emacs-site-lisp/"就可以了
-------------------------------
Q: 請問在emacs中如何設置字體和背景的顏色?
A:設置背景顏色 M-x set-background-color
可以寫到 .emacs里打開emacs就設置:
(set-face-background 'default "azure") ; azure或者別的顏色
如果只想在window模式下設置背景,終端下不需要,就加上判斷:
(if window-system
(set-face-background 'default "azure"))
-------------------------------
Q: 文本方式下,emacs的有些熱鍵被終端的熱鍵代替了。比如:ctrl-h在終端中是退格鍵,而emacs中是在線幫助,結果在emacs中按ctrl- h就變成了刪除光標前面的字符。這種情況還很多。要怎樣設置才能用emacs的熱鍵替代終端的..........
A:
(global-set-key "\C-h" 'backward-delete-char-untabify)
(global-set-key [DEL] 'delete-char)
-------------------------------
Q:我用emacs,屏幕顯 示大約是80行,25列,開多個窗格時,每個窗格顯示不了多少字符。
能不能讓屏幕顯示更多的行和列?
A:不是很清楚你的意思。是emacs窗口不夠大?還是emacs編輯時自動換行的列太小?
如果是后者 (setq default-fill-column 85)
如果是前者,可以在開emacs時選擇大點的尺寸,或者動動鼠標拉大點 -_-
(if window-system
(setq default-frame-alist
(append
'((top . 0) (left . 0) (width . 120) (height . 60))
default-frame-alist)))
-------------------------------
Q:fcitx 的熱建 Ctrol-Space 和 emacs 的 mark-set 重了, 我每次在 emacs里面輸入中文,就不能mark-set了,怎么辦啊?
A:Mark可以用 C-@
-------------------------------
Q:怎樣把所有的/r/n都替換成 /n,或者怎樣刪除所有的/r
A:除了使用一些工具軟件(如 dos2unix、tr 等)對文件直接進行轉換外,在 Emacs 中有如下兩種方法:
[1]、替換法
使用 Emacs 的替換命令 replace-string 將 \r 替換為空以達到刪除的目的:
M-x replace-string RETURN # 執行 replace-string 命令
Replace string: C-q C-m RETURN # 替換字符串。C-q C-m 為 \r 字符的輸入形式
with: RETURN # 替換為空字符串
[2]、解碼法
如果 Emacs 對文件的自動解碼失敗,可指定文件的解碼方式打開文件。對于本問題來說,指定一種可行的 dos 解碼方式即可(如 chinese-euc-dos),Emacs將會自動進行轉換,從而能正確顯示Window格式的文本文件的內容。在啟動 Emacs 之后:
C-x C-m c chinese-euc-dos RETURN # 指定編碼方式為chinese-euc-dos
C-x C-f your_file_name RETURN # 打開文件
-------------------------------
Q:>;>; 1.有什么可設置emacs在選定文本后輸入時把選定的文本換掉?
A:M-x pending_delete_mode # 切換到 Delete_Selection 模式
-------------------------------
Q:>;>; 2.如何將一段選定的文字在大小寫之間切換??
A:C-x C-l # 轉換為小寫文字
C-x C-u # 轉換為大寫文字
-------------------------------
Q:emacs 中如何設置顯示文件字體的大小?
A:可通過修改 Default face 的 Height 屬性來實現(customize-face命令或者在菜單中找修改 face 的一項)。如果是 XEmacs,有菜單選項可直接更改字體大小。
-------------------------------
Q: 請問從其他地方copy到emacs的快接鍵
A:
拷貝一個文件到一個buffer里面用c-x i
拷貝一個buffer到另外一個buffer用c-x c-i
拷貝剪 貼板里的用c-y
在linux力,可以直接用鼠標選定要拷貝的東西,再用鼠標中間的鍵拷貝到buffer里
-------------------------------
Q: 如何讓emacs啟動后就最大化?
A: (setq initial-frame-alist '((top . 0) (left . 0) (width . 97) (height . 49)))
數值自己修改吧。