?? 2.html
字號:
C-_ 等於 C-x u 有些DEC終端機, C-/就是C-_<br> 有時等於C-Shift- -<p>重復執行<p>舉例, 向右移 8個字, C-u 8 C-f<br>C-u 在Emacs里是蠻特別的,用來設定一些引數(argument/repeat count)<br>給其後的命令.<p>C-u 2 0 C-n 向下移 20行<p>有一個特別的例外, C-u 3 C-v 不是翻三頁, 而是整個螢幕向上移三行.<br>據說這比較有意義.<p>C-u 1 0 C-x u UNDO 10次<p>給C-L一個引數會怎麼樣:<br>C-u 0 C-l 會重畫螢幕,并且把目前的行移到螢幕第一行.<p>另外, C-u 100 等於 M-100<br> C-u 數字 等於 M-數字<p>X windows 下,<br>C-left C-right 一次移一個字(word).<br>C-up C-down 移動一段 (paragraphs/C語言的話是block)<br>Home = C-a<br>End = C-e<br>C-Home = M-<<br>C-end = M-><br>PgUp PgDn = M-v C-v<br>設定重覆次數更加簡單,<br>比如要向右移10個字 C-1 C-0 right-arrow<br> 就是按住CTRL, 然後打10就對了, 比 C-u 1 0 簡單.<p>Mouse中鍵用來選取有hi-light的地方.<br> 右鍵是menu-button<p>如果不小心按兩次ESC, 等於 M-ESC, 會有一個訊息跑出來<br>說你按到一個被disable的命令. 這是高級指令, 作者認為<br>初學者用不道,所以會問你要不要啟動它, 一般回答no.<p>如果某一行太長, 螢幕顯示不下, Emacs會在螢幕最右邊打個$,<br>表示此行未完,右邊還有.<p>把一行拆成兩行: 在想拆處按Enter即可.<br>合并兩行為一行: 在行尾按C-d (或行首按DEL)<p>Yank: 吐出被刪掉的(killed)東西.<p>只要用kill (C-k, M-k等) 刪除, 超過一個字的資料,<br>emacs就會把它存起來, 然後C-y 可以把它叫出來.<br>功能跟Cut & Paste一樣. Kill 和delete不一樣, 只有被<br>kill掉的東西才能用yank吐回來.<p>游標在同一地方不動, 連續kill掉的資料會被當成一次kill掉的,<br>yank時會一起回來.<p>被Kill掉的資料是放在稱作 kill ring的資料結構上面, ring就是個圓圈,<br>被kill掉的東西會依序擺在圓圈上. yank 會放回最近一次kill掉的資料.<br>如果不是你想要的話, 用M-y 可以換. (M-y就是告訴emacs, 不對不對,<br>我不是要這一個,換前一個給我).<p>M-y 要緊接在C-y之後.<p>拷貝文字的方法== 連續 C-k 幾次, 把要拷貝的行全部刪掉,<br>然後按 C-y 弄回來. 再到想復制的地方按一次C-y, 就成了.<p>把要拷貝的資料kill掉在yank回來好像很笨. 是有比較文明的<br>方法, 那就是M-w, 不過較麻煩.<p>首先,要先設標記. Mark 用 C-SPC 或 C-@ 設. 然候<br>把游標移到另一端, 按 M-w 就可以把 mark 到 point間的<br>字存到kill ring上. point 就是游標的意思.<p>Emacs不會把Mark起來的地方用highlight表示, 除非在X下.<br>在X下, 可以用M-w 來拷貝用滑鼠反白的文字.<p>kill & yank 就是 cut & paste的意思.<p><br>以上大部份指令對Bash的命令列編輯也有效<p>檔案操作<br>讀檔: Emacs術語叫 finding a file.<br>C-x C-f 然後在mini-buffer輸入檔名. 輸入檔名時, SPC鍵有<br> auto-complete的功能,或者會秀出到目前為止檔名前幾<br>個字和輸入一樣的. (TAB鍵也有類似功能)<p>C-x C-f 叫 find-file<p>C-x C-s 存檔 (save current file, save current buffer)<br>C-x s 存所有的檔<p>C-x i 插入檔案 把另外的檔案的內容讀入目前編輯區內<p>視窗<br>Emacs把檔案讀進來,存在buffer中.<br>我們透過window來看/編輯buffer.<p>兩個視窗會把螢幕切成兩部份, 他們可以同時顯示<br>相同的, 或不同的檔案.<p>對初學者而言, 最需要的是記住怎樣讓不想要的視窗消失:<p>C-x 0 關掉目前的視窗<br>C-x 1 會讓目前的視窗占滿整個螢幕 (One Window),<br> 取消/關掉其他的視窗.<p>Emacs里面有許多功能都會開一個小視窗來和使用者溝通, 顯示訊息.<br>有時候不會自動消失很討厭, C-x 1 就很有用.<p>另一個功能是如何跳到另一個視窗.<br>C-x o (other-window)<p><br>C-x 2 把目前的視窗切成兩個 (水平分割)<br>C-x 3 (垂直分割)<br>C-x 4 是一串與視窗有關的指令.<br>C-x 4 是一串與視窗有關的指令.<br>C-x 5 則是擴展到X的視窗, 稱為frame.<br> C-x 5 2 就是再開另一個X視窗 (frame).<p><br>多檔編輯<br>C-x C-b 看目前有那些buffer (buffer就是emacs放開起的檔案的地方).<br>C-x b 然後在minibuffer輸入buffer的名字,可以切換編輯buffer.<br> TAB鍵也有作用. 有些內部的buffer (就是沒有檔案的buffer),<br> 是用*開頭和結束, 這個也要打, 如*scratch*<p>最候提醒:<br> C-x 1 可以把多馀的視窗關掉.<p><br>Emacs擴充指令<p>前面介紹的emacs按鍵大部份都是C-<chr> 或者 M-<chr>的形式.<br>這是最簡單的按法, 由一對按鍵構成一個指令.<p>Emacs的按鍵可以超過2個以上. 如 C-x 1 或 C-x C-b.<br>一般超過一個按鍵組合的命令都是用C-x 開頭.<p>另外你也可以直接下命令. 按 M-x 之後就可以打一個Emacs命<br>令來執行. 一般這些命令名字都很長, 不過都不常用. 等一下<br>我們會介紹一些. 還有介紹怎麼把這些命令設成按鍵指令.<p>C-x C-c 就是結束Emacs. 不過一般Emacs很笨重, 一旦起動就不輕易<br>退出. 所以比較常用的是C-z<p>C-z 把Emacs暫停, 回到命令列. 當你下次再需要編輯時,打fg %emacs<br>就可以把Emacs喚醒.<p>在X下, C-z會把emacs縮成icon<p><br>mode line<p>emacs編輯畫面由 編輯區(buffer) 狀態列 (modeline) 和對話區 (minibuffer)<br>構成. 這里解釋 modeline 顯示的訊息.<p>以下是個范例:<p> --**-XEmacs: xemacs.qs (Fundamental)----74%-------<p>由後面往前解釋, 74% 表示游標的位置.<p>(Fundamental)表示編輯模式.這是最原始的模式. 編輯不同種類的文章<br>可能希望用不同的模式, 比如說C-mode, lisp-mode, tex-mode, text-mode<br>等等. 在不同模式下可能多一些按鍵出來. 舉例text-mode.<br> M-x text-mode<br>可以切入text-mode, 這是一般人編輯文字使用的模式. 和Fundamental mode<br>沒什麼差異. 不過游標移動時, Emacs對一個字的定義就有所不同, 因而<br>M-f M-b 等移動一個字, 一個段落的指令就可能會停在標點符號的前面.<br>此時狀態列變為... (Text)----70%---<p>以上說的是Major mode. 另外還有minor mode, 其實就是一些額外的功能.<br>比如說, M-x auto-fill-mode 則狀態列顯示 (Text Fill).<br>auto-fill就是自動斷行, 讓文章每行固定有70個字.<p>M-X fundamental-mode 可以變回來.<p>這里要說明一下, emacs在 minibuffer下有auto-completion的功能,<br>也就是打M-x fund 然後按 SPC, 它會自動補全 fundamental-mode,<br>不用全打. 如果有兩個以上的選擇, 它會告訴你. 這個功能對<br>find-file (C-x C-f)等等檔案編輯功能也有效. 前面提過.<br>最後解釋兩個**號. 右邊的*表示文章被修改過了.<br>左邊的* 表示這個編輯區(buffer)可以修改.<br>有一些emacs的buffer是read-only buffer, 就會標成%<br>%%表示檔案是read-only.<p>C-x C-q 可以解開read-only的鎖定, 無論如何你要改這個編輯區.<br>這是個toggle指令, 如果原來是可以修改的, C-x C-q會把它切成<br>read-only.<p><br>Search<p>沒有Search 功能的編輯器簡直就是小朋友的玩具. Search<br>是一項很重要的功能, 所以emacs也提供的很完善.<br> C-s<br> C-r<br> M-x re-search-forward<br> M-x re-search-backward<br> M-x search-forward<br> M-x search-backward<br>以上這些指令是基本的search指令. C-s, C-r是increamental search,<br>就是你打字的同時, emacs就直接幫你找. 一個是forward, 一個是backward.<br>找到了怎麼辦? 按C-g可以取消搜尋, 跳回原來的位置. 按Enter就讓游標<br>停在找到的地方 -- 此時minibuffer顯示:Mark saved where search started<br>什麼意思? 就是isearch幫你在原來的位置設了一個mark, 然後把point<br>(cursor) 移到新的位置.<br>想跳回去原先的地方?<br>C-x C-x 就可以了.(exchange-point-and-mark)<br>C-u C-SPC 可以依序跳回前幾次設mark的地方.<br> (C-SPC是設mark, 給它一個argument, 就是反動作)<br> (還記不記得C-u 可以給後面的指令設一些參數.<br> 有些指令拿這個參數來當作repeat count,<br> 有些指令就只拿來當作on/off, true/false, set/clear而已)<p>M-x re-search-forward可以讓你用regular expression搜尋.<br>M-x search-forward則沒有increamental的功能.<p>另外一個指令, 作用和grep很像:<br>M-x occure<p>和search相提并論的就是replace.<br>M-x replace 然後按 SPC, 就知道了.<p>Emacs的設定:<p>Emacs的設定檔是 $HOME/.emacs<br>你應該多少知道, emacs是用lisp寫成的編輯器, .emacs檔也都是<br>要用lisp的語法設定. emacs用的lisp稱為elisp, 和一般的lisp差一點點.<p>有一個info page, emacs-lisp-intro, 深入淺出的介紹emacs lisp.<br>如果你還不會, 不懂programming, 強烈建議你看這份文件. 如果你<br>會texinfo, 你可以把它很漂亮的印出來. (內容一點點而已, 兩三<br>天就看完了)<p>如果你把.emacs搞砸了, 進emacs很奇怪, 怎麼辦?<br> 1. 用 vi 改 .emacs :><br> 2. emacs -q 進 emacs<p><br>Major Modes<p>一般常見的emacs major mode有<br> fundamental-mode<br> text-mode<br> lisp-mode 有自動對括號/重排, 直接執行lisp code功能.<br> c-mode/cc-mode c-mode是比較舊的c-mode, cc-mode應該是<br> 目前新的c-mode. 有自動重排/對括號的功能.<br> 也可以在emacs內compile, 跳到compiler error<br> 修正錯誤. 執行程式時debug. (配合dbx/gdb)<br> compile是透過Makefile進行.<br> tex-mode Tex/Latex編輯模示. 可能是打一些奇怪的標點<br> 符號比較方便.<br> <programming-language>-mode<br> 同lisp/cc-mode. 如果是interpreter的話,<br> emacs通常都可以直接執行/debug.<br> <programming-language>-mode還有tags的功能, 後述.<p> html-mode, texinfo-mode, sgml-mode: 編寫html, texi, sgml之用.<br> w3-mode WWW browser. 在x-win上不滿意,但可以接受...<p><br>Tags<p>Tags 是一個顯為人知的功能? 所以我想提一下. 這不是emacs發明的,<br>而是vi 原本的特異功能. emacs只是發揚光大而已.<br>假設你有一個目錄, 里面是一個程式的原始碼, 比如說, tin 的原始碼,<br>放在 ~/tin-1.3beta 下面. 你想看它們.<p>首先, 叫emacs cd到該目錄:<br>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -