emacs chinese manual

  ----------Emacs 中文學習手冊----------                       2009年2月24日
  目錄 
  1 GNU和Emacs簡介
    1.1 GNU工程簡介
    1.2 Emacs歷史介紹
  2 Emacs基本知識介紹
    2.1 Emacs的界面元素
    2.2 Emacs的緩衝區和視窗
    2.3 Emacs設定環境配置
    2.4 Emacs基本術語
    2.5 Emacs的Completion功能
  3 Emacs 操作
    3.1 緩衝區的操作
    3.2 視窗的操作
    3.3 文檔的打開與保存
    3.4 在Emacs 中的輸入和顯示
    3.5 Emacs中移動光標

    3.6 指令的數值參數
    3.7 獲取行列信息
    3.8 文件的刪減
    3.9 標記區塊(見Emacs 中文學習手冊-2)
    3.10 區塊的拷貝與移動(見Emacs 中文學習手冊-2)
    3.11 撤銷操作(Undo!)與重做操作(redo)(見Emacs 中文學習手冊-2)
    3.12 查找操作(見Emacs 中文學習手冊-2)
    3.13 替換操作(見Emacs 中文學習手冊-2)
    3.14 目錄編輯功能 Dired(見Emacs 中文學習手冊-2)
   1:GNU和Emacs簡介    
1.1 GNU 工程簡介 目錄
 摘自WikiPedia。1985年,Richard Stallman(理查德.斯托曼)創立了自由軟件基金會(Free Software Foundation) 來爲GNU計劃提供技術,法律及財務支持。到了1990年,GNU計劃已經開發出的軟件包括了一個功能強大的文字編輯器Emacs,C語言 編譯器GCC以及大部分UNIX系統的程序庫和工具。唯一依然沒有完成的重要組件就是操作系統的內核(稱爲HURD)。1991年, Linus Torvalds(林納斯.託瓦茲)編寫出了與UNIX兼容的Linux操作系統內核,並在GPL條款下發布。Linux之後在網上廣泛流傳, 許多程序員參與了開發和修改。1992年,Linux與其他的GNU軟件結合,完全自由的操作系統正式誕生。該操作系統往往被稱 爲"GNU/Linux",或簡稱Linux。儘管如此,GNU計劃自己的內核Hurd依然在開發中,目前已經發布Beta版本。GNU工程十幾年來 已經成爲一個對軟件開發主要的影響力量,創造了無數的重要工具,例如:強健的編譯器GCC,有力的文本編輯器Emacs,甚至一個 全功能的操作系統。    
1.2 Emacs歷史介紹目錄
 Emacs在1970年誕生於MIT人工智能實驗室(MIT AI Lab),在此之前,人工智能實驗室的ITS上運行的操作系統PDP-6和 PDP-10的默認編輯器是一個叫做TECO(Text Editor and Corrector)的編輯器。與現代的文本編輯器不同,TECO將擊鍵,編 輯和文本顯示按照不同的模式處理。在TECO上擊鍵並不會直接將這些字符插入到文檔裏去,必須輸入一系列的TECO指令,而被編輯 的文本在輸入命令的時候是不會顯示在屏幕上的。
      1970年代初,Richard Stallman訪問Stanford AI Lab時見到了那裏的”E“editor。這種編輯器有着所見即所得的直觀 特點,深深打動了Stallman。那時候MIT AI Lab的黑客Carl Mikkelsen已經給TECO加上了稱作"Control-R"的編輯顯示模式, 使得屏幕能跟隨用戶的每次擊鍵刷新顯示。Stallman重寫了這一模式,使它運行得更有效率,後來又加入了宏,允許用戶重新定義運 行TECO程序的鍵位。這一新版的TECO立刻在AI實驗室流行開來,並且很快積累了大量自定義的宏,這些宏的名字通常就以“MAC”或者 “MACS"結尾,意爲”宏“。兩年後,Guy Steel承擔起統一當時存在的各種鍵盤命令集的工作。Steele和Stallman經過一夜奮戰, 最終由Stallman完成了這一任務,包括一套擴展和註釋新的宏包的工具。這個完成的系統被稱作EMACS,代表“Editing MACros"。
      隨後的幾年裏,開發出了許多運行於其他操作系統的類Emacs的編輯器,包括由Michael McMahon和Daniel Weinreb編寫的 SINE,EINE,ZWEI。1978年,Honeywell的Cambridge Information System Lab的Bernard Greenberg用Maclisp編寫出 Multics Emacs,第一次完全採用Lisp作爲擴展語言。Lisp語言提供了前所未有的靈活性,因此被後來的Emacs開發者沿用。最早 在Unix上運行的Emacs類編輯器是1981年James Gosling編寫的Gosling Emacs(Gosling後來發明了Java編程語言)。1984年, Gosling Emacs 成爲專有軟件(Proprietary software)。
      1984年,Stallman開始致力於開發GNU Emacs,這是一個自由軟件,以代替Gosling Emacs。GNU Emacs是GNU計劃的第 一個項目,以C語言編寫,將Emacs Lisp作爲擴展語言。GNU Emacs最廣泛發佈的版本事15.34,出現於1985年。實際上版本2到12 並不存在,GNU Emacs的早期版本都是以"1.x.x"的形式編號,直到1.12版時,開發人員放棄了這一記法。因此,Version 13是第 一個公共發行的版本,它發佈於1985年3月20日。GNU Emacs和Gosling Emacs一樣運行在Unix系統上。不過,GNU Emacs功能更 多,特別它有一個真正的lisp作爲擴展。結果,GNU Emacs很快就取代了Gosling Emacs ,成爲Unix系統上事實的Emacs 編輯器。
      到1999年爲止,GNU Emacs的開發工作基本上是在封閉的情況下進行。後來,GNU Emacs項目建立了公共開發郵件列表和匿名CVS 代碼訪問。現在的開發在一個CVS代碼倉庫中進行,最新的版本是23.0.60 。Richard Stallman一直以來是GNU Emacs的維護者。 他於2008年將代碼的維護工作交給了Stefan Monnier 和Chong Yidong。
      Emacs 不僅僅是一個編輯器,他是一個整合環境,或可稱它爲集成開發環境,這些功能讓使用者置身於全功能的操作系統中,在 給予編輯器的功能基礎上,Emacs自行開發了一個"Bourne-shell-like"的shell:EShell。  2:Emacs基本知識    
2.1 Emacs的界面元素目錄
 這裏以純文本的界面爲例,也就是通過 emacs -nw 來啓動的情況。Emacs啓動後的界面從上到下依次爲:緩衝區窗口,信息欄 (英文叫:mode line 應該翻譯成模式行,這一行也確實顯示了編輯模式的信息,但是它也顯示了許多關於所編輯的緩衝區的其他的 信息,翻譯成信息欄從意義上也可以),回顯區(echo area)。
      緩衝區窗口是用來編輯文件的,Emacs把它所編輯的文檔放在內存的緩衝區中編輯,直到用戶保存了文檔,才保存到原來的文檔裏, 即使Emacs對文檔進行自動保存,它也不是保存到源文件裏。所以,Emacs裏所編輯的文檔都被稱作緩衝區。
      信息欄會顯示當前編輯文檔的一些信息,比如:緩衝區的名字,編輯模式,當前光標所在的行數和列數。我的信息欄當前顯示的內 容如下:
      -UUU:**-F1  Emacs中文手冊        47% L27   (Fundamental)----------------------------------------
      -UUU 代表???
      **-:*代表未保存,-代表可寫,如果出現%代表只讀
      47%代表光標的位置所佔整個緩衝區的比例,還可能事 All(代表着一個屏幕就顯示了緩衝區的所有內容),Top(代表當前屏幕位 於緩衝區的頂端),Bot(代表當前屏幕位於緩衝區的底部,即當前屏幕下面沒有內容了)。
      L27代表當前光標所在的行號;
      Fundamental 表示當前的編輯模式。

      回顯區(echo area,minibuffer):回顯區用來回顯用戶的輸入(參數或者命令),回顯區不顯示只有一個字符的指令,比如:Ctrl-e。 對於多個字符的指令,只要鍵入字符的時候給予稍許的停頓,echo area 就會把鍵入的指令回顯出來。等第一次的迴應產生時,再輸入 的部分就不需要再給於停頓的時間,其迴應會在輸入的同時立即產生。echo area 除了回顯指令之外,也會將指令的回饋顯示出來, 錯誤信息也會顯示在這裏。
         
2.2 Emacs的緩衝區和視窗目錄
 緩衝區是Emacs用來存放所編輯的文檔的內存區,我們是通過視窗來看到緩衝區的內容的,我們對文檔的所有改動都是在緩衝區 中進行的。只要用戶不將緩衝區的內容存回硬盤裏的文檔,那麼硬盤裏的文檔是不會隨着緩衝區而有任何改變的。爲了減少因一些意外 關機等因素造成的用戶資料的丟失,Emacs會將用戶正在編輯的文檔自動存儲在一個暫存檔裏面,這個暫存檔的名字類似於這樣:".#myfile", 可以看到他是一個隱藏文件。這種自動存儲動作默認情況下會在用戶輸入300個字符或者間隔30秒的時間發生。在用戶用Emacs打開文 檔的時候,Emacs 也會建立一個暫存文檔"myfile~",這個文檔保存了打開之前的文檔內容。這樣來保護用戶的資料,防止誤操作引 起的丟失。可以通過Alt(ESC)-x recovery-file來從暫存檔中恢復文檔。    
2.3 Emacs設定環境配置目錄
 Emacs中的一些變量的設置可以通過Ctrl-h v 快捷鍵來查看,通過Alt-x set-variable 命令來設置變量。可以設置肯定或 否定:nil 代表否定,non-nil代表肯定,t也可以代表肯定。例如,查看和設置auto-save-visited-file-name這個變量的方法如下:
     ① 鍵入Ctrl-h v RET
     ② echo area 會出現:Describe variable:
     ③ 在冒號之後鍵入auto-save-visited-file-name
     ④ 在屏幕上會出現一個新的窗口,顯示如下的內容:
      auto-save-visited-file-name is a variable defined in `C source code'.
      Its value is t
      Documentation:
      Non-nil says auto-save a buffer in the file it is visiting, when practical.
      Normally auto-save files are written under other names.
      You can customize this variable.
    ⑤ 輸入Alt-x set-variable,回顯區會顯示出Set variable:,在冒號輸入:auto-save-visited-file-name RET,這時
 候回顯區會顯示:”Set auto-save-visited-file-name globally to value:“ 在冒號後輸入nil 或者t來設置變量的值。
    在Emacs執行過程中所設置的變量的值,只對目前所執行的Emacs有用,一旦離開當前的Emacs,所有的設定都會恢復成原來的預設 值。需要將所有設定的變量的值存在名爲“.Emacs”的文檔裏,這個文檔是Emacs的配置文件,Emacs啓動時會讀取裏面的設置。它所 採用的語句都是遵循Elisp語法的。
     可以在.emacs文件中加上這麼一句,來使設置保存下來:(setq auto-save-visited-file-name t)
     有關自動存儲的設定還有下面的變量:
     delete-auto-save-file:設定文檔被存回硬盤後,自動存儲的暫存檔會不會被刪除;
     auto-save-interval:設定自動存儲的字符數;
     auto-save-timeout:設定自動存儲的間隔時間。
    
2.4 Emacs基本術語目錄
 Emacs中有兩個重要的按鍵:Alt-x和Ctrl-x。 按鍵Alt-x代表Alt-x,即先按下Alt鍵,在不釋放Alt鍵的情況下按下x鍵, 如果鍵盤上沒有Alt鍵,也可以用Esc鍵代替Alt鍵。按鍵Ctrl-x代表Ctrl-x,即先按下Ctrl鍵,在不釋放Ctrl鍵的情況下按下x鍵。      Ctrl x代表按下Alt鍵後釋放掉,再按下x鍵。可見,按鍵序列中間的那個短線代表按鍵是不是連接上了。
      Emacs中的指令輸入都是在先按下Alt-x鍵之後再輸入指令的,比如按下Alt-x之後,在回顯區(echo area)會顯示出Alt-x, 此時你輸入save-buffer,然後按下回車鍵,回顯區會顯示:Wrote /home/...(你的文件的保存地址)。這就是保存文件的命 令(Command)。它還會告訴你這條指令有一個快捷鍵(hotkey):Ctrl-x Ctrl-s。可以看到,這個快捷鍵是Ctrl-x開頭的,事 實上一般的快捷鍵也是如此。並不是所有的命令都有快捷鍵,比如說set variable這個命令就沒有對應的快捷鍵。
    
2.5 Emacs的自動完成(Completion)功能目錄
 Emacs具有對於用戶輸入自動完成的功能,這包括輸入命令,文件名,緩衝區,Emacs中的參數等。自動完成功能主要有以 下三個鍵:?,SPC(空格鍵),TAB鍵。?(問號鍵,是通過SHIFT-/來輸入的)鍵會在一個新的窗口中顯示當前所有的選項,SPC鍵會 自動填充Emacs能夠確定的一個字(word),TAB鍵會自動填充Emacs能確定的剩下的輸入,如果由於存在多種選擇,Emacs不能 確定該匹配哪種輸入,那麼Emacs也會一個新的窗口中顯示所有可能的輸入。也就是說,Emacs只會自動完成它能確定的輸入,對 於它不確定的輸入,它不會自動完成。以M-x save-buffers-kill-emacs爲例:如果你輸入Alt-x save-b ,這時候按以下 空格鍵,Emacs會自動幫你把buffers這個單詞寫完,如果你指數入了Alt-x save- ,然後按下空格鍵,它就會顯示出所有 以save打頭的命令,因爲Emacs不知道如何決策。如果你輸入Alt-x save-b 然後按下TAB鍵,它也會把buffer這個單詞自動 補齊,但是它會提示:complete but not uniqe。因爲這時候前綴爲save-buffer的命令有兩個。如果你輸入Alt-x save-buffers  然後按下TAB鍵,這時候,Emacs會自動完成save-buffers-kill-emacs這整條命令。如果此時你按下空格鍵,Emacs只會自動 完成kill這個單詞。從這可以看到空格鍵和TAB鍵的區別。TAB鍵完成它所能確定的整條命令,而空格鍵之完成它所能確定的一個 單詞。你輸入Alt-x save 後按下?鍵,Emacs會在一個新的窗口中顯示所有以save 開頭的命令。
  3 Emacs 操作      
3.1 緩衝區的操作目錄
 Ctrl-x b buffername RET (switch-to-buffer) 來切換到指定的緩衝區,輸入Ctrl-x b 後,echo area 會 顯示"Switch to buffer (default *info*): ",默認的緩衝區是除了當前緩衝區之外的最近被訪問的緩衝區。
    Ctrl-x k buffername RET (kill-buffer) 刪除指定的緩衝區,默認刪除當前緩衝區。
    Ctrl-x Ctrl-b (list-buffer) 將當前使用的緩衝區顯示出來,如下所示:
    CRM Buffer               Size   Mode          File
  ___________________________________________________________
    .* Emacs 中文手冊           6251   Fundamental   ~/Emacs中文手冊
    %   *info*              277699 Info          (efaq)Top
    %   *Help*              8708   Help
    *   *scratch*           191    Lisp Interaction
    %   *GNU Emacs*         1078   Fundamental
    ……  ……    ……     ……
    CRM那一列標記緩衝區的狀態,可能的狀態如下:
    "*"   表示此緩衝區被修改過
    "."   表示此緩衝區是當前選擇的緩衝區
    "%"   表示此緩衝區是隻讀的(read-only)
    這些狀態會隨着當前的選擇的緩衝區而組合在一起,比如".*",".%"。
    在上面的Buffer那一列,顯示的是緩衝區的名字,如果緩衝區的名字前後都有一個"*",表示此緩衝區不是從文檔裏讀
 取的,所以它對應的File那一列就是空的。
    Alt-x buffer-menu 也會在當前的窗口中列舉出當前所有打開的緩衝區,回顯區會提示如下的命令:
 "commands : d s x u;f o 1 2 m v ……"。對幾個常用的說明如下:
    d:對光標所在的緩衝區做上刪除標記,即在緩衝區名稱前加上一個"D",此時並未真正執行刪除操作,而只是做一個標記;
    s:對光標所在的緩衝區做上保存標記,即在緩衝區名稱前加上一個"S",此時也並未真正執行保存操作,只是做一個標記;
    x:對做了刪除和保存標記的緩衝區執行相應的操作;
    u:對相應的緩衝區取消所做的標記;
    f:在當前窗口打開光標所在那個緩衝區,這個當前窗口就是顯示緩衝區列表的窗口;
    o:在新的窗口打開光標所在的那個緩衝區,如果此時有兩個窗口,那麼會在除了顯示緩衝區列表的那個窗口的另外
 一個窗口打開緩衝區,如果現在只有一個緩衝區,那麼會新建一個窗口來顯示緩衝區;
    1:最大化顯示光標所在的緩衝區,他會關閉所有其他的窗口;
    2:在當前窗口中打開緩衝區,這和f 好像有相同的效果。有一點不同的是,如果光標在當前打開的緩衝區中按下2,
 那麼會最大化顯示當前緩衝區,而按下f鍵,它就不會最大化顯示當前緩衝區。
    Alt-x buffer-menu 的效果和Ctrl-x Ctrl-b的效果是一樣的,只不過Alt-x buffer-menu 會提示快捷鍵,
 而Ctrl-x Ctrl-b不會提示快捷鍵。
     
3.2視窗的操作目錄
 視窗是顯示緩衝區內容的地方,多個視窗可以顯示同一個緩衝區的內容。Emacs中總有一個當前視窗(current window),
 即光標所在的那個視窗。每一個視窗都有一個光標位置,這個光標位置會隨時被記錄下來,並不隨着視窗或緩衝區的
 改變而改變。當再次回到此視窗的時候,光標仍然會停留在離開前的位置。所以,移動光標的指令只對當前操作的視窗
 產生影響,而對其他視窗不產生影響。有關視窗的操作如下:
    Ctrl-x 0 (delete-window):關閉當前視窗,在當前只有一個緩衝區的視窗的時候,是無法將當前視窗關閉的;
    Ctrl-x 1 (delete-other-windows):最大化當前視窗,也就是關閉了其它視窗;
    Ctrl-x 2 (split-window-vertically):把當前視窗分割成上下兩個視窗,這兩個視窗將分享分割前的空間,
 並且他們對應着同一個緩衝區,因而在內容上是同步的;
    Ctrl-x 3 (split-window-horizontally):將當前視窗分割成左右兩個視窗,這兩個視窗也是顯示同一個緩衝區的內容;
    Ctrl-x ^ (enlarge-window):將當前視窗高度增加;
    Ctrl-x { (shrink-window-horizontally):將當前視窗橫向縮小一些,如果橫向只有一個視窗,那麼這個指令就不會起作用;
    Ctrl-x } (enlarge-window-horizontally):將當前視窗橫向擴大一些,同理,橫向只有一個視窗,這個指令嗯也不起作用;
    Ctrl-u Ctrl-x ^ 是將Ctrl-x ^指令重複執行四次,Ctrl-u n command 這個指令是通用的指令,它是將command指令重複執行n次;
    Ctrl-u n Ctrl-x ^ 就是將Ctrl-x ^指令重複執行n次;
    以上兩個重複執行的指令對於Ctrl-x { 和Ctrl-x }這兩個指令也是適用的。
    Ctrl-l :這個指令是將當前光標所在行置於窗口中央,並且重新顯示窗口;
    Ctrl-v : 指令向下捲動屏幕;
    Alt-v : 指令向上捲動屏幕;
    Ctrl-p : 將光標移到上一行的相同位置,如果上一行的對應位置沒有字符(空格也算是字符,只是不可見而已), 那麼光標將位於上一行的最後一個字符後面;
    Ctrl-n : 將光標移到下一行的相同位置,方式與Ctrl-p指令相同;
    Alt-< : 將光標移到文檔的開頭;
    Alt-> : 將光標移到文檔的結尾;
    Ctrl-x < : 將屏幕向左捲動,想一下,屏幕向左捲動,你將看到每一行的末尾;
    Ctrl-x > : 將屏幕向右捲動,你將看到每一行的開頭;
     
3.3文檔的打開與保存目錄
 Ctrl-x Ctrl-f 組合鍵可以打開文檔,按下這個組合鍵之後,Emacs會自動顯示當前路徑,如果你所要打開的
 文檔就在當前路徑下,只要在minibuffer裏輸入文檔的名稱即可,如果你所要打開的文檔不是minibuffer中顯示
 的路徑,你可以輸入一個"/",然後再輸入你想要打開的文件的完整路徑,這個斜槓的意思是,它前面的路徑無效,
 後面輸入的路徑纔是要打開的文檔的路徑,可以看到,minibuffer中顯示的路徑被括在一對大括號中了,表示無效。
 實際上,輸入代表當前用戶的主目錄的"~"符號,也可以將minibuffer中顯示的路徑括在一對大括號中。也可以
 用Backspace鍵來刪除部分字符來找到想要打開的文檔的路徑。
    Emacs可以以FTP的方式編輯遠程的文檔,格式如下:/host:filename,它由一個斜槓,一個冒號,遠方主 機名和文檔的完整路徑名四個部分組成,比如:/[email protected]:~/work/text.tex。
        如果在輸入了Ctrl-x Ctrl-f之後不輸入文檔名,直接按下回車鍵,那麼Emacs會在窗口中顯示當前目錄下的 所有文檔,這時候你可以利用d,s,x,u,f,o,1,2等鍵來打開相應的文檔,具體內容如前所述。
    打開一個文檔後,Emacs要做如下事:
    ① 產生一個新的緩衝區
    ② 將所要編輯的文檔內容拷貝到緩衝區中
    ③ 新建一個視窗來顯示緩衝區
    所以,用戶對文檔所有的操作都是對緩衝區的操作,直到用戶將緩衝區保存到磁盤中,磁盤中的文檔纔會改變。
    Ctrl-x Ctrl-s組合鍵來保存當前的緩衝區。
    Ctrl-x Ctrl-w 組合鍵可以讓用戶重新輸入一個文件名來保存緩衝區,相當於Windows中的"另存爲"。
    Ctrl-x s 指令可以用來存儲所有修改過的緩衝區,輸入此指令時,回顯區會顯示(y,n,!,.,q...)提示信息,
 它們的含義如下:
    y: 同意對當前緩衝區存檔,並且其他緩衝區是否存檔還要詢問;
    n: 不同意對當前緩衝區存檔,對其他緩衝區是否存檔還要詢問;
    !: 對所有的緩衝區都存檔;
    .: 同意對當前緩衝區存檔,並放棄其他緩衝區的存檔,並且離開存檔狀態;
    q: 離開存檔的狀態。
    (離開存檔狀態並沒有關閉緩衝區或者離開Emacs)
    Ctrl-x Ctrl-c 在詢問用戶是否保存緩衝區之後,退出Emacs。
    另外,Ctrl-x i 命令可以在當前文檔中插入所指定的文檔內容;Alt-x pwd 命令可以查看當前的工作目錄。
     
3.4 在Emacs 中的輸入和顯示目錄
 Emacs中的輸入也有兩種模式:插入模式(insert mode),覆蓋模式(overwrite mode)。通過指令
 Alt-x overwrite-mode來在這兩種模式之間切換。如果當前是覆蓋模式,模式線(mode-line)上會顯示出Ovwrt,
 普通模式下顯示的事Fundamental。
    在Emacs中如果一行內容很長,用戶沒有用RET鍵來把一個很長的行截斷,那麼Emacs默認情況會用多行來顯示這一行,
 通過在行尾加上"\\"或者"\"來提示用戶這一行很長,是分成多行來顯示的,實際上它們共同組成一行,中間沒有換行符。
 也可以把一行顯示不下的內容隱藏起來不顯示,這是通過變量truncate-lines來設置的。truncate-lines爲真的時候,
 就會把視窗一行顯示不下的內容隱藏起來,用戶可以通過左右滾屏操作來看到隱藏的內容。
    在Emacs 中可以通過RET鍵來插入一個換行符,此時光標會處於下一行的開始處。還有一個快捷鍵是Ctrl-j也可以
 插入一個換行符,但是此時的光標會根據用戶的之前的縮進方式處在一個帶有縮進效果的位置,這比RET要方便很多。
        通過Ctrl-q可以插入一些特殊的字符,比如:Ctrl-q Ctrl-l插入了一個分頁符,分頁符顯示出來時是一深紅色顯示的^L。
     
3.5 Emacs中移動光標目錄
 Ctrl-f :向前(向右)移動一個字符(一個英文字母或者一個漢字);
    Ctrl-b : 向後(向左)移動一個字符(同上);
    Ctrl-n : 光標移動到下一行的對應位置,如果對應位置沒有字符,那麼光標留在下一行的最後一個字符的後面;
    Ctrl-p : 光標移動到上一行的對應位置,規則同上;
    Alt-f : 光標向右移動一個字(一個英文單詞是一個字,連續出現的漢字算一個字);
    Alt-b : 光標向左移動一個字,同上;
    Ctrl-v : 向下捲動一個屏幕,上一個屏幕的最後兩行會出現在新屏幕的頭兩行,以便於銜接;
    Alt-v : 向上捲動一個屏幕,同上,兩個屏幕之間會有兩行的銜接內容;
    以上指令都可以用 Ctrl-u n command 來實現多次執行,實際上,Ctrl-u 指令對於任何指令都可以實現多次執行;
    Ctrl-x < : 視窗向左捲動;
    Ctrl-x > : 視窗向右捲動;
    Alt-> : 光標移動到緩衝區的最末端;
    Alt-< : 光標移動到緩衝區的最前端;
    在Emacs 中可以通過下面的兩個命令移動到指定的行和列:
    Alt-x goto-char RET n : 這個指令會將光標移動到從緩衝區開頭的第一個字符算起的第n個字符,一箇中文漢字算一個字符, 一個英文字母也算一個字符;
    Alt-x goto-line RET n : 這個指令將光標移動到從緩衝區的第一行算起的第n行;
     
3.6 指令的數值參數目錄
 指令的樹值參數在前面也多次提到過,它的格式如下:
       ①  Ctrl-u n command/char   或者 Alt-n command/char;
       ②  Ctrl-u m Ctrl-u n 或者 Alt-m Ctrl-u n;
    第一種指令中的兩條指令是等價的,用來將指令command重複執行n次,或者一次輸入n個字符char。其中第二條指令就是 用Alt-n 代替了第一條指令的Ctrl-u n,因而更簡潔一些。
    第二種指令的兩條指令也是等價的,原理如上。它是用來一次輸入m個數字n,注意m在前,表示重複的次數;n在後,表示 所要輸入的數字。這個指令只能實現一位數即0~9的重複輸入,不能重複輸入兩位數。
     
3.7 獲取行列信息目錄
 Alt-x what-page :獲取當前光標所在的頁數和行數,比如:page 1,line 165;
    Ctrl-x l(count-lines-page): 獲取當前光標所在頁的總行數和光標所處位置前後的行數,
 如:Page has 167 lines (166 + 2),括號外面的167表示總行數,括號中的166和2分別表示光標前和後的行數,它重
 復計算了光標所在的那一行,所以和比總行數多1,如果光標在一行的開頭,那麼光標前後的行數之和就等於總行數,
 光標在某一行的結尾時,光標前後的行數和還是比總行數大1。
    Alt-x what-line: 獲取當前光標所在的行數,比如 line 167;
    Ctrl-x = : 獲取光標當前所在位置的字符的信息,比如說,把光標停在漢字"信"上,按下Ctrl-x = 組合鍵回顯區顯示如下:
      Char: 信 (43077, #o124105, #xa845, file ...) point=11598 of 11648 (100%) column=39
    如果把光標停在緩衝區的末尾,它會如下顯示:
      point=11601 of 11609 (EOB)  column=3
    Alt-x = : 獲取選定區域的信息,要想設定區域,用Ctrl-@ 組合鍵來設置區域的起始點,終點爲光標的當前位置,
 顯示的信息可能類似於下面的內容:
     Region has 9 lines, 592 characters
    Alt-x line-number-mode 能夠使行數信息始終顯示在中間的信息欄上,可以在".emacs"文件中
 通過(setq line-number-mode t)來設置這個變量爲真。
     
3.8 文件的刪減目錄
 Emacs中文件的刪減分成兩種類型,一種被稱作事killing,另一種被稱作事deletion。killing是將內容
 從緩衝區中移到一個叫做kill-ring的變量中,你可以通過指令Ctrl-h v kill-ring 來查看這個變量的值,
 它的值是下面這種結構:
        ("內容1" "內容2" "內容3" "……" ……)
    Emacs可以打開多個緩衝區,卻只有一個kill-ring變量,這就是說,緩衝區之間是共享這個變量的,
 Emacs所設計這個共享的變量的目的,一是可以恢復所刪除的內容,另外一個目的是實現各個緩衝區內容的互通,
 只要把甲緩衝區的內容放到kill-ring中,乙緩衝區就可以把到共享的kill-ring中把內容取出,如此一來,
 各個緩衝區之間就可以共享資源了。
    deletion類型的刪除,並不把內容放進kill-ring中,而是將刪除的內容遺棄,此時可以通過Ctrl-x u指令
 來找回。鍵入一次Ctrl-x u 可以恢復到前一個指令的狀態,再鍵入一次就可以恢復到前兩個指令的狀態,如此
 周而復始,就可以恢復到更改前的全貌了。屬於deletion的指令有:刪除字符,空白字符,空白列等。下面詳細說明:
    deletion類型的刪除指令(刪除字符,空格):
     Ctrl-d : 刪除光標所在位置的字符;
     Alt-\ : 刪除光標所在位置之前的所有相連的空白符,如果光標所在位置上就是一個空白符,它會刪除與
 此空白符相連的所有空白符。例如 "a   b",如果光標在"b"處,按下Alt-\,字符串變成"ab",如果光標
 在"a""b"之間,那麼按下Alt-\,字符串也變成"ab";
     Alt-SPC : 刪除空白符,只保留一個,作爲字符間的分割符。
    killing類型的刪除指令(刪除單詞,句子,段落):
     Ctrl-w : 刪除區塊的內容;   
     Alt-d : 刪除一個字(一個英文單詞算是一個單詞,連續的漢字也算一個字);
     Ctrl-k : 刪除此行的剩餘內容,不包括換行符,如果當前光標就在一行的最後一個字符上,那麼將 刪除換行符,也就是上下兩行就連成一行了;
     Ctrl-x Ctrl-o : 這個組合鍵的作用是刪除連續的空白行,如果有多個空白行,則只保留一行;如果
 只有一個空白行,那麼刪除此空白行。可見這個功能也可以有Ctrl-k來完成,但對於多個空白行,這個快捷鍵更方便;
     如何從kill-ring中恢復內容呢? 先按下Ctrl-y 這個快捷鍵(就是粘貼鍵),然後不斷的按下Alt-y 來
 選擇所要恢復的內容即可。kill-ring中的內容彷彿在一個循環鏈表中,Alt-y鍵的作用就是調整指向鏈表結
 點的指針的位置,每按一次Alt-y鍵,指針就指向下一個結點,最後一個結點的下一個結點是鏈表的第一個結點。
 還有一點要說明的事,kill-ring中的內容安排是將最近產生的killing內容放在最前面,也就是我們遍歷的第一個結點
 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章