Emacs 啟動: 直接打emacs, 如果有X-windows就會開視窗. 如果不想用X 的版本, 就用 emacs -nw (No windows)起動. 符號說明 C-X 表示按住CTRL鍵, 然後按X, 再把CTRL, X一起放開. M-X META META 在沒有META鍵的電腦上, M-X 等於先按 ESC鍵, 接著按 X鍵. Sun上面META鍵就是菱形的那個鍵. 有些系統META鍵就是ALT鍵.(或者某一邊的ALT鍵) C-X或 M-X的X沒有大小寫分別. Emacs按鍵命令基本上是一串C-<chr>和M-<chr>組成的. 超過兩個以上的按鍵命令, Emacs會在螢幕最下面一行顯示你按過什麼. 這一行叫作mini buffer 結束Emacs按 C-x C-c 取消執行 C-g 有些Emacs命令會跑很久, 可以用C-g中斷之. 按錯鍵也可以按C-g取消. 上下移動 C-p 向上 (previous line) C-n 向下(next line) 左右移動 C-f 向右 (forward) C-b 向左 (backward) 其實Emacs內部沒有行的概念, 把一篇文章放在一個大buffer 裡面, 所以C-f (forward)就是向檔尾移動, C-b (backward) 是移回去的意思, 一次一個字. 翻頁 下一頁 C-v (view next screen) 上一頁 M-v 翻頁時,上一頁末尾會留一點在螢幕最上面,以維持連續性. Emacs在游標接近螢幕最下方時會自動跳半頁, 把檔案往前挪一點, 方便閱讀. 重畫螢幕 C-L Emacs裡面游標的專有名詞叫point. point == 游標目前的 點 游標一次跳一個字(Word) M-f 往後跳 M-b 注意 C-f 與 M-f, C-b 與 M-b的對稱性. 移到行頭 C-a 行尾 C-e 移到句首 M-a 到句尾 M-e (M-a 到上一個句點後面,一個句子的起頭. M-e 到句點後面) 移到檔頭 M-< 檔尾 M-> 刪除游標目前指的/後面的字 C-d 前面的字 DEL (Delete鍵) DEL的正名叫Rubout (Rub out) M-DEL 往回刪一個字(word) M-d 往前刪 (游標後面) C-k 刪至行尾 (kill) M-k 刪到一句子結尾(刪到句點) (kill) 注意Backspace = C-h 在Emacs下是help的意思 後面有(kill)的, 表示此刪除的動作是kill, 不太等於delete. emacs會把kill掉的東西放到kill ring去, 算是一種暫存的地方, 以後可以叫出來.見 yank說明. Undo: C-x u C-_ 等於 C-x u 有些DEC終端機, C-/就是C-_ 有時等於C-Shift- - 重復執行 舉例, 向右移 8個字, C-u 8 C-f C-u 在Emacs裡是蠻特別的,用來設定一些引數(argument/repeat count) 給其後的命令. C-u 2 0 C-n 向下移 20行 有一個特別的例外, C-u 3 C-v 不是翻三頁, 而是整個螢幕向上移三行. 據說這比較有意義. C-u 1 0 C-x u UNDO 10次 給C-L一個引數會怎麼樣: C-u 0 C-l 會重畫螢幕,並且把目前的行移到螢幕第一行. 另外, C-u 100 等於 M-100 C-u 數字 等於 M-數字 X windows 下, C-left C-right 一次移一個字(word). C-up C-down 移動一段 (paragraphs/C語言的話是block) Home = C-a End = C-e C-Home = M-< C-end = M-> PgUp PgDn = M-v C-v 設定重覆次數更加簡單, 比如要向右移10個字 C-1 C-0 right-arrow 就是按住CTRL, 然後打10就對了, 比 C-u 1 0 簡單. Mouse中鍵用來選取有hi-light的地方. 右鍵是menu-button 如果不小心按兩次ESC, 等於 M-ESC, 會有一個訊息跑出來說你按到一個被disable的命令. 這是高級指令, 作者認為 初學者用不道,所以會問你要不要啟動它, 一般回答no. 如果某一行太長, 螢幕顯示不下, Emacs會在螢幕最右邊打個$, 表示此行未完,右邊還有. 把一行拆成兩行: 在想拆處按Enter即可. 合並兩行為一行: 在行尾按C-d (或行首按DEL) Yank: 吐出被刪掉的(killed)東西. 只要用kill (C-k, M-k等) 刪除, 超過一個字的資料, emacs就會把它存起來, 然後C-y 可以把它叫出來. 功能跟Cut & Paste一樣. Kill 和delete不一樣, 只有被 kill掉的東西才能用yank吐回來. 游標在同一地方不動, 連續kill掉的資料會被當成一次kill掉的, yank時會一起回來. 被Kill掉的資料是放在稱作 kill ring的資料結構上面, ring就是個圓圈, 被kill掉的東西會依序擺在圓圈上. yank 會放回最近一次kill掉的資料. 如果不是你想要的話, 用M-y 可以換. (M-y就是告訴emacs, 不對不對, 我不是要這一個,換前一個給我). M-y 要緊接在C-y之後. 拷貝文字的方法== 連續 C-k 幾次, 把要拷貝的行全部刪掉, 然後按 C-y 弄回來. 再到想復制的地方按一次C-y, 就成了. 把要拷貝的資料kill掉在yank回來好像很笨. 是有比較文明的 方法, 那就是M-w, 不過較麻煩. 首先,要先設標記. Mark 用 C-SPC 或 C-@ 設. 然候把游標移到另一端, 按 M-w 就可以把 mark 到 point間的字存到kill ring上. point 就是游標的意思. Emacs不會把Mark起來的地方用highlight表示, 除非在X下. 在X下, 可以用M-w 來拷貝用滑鼠反白的文字. kill & yank 就是 cut & paste的意思. 以上大部份指令對Bash的命令列編輯也有效 檔案操作 讀檔: Emacs術語叫 finding a file. C-x C-f 然後在mini-buffer輸入檔名. 輸入檔名時, SPC鍵有auto-complete的功能,或者會秀出到目前為止檔名前幾個字和輸入一樣的. (TAB鍵也有類似功能) C-x C-f 叫 find-file C-x C-s 存檔 (save current file, save current buffer) C-x s 存所有的檔 C-x i 插入檔案 把另外的檔案的內容讀入目前編輯區內 視窗 Emacs把檔案讀進來,存在buffer中. 我們透過window來看/編輯buffer. 兩個視窗會把螢幕切成兩部份, 他們可以同時顯示相同的, 或不同的檔案. 對初學者而言, 最需要的是記住怎樣讓不想要的視窗消失: C-x 0 關掉目前的視窗 C-x 1 會讓目前的視窗占滿整個螢幕 (One Window), 取消/關掉其他的視窗. Emacs裡面有許多功能都會開一個小視窗來和使用者溝通, 顯示訊息. 有時候不會自動消失很討厭, C-x 1 就很有用. 另一個功能是如何跳到另一個視窗. C-x o (other-window) C-x 2 把目前的視窗切成兩個 (水平分割) C-x 3 (垂直分割) C-x 4 是一串與視窗有關的指令. C-x 5 則是擴展到X的視窗, 稱為frame. C-x 5 2 就是再開另一個X視窗 (frame). 多檔編輯 C-x C-b 看目前有那些buffer (buffer就是emacs放開起的檔案的地方). C-x b 然後在minibuffer輸入buffer的名字,可以切換編輯buffer. TAB鍵也有作用. 有些內部的buffer (就是沒有檔案的buffer), 是用*開頭和結束, 這個也要打, 如*scratch* 最後提醒: C-x 1 可以把多余的視窗關掉. Emacs擴充指令 前面介紹的emacs按鍵大部份都是C-<chr> 或者 M-<chr>的形式. 這是最簡單的按法, 由一對按鍵構成一個指令. Emacs的按鍵可以超過2個以上. 如 C-x 1 或 C-x C-b. 一般超過一個按鍵組合的命令都是用C-x 開頭. 另外你也可以直接下命令. 按 M-x 之後就可以打一個Emacs命令來執行. 一般這些命令名字都很長, 不過都不常用. 等一下 我們會介紹一些. 還有介紹怎麼把這些命令設成按鍵指令. C-x C-c 就是結束Emacs. 不過一般Emacs很笨重, 一旦起動就不輕易退出. 所以比較常用的是C-z C-z 把Emacs暫停, 回到命令列. 當你下次再需要編輯時,打fg %emacs或者fg就可以把Emacs喚醒. 在X下, C-z會把emacs縮成icon mode line emacs編輯畫面由 編輯區(buffer) 狀態列 (modeline) 和對話區 (minibuffer)構成. 這裡解釋 modeline 顯示的訊息. 以下是個范例: --**-XEmacs: xemacs.qs (Fundamental)----74%------- 由後面往前解釋, 74% 表示游標的位置. (Fundamental)表示編輯模式.這是最原始的模式. 編輯不同種類的文章可能希望用不同的模式, 比如說C-mode, lisp-mode, tex-mode, text-mode等等. 在不同模式下可能多一些按鍵出來. 舉例text-mode. M-x text-mode 可以切入text-mode, 這是一般人編輯文字使用的模式. 和Fundamental mode沒什麼差異. 不過游標移動時, Emacs對一個字的定義就有所不同, 因而M-f M-b 等移動一個字, 一個段落的指令就可能會停在標點符號的前面. 此時狀態列變為... (Text)----70%--- 以上說的是Major mode. 另外還有minor mode, 其實就是一些額外的功能. 比如說, M-x auto-fill-mode 則狀態列顯示 (Text Fill). auto-fill就是自動斷行, 讓文章每行固定有70個字. M-X fundamental-mode 可以變回來. 這裡要說明一下, emacs在 minibuffer下有auto-completion的功能,也就是打