分类: LINUX
2010-04-05 19:30:38
本文件列出了在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跳出emacsCtrl-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的MarkCtrl-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重複執行前一個命令。
Tagstags是一個很有用的工具,他可以幫助您將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在其他視窗顯示目錄列表