Emacs C mode指令速查列表

 
本文件列出了在Emacs C mode下面常見的指令及所謂的C mode就是在Emacs下面撰寫C語言程式的模式。在這個模式下面Emacs會提供一些針對C語言所增加的特性及功能。對於C的程式設計師而言是相當好用的。雖然這篇文章著重在C mode之下,但是大部分的指令對於其他的模式依舊適用。

避免被其他的設定所影響

Emacs本身是一個非常有彈性的編輯器,因此經過相當的設定之後,原本預設的設定可能會被修改掉了。為了讓您的Emacs能夠符合本文件所列出的熱鍵及弁遄C建議您在home directory的 .emacs檔案中加入下面的設定。
 
 

(setq inhibit-default-init t) ; 避免被系統預設的設定所影響 
(keyboard-translate ?C-h ?C-?) ; 可以避免backspace變成help hot-key的問題 
(keyboard-translate ?C- ?C-h) ; 將help hot-key由Ctrl-h轉成Ctrl- 
;; 以下的設定是讓C mode具有 K&R 所建議的樣式 
(setq c-mode-hook '(lambda () (auto-fill-mode 1))) 
(setq c-indent-level 5) 
(setq c-continued-statement-offset 5) 
(setq c-argdecl-indent 0) 
(setq c-brace-offset -5) 
(setq c-label-offset -5)

 

進入及離開Emacs

  • 如果您的系統上面已經安裝好emacs,只要在shell下面執行 emacs xxx.c就可以以C mode進入emacs中。如果您要離開emacs,則需要在emacs中鍵入: Ctrl-x-c
     

檔案控制及存取

Ctrl-x Ctrl-s儲存目前正在編輯視窗內的檔案
Ctrl-x s儲存所有目前在編輯的檔案
Ctrl-x k關閉目前正在編輯視窗的檔案,但是不存檔
Ctrl-x Ctrl-c跳出emacs
Ctrl-x Ctrl-w另存新檔
Ctrl-x Ctrl-f開啟檔案
Ctrl-x Ctrl-r以唯讀模式開啟檔案
Ctrl-x Ctrl-q將原本是唯讀的檔案變成可寫入
 

游標的移動

Ctrl-b往回移一個字元
Ctrl-f往後移一個字元
Ctrl-p往上移動一行
Ctrl-n往下移動一行
Ctrl-a移到行首
Ctrl-e移到行末
Esc b往前移一個英文字
Esc f往後移一個英文字
Esc v往上移一頁
Ctrl-v往下移一頁
Esc <移到檔案最前面
Esc >移到檔案最後面
Esc a移到敘述(statement)最前面
Esc e移到敘述最後面
Esc Ctrl-a移到Function最前面
Esc Ctrl-e移到Function最後面
Ctrl-u重複前一個指令四次
 

刪除與回復

DEL刪除游標左邊的字元
Ctrl-d刪除游標所在位置的字元
ESC DEL刪除游標左邊的英文字
ESC d刪除游標右邊的英文字
Ctrl-k刪除所有在游標右邊的字元
ESC Shift-2設定Region的Mark
Ctrl-w從設定Region Mark到目前游標之間的字元全部刪除
Ctrl-y將被Ctrl-w指令所刪除的字元回復
ESC y將被Ctrl-y所回復的字元再刪除
Ctrl-u重複前一個命令四次
Ctrl-x u回復前一個命令所造成的影響(Undo)
 

搜尋與置換

Ctrl-r向上搜尋
ESC在搜尋模式中按ESC可以離開搜尋模式
ESC %啟動置換模式。在置換模式中,首先要輸入將被置換掉的字串,然後輸入新字串。接下來游標會移到需要被置換的地方。你需要用下面的key來指定動作:
  • y:置換目前游標所在的字串,並且移到下一個可被置換的字串。
  • n:跳過目前游標所在的字串。移到下一個可被置換的字串。
  • !:將整個檔案一次置換完畢,不進行任何詢問。
  • ESC:結束置換模式。
  • .:將目前的字串置換後,即離開置換模式。
  • ^:回到前一個符合置換的地方。
 

拷貝與搬移

Ctrl-@設定標記起始點
Ctrl-w剪下標記起始點至目前游標所在位置的文字。
Alt-w複製標記起始點至目前游標所在位置的文字。
Ctrl-y貼上之前所剪下或複製的文字至目前游標所在的位置。
 

多重視窗控制

Ctrl-x 0刪除目前的視窗(不會關閉正在編輯的檔案)
Ctrl-x 1刪除其他的視窗(不會關閉正在編輯的檔案)
Ctrl-x 2水平分割視窗
Ctrl-x 3垂直分割視窗
Ctrl-x b將目前視窗內的檔案切換成其他的檔案
Ctrl-x o將游標移動到其他視窗之內
 

加入註解

ESC ;在Emacs的C mode中按下'ESC ;'就會出現註解符號/* 及*/。並且在編輯時會自動幫你換行。
 

編譯程式

ESC x compile在C mode中輸入ESC x compile就可以在不離開Emacs的狀況下進行程式的編譯。此時,emacs會顯示預設的編譯命令是make -k。compile之後,所有訊息都會出現在另一個視窗。
Ctrl-x `編譯完成後,如果有錯誤發生,按下Ctrl-x `就可以跳到下一個有錯誤的地方,修改完成後,再按一次就可以繼續修改下一個錯誤,一直到沒有其他的錯誤為止。
 

SHELL

ESC x shell進入Shell mode。可以讓你在emacs的視窗中使用shell。
Ctrl-c Ctrl-c將正在執行的程式中斷
Ctrl-c Ctrl-z暫停目前的工作
Ctrl-c Ctrl-r將游標移動到最後一個命令
Ctrl-c Ctrl-y重複執行前一個命令。
 

Tags

tags是一個很有用的工具,他可以幫助您將source檔案中所有function定義,及 typedef的定義,全部收集成為一個資料庫,讓你可以很輕易的跳到您要的函數定義。在使用emacs的tags機制之前,您需要先將有關的tag的資料庫建構出來。建構的方法如下:
% etags -tlist_of_source_file

list_of_source_file就是您要做紀錄的原始程式檔案。您可以指定很多個檔案。例如:

% etags -t *.[ch]

其中,-t的參數主要是要求etags將typedef的宣告一併放入資料中。

在Emacs中,如果要使用tags的機制,可以使用下表的命令:
 

ESC .尋找函數的定義。你可以透過這個命令來找尋你要的函數。輸入此命令後,emacs會提示訊息,要求你輸入要找尋的函數名稱。或是typedef的定義。
Ctrl-x 4 .功能同ESC .。但是會把找到的函數定義顯示在另外一個視窗。
ESC x visit-tags-table使用其他的TAGS檔案
ESC x tags-search以regular expression的方式來找尋函數名稱。
ESC ,輸入ESC x tags-search之後,可以用這個來進行尋找下一個的動作。
ESC x tags-query-replace以regular expression的方式來置換函數名稱。
 

其他

Ctrl-x Ctrl-b目前正在處理的檔案列表
Ctrl-x b將目前視窗內的檔案切換成其他的檔案
Ctrl-x d 會在目前的視窗中顯示目錄列表
Ctrl-x 4 d在其他視窗顯示目錄列表

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值