?? 2.html
字號:
<hr><br><A NAME="I57" ID="I57"></A><center><b><font size=+2>編輯</font></b></center><br><center><A HREF="#Content">[目錄]</A></center><hr><br><A NAME="I58" ID="I58"></A><center><b><font size=+2>Vi</font></b></center><br>Vi 輸入模式<p>要如何輸入資料呢?有好幾個指令可以進入輸入模式:<p>新增 (append)<br>a 從游標所在位置後面開始新增資料,游標後的資料隨新增資料向後移動。<br>A 從游標所在列最後面的地方開始新增資料。<p>插入 (insert)<br>i 從游標所在位置前面開始插入資料,游標後的資料隨新增資料向後移動。<br>I 從游標所在列的第一個非空白字元前面開始插入資料。<p>開始 (open)<br>o 在游標所在列下新增一列并進入輸入模式。<br>O 在游標所在列上方新增一列并進入輸入模式。<p>也許文字敘述看起來有點繁雜,但是只要實際操作一下馬上可以了解這些操作方式。實務很重要,尤其是電腦方面的東西隨時可以嘗試及驗證結果。極力建議實際去使用它而不要只是猛 K 文件,才有事半功倍的效用。(注:此段為廢話。)<p><br>Vi 基本編輯<p>配合一般鍵盤上的功能鍵,像是方向鍵、[Insert] 、[Delete] 等等,現在你應該已經可以利用 vi 來處理文字資料了。當然 vi 還提供其他許許多多功能讓文字的處理更形方便,有興趣的看倌請繼續。<p>在繼續下去之前先來點 BCC 吧。電腦有許多廠牌,不同的硬體及作業系統。PC 也不是僅僅只有 IBM PC 及其相容品而已。事實上,包括鍵盤,終端機等等往往都有不同的規格。這代表什麼?<p>在文書編輯軟體上會遇這樣的問題,某些電腦的鍵盤上沒有特定的幾個功能鍵!那麼不就有某些功能不能用了?這個問題在 Unix 系統上也一樣,幾乎各大電腦廠商都有自己的 Unix 系統,而 vi 的操作方法也會隨之有點出入。我們固然可以用 PC 的鍵盤來說明 vi 的操作,但是還是得提一下這個問題。<p><br>刪除與修改<p>何謂編輯?在這里我們認為是文字的新增修改以及刪除,甚至包括文字區塊的搬移、復制等等。這里先介紹 vi 的如何做刪除與修改。(注意:在 vi 的原始觀念里,輸入跟編輯是兩碼子事。編輯是在指令模式下操作的,先利用指令移動游標來定位要進行編輯的地方,然後才下指令做編輯。)<p>x 刪除游標所在字元。<br>dd 刪除游標所在的列。<br>r 修改游標所在字元,r 後接著要修正的字元。<br>R 進入取代狀態,新增資料會覆蓋原先資料,直到按 [ESC] 回到指令模式下為止。<br>s 刪除游標所在字元,并進入輸入模式。<br>S 刪除游標所在的列,并進入輸入模式。<p>其實呢,在 PC 上根本沒有這麼麻煩!輸入跟編輯都可以在輸入模式下完成。例如要刪除字元,直接按 [Delete] 不就得了。而插入狀態與取代狀態可以直接用 [Insert] 切換,犯不著用什麼指令模式的編輯指令。不過就如前面所提到的,這些指令幾乎是每臺終端機都能用,而不是僅僅在 PC 上。<p>在指令模式下移動游標的基本指令是 h, j, k, l 。想來各位現在也應該能猜到只要直接用 PC 的方向鍵就可以了,而且無論在指令模式或輸入模式下都可以。多容易不是。<p>當然 PC 鍵盤也有不足之處。有個很好用的指令 u 可以恢復被刪除的資料,而 U 指令則可以恢復游標所在列的所有改變。這與某些電腦上的 [Undo] 按鍵功能相同。<p><br>Vi 進階應用<p>相信現在對於 vi 應該已經有相當的認識。處理文字也不會有什麼麻煩才對。如果有興趣善用 vi 的其它功能進一步簡化操作過程,不妨繼續看下去。<p><br>移動游標<p>由於許多編輯工作是藉由游標來定位,所以 vi 提供許多移動游標的方式,這個我們列幾張簡表來說明(這些當然是指令模式下的指令):<p>┌—————┬—————————————┬—————┐<br>│指令 │說明 │功能鍵 │<br>├—————┼—————————————┼—————┤<br>│0 │移動到游標所在列的最前面 │[Home] │<br>├—————┼—————————————┼—————┤<br>│$ │移動到游標所在列的最後面 │[End] │<br>├—————┼—————————————┼—————┤<br>│[CTRL][d]│向下半頁 │ │<br>├—————┼—————————————┼—————┤<br>│[CTRL][f]│向下一頁 │[PageDown]│<br>├—————┼—————————————┼—————┤<br>│[CTRL][u]│向上半頁 │ │<br>├—————┼—————————————┼—————┤<br>│[CTRL][b]│向上一頁 │[PageUp] │<br>└—————┴—————————————┴—————┘<br>┌——┬—————————————————┐<br>│指令│說明 │<br>├——┼—————————————————┤<br>│H │移動到視窗的第一列 │<br>├——┼—————————————————┤<br>│M │移動到視窗的中間列 │<br>├——┼—————————————————┤<br>│L │移動到視窗的最後列 │<br>├——┼—————————————————┤<br>│b │移動到下個字的第一個字母 │<br>├——┼—————————————————┤<br>│w │移動到上個字的第一個字母 │<br>├——┼—————————————————┤<br>│e │移動到下個字的最後一個字母 │<br>├——┼—————————————————┤<br>│^ │移動到游標所在列的第一個非空白字元│<br>└——┴—————————————————┘<br>┌——┬———————————————————┐<br>│指令│說明 │<br>├——┼———————————————————┤<br>│n- │減號移動到上一列的第一個非空白字元 │<br>│ │前面加上數字可以指定移動到以上 n 列 │<br>├——┼———————————————————┤<br>│n+ │加號移動到下一列的第一個非空白字元 │<br>│ │前面加上數字可以指定移動到以下 n 列 │<br>├——┼———————————————————┤<br>│nG │直接用數字 n 加上大寫 G 移動到第 n 列│<br>└——┴———————————————————┘<br>┌————┬———————————————┐<br>│指令 │說明 │<br>├————┼———————————————┤<br>│fx │往右移動到 x 字元上 │<br>│Fx │往左移動到 x 字元上 │<br>├————┼———————————————┤<br>│tx │往右移動到 x 字元前 │<br>│Tx │往左移動到 x 字元前 │<br>├————┼———————————————┤<br>│; │配合 f&t 使用,重復一次 │<br>│, │配合 f&t 使用,反方向重復一次│<br>├————┼———————————————┤<br>│/string │往右移動到有 string 的地方 │<br>│?string │往左移動到有 string 的地方 │<br>├————┼———————————————┤<br>│n │配合 /&? 使用,重復一次 │<br>│N │配合 /&? 使用,反方向重復一次│<br>└————┴———————————————┘<br>┌————┬———————————————————┬——————————┐<br>│指令 │說明 │備注 │<br>├————┼———————————————————┼——————————┤<br>│n( │左括號移動到句子的最前面 │句子是以 │<br>│ │前面加上數字可以指定往前移動 n 個句子 │! . ? 三種符號來界定│<br>│n) │右括號移動到下個句子的最前面 │ │<br>│ │前面加上數字可以指定往後移動 n 個句子│ │<br>├————┼———————————————————┼——————————┤<br>│n{ │左括弧移動到段落的最前面 │段落是以 │<br>│ │前面加上數字可以指定往前移動 n 個段落 │段落間的空白列界定 │<br>│n} │右括弧移動到下個段落的最前面 │ │<br>│ │前面加上數字可以指定往後移動 n 個段落│ │<br>└————┴———————————————————┴——————————┘<p>不要嘗試背誦這些指令,否則後果自行負責。它們看起來又多又雜亂,事實上這是文字敘述本身的障礙。再強調一次,實際去使用它只要幾次就可以不經大腦直接下達這些奇奇怪怪的指令,遠比死記活背搞得模模糊糊強多了。(注:若真的不經大腦而誤刪資料與我無關。另,此段為廢話。)<p><br>進階編輯指令<p>這些編輯指令非常有彈性,基本上可以說是由指令與范圍所構成。例如 dw 是由刪除指令 d 與范圍 w 所組成,代表刪除一個字 d(elete) w(ord) 。<p>指令列表如下:<p>d 刪除(delete)<br>y 復制(yank)<br>p 放置(put)<br>c 修改(change)<p>范圍可以是下列幾個:<p>e 游標所在位置到該字的最後一個字母<br>w 游標所在位置到下個字的第一個字母<br>b 游標所在位置到上個字的第一個字母<br>$ 游標所在位置到該列的最後一個字母<br>0 游標所在位置到該列的第一個字母<br>) 游標所在位置到下個句子的第一個字母<br>( 游標所在位置到該句子的第一個字母<br>} 游標所在位置到該段落的最後一個字母<br>{ 游標所在位置到該段落的第一個字母<p>說實在的,組合這些指令來編輯文件有一點點藝術氣息。不管怎麼樣,它們提供更多編輯文字的能力。值得注意的一點是刪除與復制都會將指定范圍的內容放到暫存區里,然後就可以用指令 p 貼到其它地方去,這是 vi 用來處理區段拷貝與搬移的辦法。<p>某些 vi 版本,例如 Linux 所用的 elvis 可以大幅簡化這一坨指令。如果稍微觀察一下這些編輯指令就會發現問題其實是定范圍的方式有點雜,實際上只有四個指令罷了。指令 v 非常好用,只要按下 v 鍵,游標所在的位置就會反白,然後就可以移動游標來設定范圍,接著再直接下指令進行編輯即可。<p>對於整列操作, vi 另外提供了更方便的編輯指令。前面曾經提到過刪除整列文字的指令 dd 就是其中一個;cc 可以修改整列文字;而 yy 則是復制整列文字;指令 D 則可以刪除游標到該列結束為止所有的文字。<p><br>檔案指令<p>檔案指令多以 : 開頭,跟編輯指令有點區別。例如前面提到結束編輯的指令就是 :q。<br>現在就簡單說明一下作為本篇故事的結尾:<p><br>:q 結束編輯(quit)<br> 如果不想存檔而要放棄編輯過的檔案則用 :q! 強制離開。<br>:w 存檔(write)<br> 其後可加所要存檔的檔名。<br> 可以將檔案指令合在一起,例如 :wq 即存檔後離開。<br>zz 功能與 :wq 相同。<p>另外值得一提的是 vi 的部份存檔功能。可以用 :n,mw filename 將第 n 列到第 m 列的文字存放的所指定的 filename 里去哩。時代在變,世界在變, vi 也在變,不過大致上就這樣。好了,但愿從此以後王子跟公主過著幸福快樂的生活。<p><p><br><center><A HREF="#Content">[目錄]</A></center><hr><br><A NAME="I59" ID="I59"></A><center><b><font size=+2>Emacs</font></b></center><br>Emacs 啟動:<br>直接打emacs, 如果有X-windows就會開視窗. 如果不想用X 的版本,<br>就用 emacs -nw (No windows)起動.<p>符號說明<br>C-X 表示按住CTRL鍵, 然後按X, 再把CTRL, X一起放開.<br>M-X META META<p> 在沒有META鍵的電腦上, M-X 等於先按 ESC鍵, 接著按 X鍵.<br> Sun上面META鍵就是菱形的那個鍵.<br> 有些系統META鍵就是ALT鍵.(或者某一邊的ALT鍵)<p> C-X或 M-X的X沒有大小寫分別.<br>Emacs按鍵命令基本上是一串C-<chr>和M-<chr>組成的.<br>超過兩個以上的按鍵命令, Emacs會在螢幕最下面一行顯示你按過什麼.<br>這一行叫作mini buffer<p>結束Emacs按 C-x C-c<p>取消執行 C-g<br>有些Emacs命令會跑很久, 可以用C-g中斷之. 按錯鍵也可以按C-g取消.<p>上下移動 C-p 向上 (previous line) C-n向下(next line)<br>左右移動 C-f 向右 (forward) C-b 向左 (backward)<p> 其實Emacs內部沒有行的概念, 把一篇文章放在一個大buffer<br> 里面, 所以C-f (forward)就是向檔尾移動, C-b (backward)<br> 是移回去的意思, 一次一個字.<p>翻頁 下一頁 C-v (view next screen)<br> 上一頁 M-v<p> 翻頁時,上一 末尾會留一點在螢幕最上面,以維持連續性.<p>Emacs在游標接近螢幕最下方時會自動跳半頁, 把檔案往前挪一點,<br>方便閱讀.<p>重畫螢幕 C-L<p>Emacs里面游標的專有名詞叫point. point == 游標目前的 點<p>游標一次跳一個字(word) M-f 往後跳 M-b<p> 注意 C-f 與 M-f, C-b 與 M-b的對稱性.<p>移到行頭 C-a 行尾 C-e<br>移到句首 M-a 到句尾 M-e<br> (M-a 到上一個句點後面,一個句子的起頭.<br> M-e 到句點後面)<p>移到檔頭 M-< 檔尾 M-><p>刪除游標目前指的/後面的字 C-d<br> 前面的字 DEL (Delete鍵)<br>DEL的正名叫Rubout (Rub out)<p>M-DEL 往回刪一個字(word)<br>M-d 往前刪 (游標後面)<br>C-k 刪至行尾 (kill)<br>M-k 刪到一句子結尾(刪到句點) (kill)<p><br>注意Backspace = C-h 在Emacs下是help的意思<br>後面有(kill)的, 表示此刪除的動作是kill, 不太等於delete.<br>emacs會把kill掉的東西放到kill ring去, 算是一種暫存的地方,<br>以後可以叫出來.見 yank說明.<p><br>Undo: C-x u<br>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -