天天看點

[導入]有關Emacs的一些摘抄

一、emacs編輯器簡介

     emacs編輯器是由C語言和LISP語言編寫的。LISP(連結清單處理語言)是由約翰·麥卡錫在1960年左右創造的一種基于λ演算的函數式程式設計語言。 我們可以使用LISP來擴充emacs,進而為emacs添加更多的指令。(補:emacs -nw:以指令行的方式來運作emacs,而不啟動GUI界面)

* 自動儲存功能

      如果你已經修改了一個檔案,但是還沒來得及存盤你的計算機就了,那麼你所做的修改就很可能會丢失。為了避免這樣的不幸發生,Emacs 會定期将正在編輯的檔案寫入一個“自動儲存”檔案中。自動儲存檔案的檔案名的頭尾各有一個“#”字元,比如你正在編輯的檔案叫“hello.c”,那麼它 的自動儲存檔案就叫“#hello.c#”。這個檔案會在正常存盤之後被 Emacs 删除。

      是以,假如不幸真的發生了,你大可以從容地打開原來的檔案(注意不是自動儲存檔案)然後輸入 M-x recover file<Return> 來恢複你的自動儲存檔案。在提示确認的時候,輸入 yes<Return>。

* 其他

  1. 當emacs失去響應時,C-g指令可用來結束紙條指令的執行。其功能相當于Shell中的Ctrl+C
  2. 有一些 Emacs 指令被“禁用”了,以避免初學者在不了解其确切功能的情況下誤用而造成麻煩。如果你用到了一個被禁用的指令,Emacs 會顯示一個提示消息,告訴你這個指令到底是幹什麼的,詢問你是否要繼續,并在得到你的肯定之後再執行這指令

二、emacs編輯器的界面

1. 編輯區

    用來進行文本編輯的區域。

2. 回顯區

      如果 Emacs 發現你輸入多字元指令的節奏很慢,它會在窗格的下方稱為“回顯區”的地方給你提示。回顯區位于螢幕的最下面一行。

3. 狀态欄

  1. 位于回顯區正上方的一行被稱為“狀态欄”。狀态欄最開頭的星号(*)表示你已經對文字做過改動。剛剛打開的檔案肯定沒有被改動過,是以狀态欄上顯示的不是星号而是短線(-)。
  2. 狀态欄中的小括号用來指明目前使用的編輯模式,預設是fundamental(主模式),emacs的主模式包括了文本模式以及編輯程式源碼的Lisp模式等。

三、emacs所能提供的工作環境

  1. emacs可以執行Shell指令
  2. emacs可以作為Directory Editor(Dired)
  3. emacs可以編輯、編譯以及調試程式
  4. emacs可以編輯其它主機上的文檔
  5. emacs可以列印檔案
  6. emacs具有年曆(Calendar)以及日記功能
  7. emacs可以用來閱讀man page和info文檔
  8. emacs可以收發電子郵件
  9. emacs可以閱讀網絡上的電子布告欄(GNUS)
  10. emacs具有版本控制的功能(CVS)
  11. emacs可以提供娛樂環境(遊戲功能)

    emacs所提供的這些功能,都是先喚起代表此功能的模式(mode)。emacs的模式,分成主要模式(major mode)與次要模式(minor mode)。每一次隻能使用一個主模式,而且主模式是必須要的。在一個主模式下,俄可以搭配一個以上的次要模式。使用次要模式相當于啟用了該次要模式所對應的插件。

四、emacs指令

  1. emacs中的每一個指令都有一個指令名,指令名就是該指令所對應的LISP函數的函數名。在emacs中,我們可以為這些指令配置快捷鍵,進而達到快速調用指令的目的。
  2. .使用emacs來執行指令的方法有兩種:(1).使用Ctrl鍵 (2).使用Meta鍵。所有emacs指令都可以用Meta鍵表示出來,鍵盤上如果沒有Meta鍵,則可以用Alt鍵或ESC鍵來代替。常用的emacs指令通常會有一個快捷鍵與之相連。快捷鍵通常是以Ctrl來開頭(C-x C-c)。如果要使用Meta鍵來表達與“Ctrl-x Ctrl-c”相同的效果,則使用“M-x save-buffers-kill-emacs”。使用Meta鍵,可以利用emacs的completion功能。使用emacs的completion功能的方法是将部分字元串鍵入後,再按下TAB、SPACE或?鍵即可。

       (1).TAB鍵:盡可能将其的字填滿。

       (2).SPACE鍵:将分隔符(-)之前的字填滿。

       (3).?:将所有可能的completion選擇都列出來。

  3. 由于emacs中所有的指令都有一個指令名(LISP函數的函數名),是以,我們可以使用“M-x 指令名”來調用emacs中的所有的指令。

* 基本光标控制

  1. C-v:向下翻屏,與PageDown效果相同(v-> vertical)
  2. M-v:向上翻屏,與PageUp效果相同
  3. C-l:重繪螢幕,并将光标所在行置于螢幕的中央
  4. C-b:光标向前移動一格(b->backward)
  5. C-f:光标向後移動一格(f->forward)
  6. C-p:光标向前移動一行(p->previous)
  7. C-n:光标向後移動一行(n->next)
  8. M-b:光标向前移動一個單詞
  9. M-f:光标向後移動一個單詞
  10. C-a:光标移動到行首
  11. C-e:光标移動到行尾
  12. M-<:光标移動到文章的開頭(注意:“<”的輸入要shift鍵,實際為Alt+Shift+<)
  13. M->:光标移動到文章的結尾
  14. C-u:給指令傳遞參數。例如:“C-u 2 C-d”表示删除兩個字元
  15. M-x goto-line n RET:調到第n行

* 編輯指令

  1. C-d:删除光标後的一個字元
  2. C-k:删除從光标到行尾的字元(k->killl)
  3. C-x u:Undo(想要redo,随便輸入一個字元,在Undo)
  4. C-SPC、[email protected]、M-x set-mark-command:設定mark
  5. C-x h:将整個緩沖區設定為區域
  6. C-w:将區域的文本删除,并放入yanking ring中。區域指的是從mark到point(光标所處的位置稱為point)之間的文本
  7. M-w:複制區域到yanking ring中
  8. C-y:将yanking ring中最後一個區域插入目前緩沖區
  9. M-j:回車并且到下一行産生适當的縮進
  10. M-m:将光标移動到目前行的第一個非空白字元上
  11. M-;:産生通用注釋
  12. M-x comment-region:把塊注釋掉
  13. M-x kill-comment:消除注釋

* 查找與替換

  1. C-s:向後搜尋,光标将停在第一個比對的字元串處。再按一次C-s将繼續搜尋下一個比對的字元串。如果要停止搜尋,則使用C-g,此時光标将會回到搜尋開始的位置
  2. C-r:向前搜尋
  3. M-x replace-string:替換

* 檔案操作

  1. C-x c-f:打開檔案,如果檔案不存在則建立
  2. C-x C-s:儲存檔案。第一次存盤時,emacs會将檔案重命名來備份。重指令的規則通常是在原檔案名後加上一個“~”字元。如果要關閉emacs的自動備份功能,使用 M-x customize-variable <Return> make-backup-files <Return>
  3. C-x C-w:将檔案“另存為”
  4. C-x C-v:打開一個新檔案,并關閉目前緩沖區
  5. C-x C-r:以隻讀的方式打開檔案
  6. C-x i:将檔案插入光标目前位置

* 緩沖區

  1. Emacs 把每個編輯中的檔案都放在一個稱為“緩沖區(buffer)”的地方。每打開一個檔案,Emacs 就在其内部開辟一個緩沖區用來儲存打開的檔案的資料。ESC ESC ESC指令可以用來退出打開的小緩沖區,比如:指令提示窗格等
  2. C-x C-b   列出目前所有的緩沖區(b->buffer)
  3. C-x b 緩沖區名:切換到指定的緩沖區(例如:C-x b M<tab>:切換到以M開頭的緩沖區)
  4. C-x s:儲存emacs中所有的緩沖區(s->save)
  5. C-x right:切換到下一個緩沖區
  6. C-x left:切換到前一個緩沖區
  7. C-x C-c:退出emacs,并詢問使用者是否儲存
  8. C-x k:關閉緩沖區
  9. C-z:将emacs挂起,然後回到Shell中,并不退出emacs。之後,我們可以使用%emacs或fg指令來回到emacs

* 視窗

Emacs 可以有多個窗格,每個窗格顯示不同的文字。

  1. C-x 0:關閉光标所在的視窗
  2. C-x 1:保留光标所在的窗格,并将其擴大到整個螢幕,同時關掉所有其它的窗格
  3. C-x 2:水準分割目前視窗
  4. C-x 3:垂直分割目前視窗
  5. C-x o:在emacs的窗格中進行切換(o->other)
  6. C-M-v:滾動下方的窗格。一般在我們使用下方的窗格進行參考,而又不想将光标切換到下一個窗格時使用

* 使用幫助

  1. C-h c 快捷鍵:顯示快捷鍵的簡要說明
  2. C-h k 快捷鍵:顯示快捷鍵所對應的指令名及其詳細說明
  3. C-h a 關鍵字:顯示包含有指定關鍵字的指令
  4. C-h i:檢視Info文檔

* 在emacs中運作shell指令

  1. M-! cmd RET:打開一個名為“*Shell Command Output*“的視窗,并把該指令的執行結果顯示在其中。按下”C-x 1“組合鍵可以關閉這個視窗。由于Shell指令的輸出是在一個編輯緩沖區裡,是以我們可以對它進行編輯、儲存等操作。
  2. M-| cmd RET:運作Shell指令,并使用編輯視窗中標明的區域作為該Shell指令的輸入,然後可以選擇是否用該Shell指令的輸出來替換編輯視窗中選中的區域。
  3. C-u M-! cmd RET:執行一條Shell指令,并将其輸出放到編輯區中光标所在的位置處,而不将其輸出到”Shell Command Output“視窗。
  4. M-x shell:運作一個子Shell,該子Shell對應于emacs中的一個名為”*Shell*"的緩沖區,此後,我們就可以互動式的運作Shell指令了。
  5. M-x term:運作一個子Shell,該子Shell對應于emacs中的一個名為“*Terminal*”的緩沖區。使用該指令獲得的子Shell是一個完整的Shell的模拟,與我們直接在Shell中操作沒有什麼差别。
  6. M-x eshell:運作emacs shell。該Shell為emacs自己實作的一個shell,而前面運作的shell都為系統中的shell程式(例如:/bin/csh等)。我們可以通過設定變量shell-file-name來設定emacs所使用的預設shell

* Dired功能

  1. emacs的Dired(Directory Editor)功能使emacs緩沖區能夠用來顯示目錄清單,并可以用來進入目錄的子目錄。Dired緩沖區是隻讀的,不能夠被修改。
  2. C-x d:進入Dired

* emacs配置檔案

    emacs配置檔案通常位于計算機的 $HOME 目錄,如果是 MS Windows (Windows 2000, Windows XP以上),預設是 c:\Documents and Settings\username\Application Data\,這個适用于 Emacs22 以上的版本。Emacs21 預設的 $HOME 目錄在 C:\ 。當然也可以通過環境變量 $HOME 重新設定,總之在比較大衆化的作業系統中,你都可以通過C-x C-f ~/.emacs 來編輯您的個性化配置檔案。

;;顯示時間

(display-time)

;;顯示行号

(column-number-mode t)

(show-paren-mode t)

;;設定TAB寬度為4

(setq default-tab-width 4)

;;以下設定縮進

(setq c-indent-level 4)

(setq c-continued-statement-offset 4)

(setq c-brace-offset -4)

(setq c-argdecl-indent 4)

(setq c-label-offset -4)

(setq c-basic-offset 4)

(global-set-key "\C-m" 'reindent-then-newline-and-indent)

(setq indent-tabs-mode nil)

(setq standard-indent 4)

;;開啟文法高亮。

(global-font-lock-mode 1)

;;設定預設工作目錄

(setq default-directory "/home/test/source/")

;; 去掉滾動條

(set-scroll-bar-mode nil)

;;關閉開啟畫面

(setq inhibit-startup-message t)

(setq indent-tabs-mode t)

;;不産生備份檔案

(setq make-backup-files nil)

;;設定自定義變量

(custom-set-variables

'(column-number-mode t)

'(current-language-environment "UTF-8")

'(display-time-mode t)

'(ecb-options-version "2.32")

'(mouse-1-click-in-non-selected-windows t)

'(mouse-drag-copy-region t)

'(mouse-yank-at-point t)

'(save-place t nil (saveplace))

'(show-paren-mode t)

'(transient-mark-mode t))

(custom-set-faces

;;選擇小工具欄圖示

(tool-bar-mode -1)

rectangle(列)模式編輯 和emacs shell(摘抄)

不敢獨享,與大家分享。也可以在Emacs中用C-x C-h列出全部指令,查找C-x r c,所有列模式指令都是以C-x r開始的

C-x r [email protected]                    point-to-register

C-x r SPC                    point-to-register

C-x r +        increment-register

C-x r b        bookmark-jump

C-x r c        clear-rectangle

先用C-space或者[email protected]設一個mark,移動光标到另一點,使用C-x r c可以清楚mark到光标處的矩形區域,該區域留下空白。

C-x r d        delete-rectangle

删除矩形區域,不留白白,後面的字元前移

C-x r f        frame-configuration-to-register

C-x r g        insert-register

C-x r i        insert-register

将某個寄存器的内容插入某處

C-x r j        jump-to-register

C-x r k        kill-rectangle

就是剪切某個標明的矩形區域,用C-x r y可以貼上

C-x r l        bookmark-bmenu-list

C-x r m        bookmark-set

C-x r n        number-to-register

C-x r o        open-rectangle

在標明的矩形區域插入空白

C-x r r        copy-rectangle-to-register

将標明的矩形區域複制到某個寄存器

C-x r s        copy-to-register

C-x r t        string-rectangle

在標明區域所有列前插入同樣的字元

C-x r w        window-configuration-to-register

C-x r x        copy-to-register

C-x r y        yank-rectangle

類似于矩形區域的粘貼,就是将剛用C-x r k剪切的矩形區域粘貼過來

C-x r C-SPC    point-to-register

摘自:http://chandlewei.blogbus.com/logs/15583440.html

在 Emacs 裡面同時打開多個 shell 會話:

通過重命名shell所在緩沖區的名字可以開啟多個shell

E-x shell

E-x rename-buffer shellA

E-x shell

這時就開啟了兩個不相幹的shell:shellA 和*shell*

也可以通過其他方式來開啟shell,例如:

1. M-x eshell    開啟Emacs Shell

2. M-x term      開啟linux終端,可以指定你要的終端SHELL。但是這個可能會攔截你的EMACS指令。

整理你的螢幕:

通過C-c C-o可以清除上次指令的輸出,特别是對于cat或dmesg這種産生大量輸出的指令。

詳細文章:http://www.ibm.com/developerworks/cn/aix/library/0811_yangbh_emacs2/index.html

文章來源: http://x-spirit.spaces.live.com/Blog/cns!CC0B04AE126337C0!826.entry