vi:
vi有三種狀態,分別是命令模式(Command mode)、插入模式(Insert mode)、和底線模式(Last line)。各模式的功能區分如下:
- Command mode:此模式在於控制游標移動、刪除字元或搬移某個區塊。
- Insert mode:只有在此模式下,才可以輸入文字。
- Last line mode:此模式在於儲存檔案、離開vi、找尋字串、列出行號和求助等等。
你可以鍵入vi <filename> 或vi 來進入vi編輯器。不同的是vi <filename>會以filename做為文件的預設檔名。如果filename存在時,則直接編輯此檔。而直接鍵入vi時則不會預設文件檔的檔名,也不會開啟已存在的檔案。當你進入vi以後,會出現這種畫面 。一開始進入vi時是在Command mode下。你可以從Command mode轉為Insert mode,或從Command mode轉為Last line mode。注意,要開始輸入文字一定要進入Insert mode。以下說明如何在各種模式中轉換。
1.Command mode -> Insert mode: 在Command mode下按'i'、'a'或'o'都可以進入Insert mode,並且可以開始輸入字元資料。這三種輸入文字的方式不太一樣:
- 'i':插入,從目前游標所在之處插入所輸入之文字。
- 'a':增加,從目前游標所在的下一個字開始輸入文字。
- 'o':插入新的一行,並從行首開始輸入文字。
2.Insert mode -> Command mode: 只要在Insert mode下按[ESC]即可回Command mode。
3.Command mode -> Last line mode: 當在Command mode下按':'、'/'或'?'都可進入Last line mode。這時你所鍵入的指令都會出現在最下面一行,如此圖 的最下面一行:w test.txt。這三種進入方式分別代表三種功能:
- ':':按':'後,你可以接著鍵一些特殊的指令如存檔、離開...等等。
- '/':鍵入'/'以後,你可以輸入你所要找尋的字串。vi會從文件開頭往上往下找尋 符合的字串
- '?':鍵入'?'以後,你可以輸入你所要找尋的字串。vi會從文件尾端 由下往上找尋 符合的字串
前面我們提到過,當你啟動vi以後,會在Command mode下。如果你要鍵入文字時,你必須轉到Insert mode。這時若你又想刪除文字,你會發現按倒退鍵居然沒有作用。原來這是vi和pe2不同的地方:vi必須轉換到Command mode下刪除文字。等你文件打完想存檔的時候,你又會發現在Command mode下居然沒有存檔的指令。原來存檔的指令是在Last line mode下。所以底下我們將介紹Command mode和Last line mode下幾個比較常用的功能:
Command mode:
1、移動游標:
- 除了上、下、左、右鍵可以移動游標外,小寫英文字母h、j、k、l也可以用來移動游標。h、j、k、l分別代表左、下、上、右。
- 按[ctrl + b]:螢幕往後移動一頁。
- 按[ctrl + f]:螢幕往前移動一頁。
- 按[ctrl + u]:螢幕往後移動半頁。
- 按[ctrl + d]:螢幕往前移動半頁。
- 按'G':移動到文章的最後一行。
- 按'w':游標移到下個word的開頭。
- 按'e':游標移到下個word的字尾。
- 按'b':游標回到上個word的開頭。
- 按'0':游標移動到所在行的開頭
- 按'$':游標移到所在行的最後一個字元。
- 按'^':移到該行第一個非空白字元。
- 按#|:移到該行的第#個字元,#為一個數字。如5|表示移動游標到第五個字元。
2、刪除文字:
- x:每按一次就刪除游標所在位置的後面一個字元。
- #x:刪除游標所在位置的後面#個字元,如6x。
- X:每按一次就刪除游標所在位置的前面一個字元。
- #X:刪除游標所在位置的前面#個字元,如20X。
- dd:刪除一整行,此行位於游標所在位置。
- #dd:往下刪除#行文字。
3、複製
- yw:將游標所在之處到字尾的字元複製到緩衝區中。
- yy:複製游標所在之行。
- #yy:拷貝目前游標往下數#行的文字。
- p:將緩衝區內的字元貼到游標所在位置。
4、取代
- r:取代游標所在處之字元。
- R:取代字元直到按<ESC>為止。
5、復原上一個指令
- u:若你不小心操作錯誤,可以按u來回復資料。
- ctrl+r:redo
6、更改
- cw:更改游標所在處的字到字尾$處。
- c#w:如c3w代表更改三個字。
7、跳至指定之行
- [ctrl+g]:列出游標所在之行的行號。
- #G:跳至第#行。
Last line mode:
進入Last line mode之前,一定要先進入Command mode才行。然後按':'、'/'、'?'都可以進入Last line mode。前面已經講過按'/'和'?'都是在做搜尋字串之用,所以我們現在只介紹按':'後所能輸入的功能。記得輸入這些命令之前一定要在Command mode下按':'。
1、列出行號
- set nu:鍵入這個命令以後會在文章的每一行前面列出行號。
2、跳到文章的某一行
- #:井號代表一個數字。比如你輸入15並按Enter以後,游標就會跳到第15行。
3、存檔
- w:若你已經有預設文件檔的檔名,則下這個指令可以將你編輯過的檔案存起來。
- w filename:下這個指令可以把你編輯過的文件存在<filename>這個檔案之中。
- #,# w filename:#是指數字,如20,30 w test.txt。這個意思是說把20行到30行的資料存到test.txt檔案中。
4、離開
- q:離開vi
- q!:強制離開vi。有時候按q不能離開vi的話就可以鍵入這個指令強制離開。
- wq:存檔並離開。
5、求助
- help:vi的指令真的是又多又繁雜,所以要背住所有的指令簡直是不可能的事。所以如果你想查詢某個指令的功能時,鍵入help就可以達到這個功能。這是鍵入help以後所出現的畫面 。請看下面那幾行。第一行是說如果你要查詢vi的命令,請鍵入:viusage。所以你只好再乖乖鍵入一次指令,它就會出現vi命令的列表了。第二行說明如果要看ex命令的話,請鍵入:exusage。
http://www.socialwork.com.hk/learn/unix/editor.htm