Emacs技術手冊

轉載:點擊打開鏈接


Emacs 中文手冊
====================================================
[符號]
--------------------------------------
C- 意思是按住 Ctrol 鍵
M- 意指 Meta 鍵 (鍵盤上若無Meta 鍵,則可以ALT 或 ESC 鍵來取而代之)
DEL 意指退格鍵 (不是 刪除(Delete) key)
RET 意指回車鍵
SPC 意指空格鍵
ESC 意指Escape鍵
TAB 意指Tab鍵
像 "C-M-" (or "M-C") 這樣連在一起的意味着同時按住 Control 和 Meta 鍵不放.

[進入Emacs]
----------------------------------------
emacs 要進入GNU Emacs,只需鍵入它的名字
C-z 掛起Emacs:
C-x C-c 永久離開Emacs


[用方向鍵]
---------------------------------------
                  上一行 C-p (Prev line)
                          |
                          |
                          |
向左移 C-b ----+---- 向右移 C-f (Forward character)
(Backward ) |
                           |
                           |
        下一行 C-n (Next line)

[文件]
----------------------------------------
C-x C-f 讀取文件到Emacs
C-x r 只讀的方式打開一個文件
C-x C-q 清除一個窗口的只讀屬性
C-x C-s 保存文件到磁盤
C-x s 保存所有文件
C-x i 插入其它文件的內容到當前緩衝
C-x C-v 用將要讀取的文件替換當前文件
C-x C-w 將當前緩衝寫入指定的文件
C-x C-q Version control checkin/checkout
[錯誤恢復]
---------------------------------------
C-g 取消當前要執行的命令
M-x recover-file 恢復系統崩潰後丟失的文件
C-x u或C-_ 撤銷更新
M-x revert-buffer 使緩衝回覆到初始內容
C-l Redraw garbaged screen
[增量查找]
---------------------------------------
C-s 向前查找
C-r 向後查找
C-M-s 規則表達式查找
C-M-r 反向規則表達式查找
M-p 選擇前一個查找字符串
M-n 選擇下一個查找字符串
RET 退出增量查找
DEL(Backspace) 取消上一個字符的作用
C-g 退出當前查找模式
                       可重複使用C-s和C-r來改變查找方向
                       
[替換]
---------------------------------------
M-% 交互式地替換一個文本串
M-x replace-regexp 交互式地替換一個規則表達式
SPE 替換當前的並移動到下一處
, 替換當前的但不移動到下一處
L(Backspace) 不替換當前的並移動到下一處
! 替換所有剩下的符合條件的文本
RET 退出替換模式
C-r 進入遞歸的編輯模式
C-M-c 退出遞歸的編輯模式
[光標移動]
---------------------------------------
C-f 向前一個字符
C-b 向後一個字符
M-f 向前一個字
M-b 向後一個字
C-p 向上一行
C-n 向下一行
C-a 到行首
C-e 到行尾
M-a 到句首
M-e 到句尾
M-{ 到段首
M-} 到段尾
C-x [ 到頁首
C-x ] 到頁尾
C-M-f 到表達式首部
C-M-b 到表達式尾部
M- 到緩衝尾部
C-v 滾動到下一屏
M-v 滾動到上一屏
C-x 滾動到左邊一屏(內容向右移動)
C-u C-l 滾動當前行到屏幕中央
C-M-n 移到結尾的)、}或]
C-M-p 移到開始的)、}或]
C-M-u 向上移到父結構開始
C-M-d 向下移到父結構開始
[複製、粘貼、剪切、刪除]
-----------------------------
C-d 向前delete字符
DEL(Backspace) 向後delete字符
M-d 向前delete到字首
M-DEL(Backspace) 向後delete到字尾
M-0 C-k 向前delete到行首
C-k 向後delete到行尾
C-x DEL(Backspace) 向前delete到句首
M-k 向後delete到句尾
M-- C-M-k 向前delete到表達式首部
C-M-k 向後delete到表達式尾部
C-w Kill區域
M-w 拷貝區域到Kill Ring
M-z Kill到下一個給定字符出現的位置
C-y 拉回(yank)上次kill的內容
M-y 用更早kill的內容取代拉回的上次kill的內容
[標記Marking]
-----------------------------
C-SPC或C-@ 標記當前位置
C-x C-x 以字符爲單位使用移動命令動態標記區域
M-@ 以字爲單位使用移動命令動態標記區域
M-h 標記一段
C-x C-p 標記一頁
C-M-@ 標記一個表達式
C-M-h 標記一個函數
C-x h 標記整個緩衝區
[寄存器]
-----------------------------
C-x r s 存儲區域到寄存器
C-x r i 插入矩形內容到緩衝
C-x r SPC 存儲光標位置到寄存器
C-x r j 跳躍到寄存器中存儲的光標位置
[矩形]
-----------------------------
C-x r r 拷貝一個矩形到寄存器
C-x r k Kill矩形
C-x r y 拉回矩形
C-x r o 打開一個矩形, 將文本移動至右邊
C-x r c 清空矩形
C-x r t 爲矩形中每一行加上一個字符串前綴
C-x r i r 從r緩衝區內插入一個矩形
[標記Tags]
-----------------------------
M-. 查找標記
C-u M-. 查找標記下一次出現的位置
M-x visit-tags-table 指定一個新的標記文件
M-x tags-search Regexp search on all files in tabs table
M-x tags-query-replace 在所有文件中執行查詢-替換
M-, 繼續進行上一次標記查找或查詢-替換
[窗口與緩衝]
-----------------------------
C-x 1 刪除所有其它窗口
C-x 5 2
C-x 2 上下分割當前窗口
                     
C-x 3 左右分割當前窗口

C-x 5 0
C-x 0 刪除當前窗口
                      
C-M-v 滾動其它窗口
C-x o 切換光標到另一個窗口
C-x 4 b C-x 5 b 選擇另一個窗口中的緩衝
C-x 5 C-o
C-x 4 C-o 顯示另一個窗口中的緩衝
C-x 5 f
C-x 4 f 在另一窗口中查找並打開文件
C-x 5 r
C-x 4 r 在另一窗口中以只讀方式打開文件
C-x 5 d
C-x 4 d 在另一窗口中運行dired命令
C-x 5 .
C-x 4 . 在另一窗口中查找tag
                   
C-x ^ 增加窗口高度
C-x { 減小窗口寬度
C-x } 增加窗口寬度
C-x b 選擇另一個緩衝
C-x C-b 列出所有的緩衝
C-x k Kill一個緩衝
[分欄編輯]
C-x 6 2C-command
C-x 6 s 2C-split
C-x 6 b 2 C-associate-buffer
C-x 6 2 2 C-two-columns
[格式]
-----------------------------
TAB 縮進當前行(與模式相關)
C-M-\ 縮進區域(與模式相關)
C-M-q 縮進表達式(與模式相關)
C-x TAB Indent region rigidly arg. Columns
C-o 在光標後插入一個新的行
C-M-o 靜態地將一行下移
C-x C-o 刪除光標附近的空行(留下一行)
M-^ 與上一行合併成一行
M- 刪除光標附近的所有空格
M-SPC 刪除光標附近的空格(留下一格)
M-q Fill paragraph
C-x f Set fill column
C-x . 設置每一行開始的前綴
M-g 設置字體
[置換]
-----------------------------
C-t 字符置換
M-t 字置換
C-x C-t 行置換
C-M-t 表達式置換
[大小寫]
-----------------------------
M-u 將一個字設置爲大寫
M-l 將一個字設置爲小寫
M-c 將一個字首字母設置爲大寫
C-x C-u 將一個區域設置爲大寫
C-x C-l 將一個區域設置爲小寫
[補全]
-----------------------------
TAB 最大程度地補全命令
SPC 補全命令中的一個字
RET 完成並執行一個命令
? 列出命令所有可能的後續部分
M-p 列出在當前命令之前輸入的命令
M-n 列出在當前命令之後輸入的命令
M-r 用規則表達式在命令歷史記錄中向後搜尋
M-s 用規則表達式在命令歷史記錄中向前搜尋
C-x ESC ESC 重複執行上一條命令
[Shells]
-----------------------------
M-! 執行一個shell命令
M-| 在一個區域上執行sheel命令
C-u M-| 通過shell命令過濾區域
M-x shell 在窗口中啓動一個shell
[縮進]
-----------------------------
C-x TAB indent-rigidly
[規則表達式]
-----------------------------
. 除換行符外的所有單個字符
* 零個或多個重複
+ 一個以上的重複
? 零個或一個重複
| 選擇(or)
(…) 分組
n 與第n個組相同的文本
b At work break
B Not at work break
[編程]
-----------------------------
C-M-a 到函數首部
C-M-e 到函數尾部
C-M-h 標記一個函數
[GDB調試]
-----------------------------
.啓動gdb
gdb bayonne
gdb --args bayonne -vvv script.scr
.利用幫助
help 命令類別名
help 命令名
.調試指定程序
file /home/cnscn/a.out
.運行程序
r[un]
r[un] -vvv script.scr
.設置斷點
按照函數名設置斷點
b[reak] main
b[reak] 'namespace::Class::func()'
.按照文件名和行數設置斷點
b[reak] methods.cpp:523
.檢查狀態
檢查堆棧
b[ack]t[race]
up
down
檢查當前函數的源代碼
l[ist]
檢查/改變變量值
p[rint] var
p[rint] ptr->mem
p[rint] *ptr
p[rint] ('namespace::Class') *this
p[rint] (('namespace::Class') *this)->a.b.c
p[rint] var=value
檢查類
ptype ptr
set print object on
whatis ptr
檢查並啓用/禁用斷點
set breakpoint pending on
info b[reakpoints]
enable [N]
disable [N]
檢查並切換線程
info th[reads]
thread N
檢查寄存器
info reg
info reg esp
檢查內存
x/10s *0xaabbccdd
x/5x var
.繼續運行
運行到某一行即停止,當前函數返回時也停止
advance source.cpp:123
運行到當前函數返回爲止
fin[ish]
繼續運行直到程序結束或下一個斷點
c[ontinue]
.信號
檢查當前的信號處理策略
info signals
改變信號處理策略
handle SIGINT pass
handle SIGINT nostop
.與Emacs配合使用
建議使用Emacs-23。設定別名
  alias emacs='emacs --enable-font-backend -fn "Dejavu Sans Mono-12"'
修改~/.emacs,把下面這一行加入
(defvar gdb-many-windows t)
在Emacs裏啓動gdb
M-x gdb
開啓多窗口模式
M-x gdb-many-windows
進入gud-tooltip-mode
M-x gud-tooltip-mode
                       
[自定義設置]
-----------------------------
.設定預設的輸入法,將下面這一行加入到 ~/.emacs 檔案中:
(custom-set-variables '(default-input-method "chinese-array30"))
在啓動 Emacs 後,您就可以直接以 C-\ 指令在英文輸入和行列輸入法之間切換了

[FAQ]
-----------------------------

.但是有時候用行列打不出來,需要切換成註音輸入法。
有兩種方式可以達成這個目的:
  a. C-x RET C-\ chinese-zozy RET
  b. C-u C-\ chinese-zozy RET
  作者建議您使用第二種方式,因爲它同時也是作爲兩種輸入法間切換的指令。
  接下來您只要鍵入 C-u C-\ RET 就可以在行列和註音這兩者間作切換了。
(注意:中英輸入法間的切換還是以 C-\ 指令爲之。)
  以後我們在不同中文輸入法間作切換將可以 C-u C-u C-\ 達成,
  原本作者是建議以 M-\ 來補足這個想法,
  但是 M-\ 很不幸已經作爲 delete-horizontal-space 指令了。
  不然 C-\ 搭配 M-\ 不是很漂亮嗎?
  這樣子您應該可以理解如何使用中文輸入環境了吧!
. narrow 功能.用於隱藏文本,在進行string replace時十分有用選中要保留的文本, 然後C-x n n 或M-x narrow-to-region 要展開文本: C-x n w 或 M-x widen
. emacs的自動排版用M-q
. window下面用emacs遠程編輯文件,可以用 ftp方式:
    C-x C-f RET /ftp:user@host:/path/test.txt
    ssh方式: 下載plink.exe,將其路徑加入PATH變量
    C-x C-f RET /ftp:user@host:/path/test.txt
. emacs下的su 可以用C-x C-f安下列方式實現su文件編輯
    /su::/etc/foobar.conf
. 用空格代替tab (setq-default indent-tabs-mode nil)
    M-x untabify
    
. 指定文件的編碼方式:C-x RET f
. 捕捉程序的輸出可以用
    C-u M-! ls
. 如何在dos和unix文件類型之間轉化
    C-x RET f unix 轉化成Unix文件格式
    C-x RET f dos 轉化成dos文件格式
. hexl 將二進制文件轉化成emacs十六進制模式可以用的格式
.鍵綁定
  1. 記住在所有要綁定到快捷鍵的函數上面加上(interactive)關鍵字,否則,會發生(wrong-type-argument commandp my-command)的錯誤
    對於要綁定到鼠標的函數,要在函數聲明中指定參數(event),在修飾段,加入(interactive "e"),然後才能綁定
  2. 對於要傳遞參數的函數,可以用lambda匿名函數來實現
    (global-set-key [(prior)]
        '(lambda () "Previous" (interactive) (scroll-down 1)))
    或則
    (global-set-key [(prior)]
        (function (lambda () "Previous" (interactive) (scroll-down 1))))
    記住對於 global-set-key函數需要的第二個參數是一個symble或者是list
  3. (read-event)可以得到emacs的鍵碼的內部表示
  4. 如果你覺得每次爲了關閉一個buffer都要按C-x k很麻煩,那麼你可以這樣綁定:
    (global-set-key (kbd "") (lambda () (interactive) (kill-buffer (current-buffer)))

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