天天看點

emacs 學習筆記

Emacs基礎HotKey及指令

(注:小括号内為指令,前為HotKey,RET指Enter鍵,如要執行指令需要在指令前加上Meta-x或Esc-x)

1.進入Emacs:

$:emacs RET

2.離開Emacs

$:Ctrl-z (suspend-emacs)

說明:暫時離開Emacs,一般是回到shell的狀态。需回到Emacs的狀态,隻要鍵入“%emacs”。有些Linux版本不支援該功能,如:gentoo。

$:Ctrl-x Ctrl-c (save-buffers-kill-emacs)

說明永久離開Emacs。

離開指令說明:

(1). y :同意對 echo area 所顯示的緩沖區存檔,其它文檔是否存檔,同樣提示。

(2). n :放棄對 echo area 所顯示的緩沖區存檔,其它文檔是否存檔,同樣提示。

(3). ! :同意對 echo area 所顯示的緩沖區存檔,其它文檔一并存檔,不在提示。

(4). . :同意對 echo area 所顯示的緩沖區存檔,其它文檔一并放棄,并不提示。

(5). q :放棄所有存檔狀态,不執行任何存檔動作。

(6). C-r :此指令可用來流 目前所要儲存的檔案内容,當離開此流 狀态 即回複存檔的模

式,系統會再度詢問與存檔有關的訊息。(不是很了解!)

(7). C-h :幫助

3.Emacs螢幕說明(一下讨論,隻針對text-only的終端,不完全适用在X Window)

啟動 EMACS 時,會産生二個預設的視窗,一個視窗用來輸入一般 的檔案,在未有檔案輸入前先用來展示前面提到的EMACS 版本、 線上輔助說明以及有關版權等訊息;另一個視窗用來輸入指令 或是用做訊息的回應,稱為minibuffer或 echo area。

minibuffer

$:Ctrl-x o (other-window)

說明:使遊标在視窗間移動,直到遊标出現在minibuffer所在視窗為止。

$:Ctrl-g (keyboard-quit)

說明:離開minibuffer,遊标出現在其他視窗。

4.Emacs緩沖區

關于緩沖區自動存檔:若所編輯的檔案未存回硬碟時,EMACS 會自動産生一個暫存檔。下次編輯此檔時,EMACS 允予使用者從暫存檔中将流失的資料回複。

例如編輯的檔案為 “emacs.doc”,在離開 EMACS 時未存回硬碟 , EMACS 會自動産生一個 “#emacs.doc#” 的自動儲存檔。當重新啟動 EMACS 且編輯 “emacs.doc”檔時, EMACS 會提示使用者此檔案 已被更改過但未給予适當的儲存。此時,使用者可自行決定是否要從自動儲存的檔案中(#emacs.doc#)将 “emacs.doc“ 檔中 未被儲存的資料找回。

可經由如下的步驟将資料找回:

(1). 鍵入 “Ctrl-x Ctrl-f RET”

(2). Find file: ~/ filename

(3). 在 Find file: 處輸入所要編輯的文檔

(4). 會出現如下的資訊: Auto save file is newer: consider M-x recovery-file

(5). 鍵入“Meta-x recovery-file RET”

(6). 此時 echo area 會自動出現相對應的自動儲存的檔案名稱,若願意執行恢複的動作,隻要直接按下 RET 即可。否則,以“Ctrl-g” 指令,放棄此指令的執行。

除了暫存檔外, EMACS 對於每一個編輯的文檔,都會在編輯前做一份備份,以防止在編輯的過程中因一時的疏忽而将文檔毀損。備份檔的設計是,當檔案被存回硬碟後,備份檔也不會是以而消失。EMACS 命名備份檔的方式,是在所要編輯的檔名之後加上 “ ~ ” 。例如,“emacs.doc”的備份檔就為“emacs.doc~”。

改變緩沖區預設設定指令(以auto-save-visited-file-name為例):

(1). 以“Ctrl-h v”查閱auto-save-visited-file-name的預設值

(2). 以“Meta-x set-variable”來設定參數

(3). 再以“Ctrl-h v”檢視修改後的參數值

該設定方法隻對目前EMACS有效,要保留此設定的參數值,必須将設定的參數值存儲在“.emacs”的文檔中。在 .emacs 檔中設定變數“auto-save-visited-file-name”與“auto-saveinterval”的方法如下所示: (setq auto-save-visited-file-name t) (setq autosave-interval 350)(不是非常清楚!)

參數說明:

auto-save-visited-file-name: 設定自動存儲文檔的種類,可以設定為暫存檔,也可以是在使用的原文檔。

delete-auto-save-file: 設定文檔被存會硬碟後,自動存儲的暫存檔是否會自動删除。

auto-save-interval: 設定自動存儲時的位元組數。

auto-save-timeout: 設定自動存儲的時間。

緩沖區指令說明:

$:Ctrl-x b buffer RET (switch-to-buffer)

說明:用來選擇不同的緩沖區,其預選的緩沖區是目前所使用的緩沖區之外,最近使用過的緩沖區。

$:Ctrl-x Ctrl-b (list-buffer)

說明:将目前EMACS所使用過的緩沖區顯示出來。

$:Meta-x buffer-menu

說明:該指令與“Ctrl-x list-buffer” 相似,隻是使用“Meta-x buffer-menu”指令時,echo area 處會顯

示出可運用的選項。其可運用的選項内容如下所示:Command: d, s, x, u; f, o, 1, 2, m, v; ~, %; q to

quit; ? for help。

選項說明:

(1). d :标示所要删除的緩沖區,此時并為真正的删除緩沖區,下達執行标記的指令(“x”)是才會被删除。

(2). s :标示所要存儲的緩沖區,此時并為真正的存儲緩沖區,下達執行标記的指令(“x”)是才會被存儲。

(3). x :對做好标示的緩沖區,下達執行指令。

(4). u :将設好的标記取消。

(5). f :選擇目前遊标所在的緩沖區。

$:Ctrl-x 2 (split-window-vertically)

說明:将一個視窗分成上下兩個視窗。

$:Ctrl-x ^ (enlarge-window)

說明:将目前遊标所在的視窗拉長一列。此指令隻有在 frame 存在一個以上的視窗時才有效果。

$:Ctrl-u n Ctrl-x ^ (enlarge-window n)

說明:與 Ctrl-x ^ 指令相似。不同之處在於,此指令可以将目前遊标所在的視窗拉長 n 列以上。

$:Ctrl-x o (other-window)

說明:選擇所要使用的視窗。

$:Ctrl-x 0 (delete-window)

說明:将目前遊标所在的視窗删除。

$:Ctrl-x 1 (delete-other-window)

說明:保留目前遊标所在的視窗,其餘的視窗全部删除。(還未使用明白!)

$:Ctrl-l (recenter)

說明:清除螢幕

$:Ctrl-v (scroll-up)

說明:向上滾動螢幕一列

$:Ctrl-u n Ctrl-v

說明:向上滾動螢幕n列

$:Meta-v (scroll-down)

說明:向下滾動螢幕一列

$:Ctrl-u n Meta-v

說明:向下滾動螢幕n列

$:Meta > (beginning-of-buffer)

說明:将螢幕滾動到緩沖區最前端,遊标移至第一列。

$:Meta < (end-of-buffer)

說明:将螢幕滾動到緩沖區最後端,遊标移至最後一列。

$:Ctrl-ESC-v (scroll-other-window)

說明:前面六個卷動螢幕的指令,都是針對遊标所在位置的視窗而言, 若要卷動其它的視窗,則必需使

“Ctrl-ESC-v”。“Ctrl-ESC-v” 指令是用來卷動遊标所在位置下一個視窗的螢幕。

$:Ctrl-x < (scroll-left)

說明:螢幕向左滾動

$:Ctrl-x > (scroll-right)

說明:螢幕向右滾動

$:Ctrl-p 或 ↑ (previous-line)

說明:向上移動遊标

$:Ctrl-u n Ctrl p

說明:遊标向上移動n列

$:Ctrl-n 或 ↓ (next-line)

說明:向下移動遊标

$:Ctrl-u n Ctrl-n

說明:遊标向下移動n列

5.Emacs進入Shell模式

Emacs的模式有兩種,為主要模式(major mode)與次要模式minor mode。

在Emacs中執行Shell

(1). shell command mode

$:ESC-!(shell-command)

說明:進入shell command mode

$:ESC- (shell-command-on-region)

說明:針對某一特定區域執行shell command mode 的 shell 指令。

$:Ctrl-u ESC-!

說明:将 shell 指令執行的結果,輸出到遊标所在的位置。

$:Ctrl-u ESC-

說明:将 shell 指令執行的結果,輸出到遊标所在的位置。

(2). shell mode

$:ESC-x shell

說明:進入shell mode

6.Emacs目錄編輯

進入Dired模式指令

$:ESC-x dired

待續...

繼續閱讀