天天看點

vi指令詳解

  vi 簡易說明

  要管理好 Linux 系統﹐少不了要對設定檔案進行編輯,如果您用慣了 Microsoft Word 或 Corel Wordperfect 的話,除了 Xwindows 裡面的編輯程式(如 xemacs )用起來尚可應付外,于 Linux 的文字模式下,會覺得檔案編輯程式都沒有 Windows 程式那麼友善。雖然 Linux 下面也有好多種文書編輯器,例如﹕ed、vi、pico、joe、emacs等。

以下我們以最常見到的 vi 這套文書軟體來介紹 Linux 底下的文書編輯動作。

基本上 vi 共分為兩種模式,一種是『編輯模式』,一種被稱為『指令模式』,其中,在指令模式中尚包含『指令列模式』的情況。『編輯』與『指令』這兩種模式的切換動作是以『Esc』來達成的。通常,檔案一開啟或者建立檔時,會成為指令模式,如果要在檔案中輸入字元,就必需以小寫的 i 來進入編輯模式,進入編輯模式後你輸入的咚咚才會顯示出來!那由『編輯模式』要變成『指令模式』時,就直接按『Esc』即可。而若要進入『指令列模式』時,就必須要在指令模式中輸入『:』(冒号),那遊标就會跑到螢幕的最下面一行來等待你輸入啦!

  簡易執行範例

建立檔案:

好了,我們在 Linux 底下建立一個名為 test.dat 的檔案,可以這樣開啟一個新檔案:

[root@tsai root]# vi test.dat

進入編輯模式:

一進入 vi 的畫面你會看到一片空白(烏漆嘛黑的),而且即會進入指令模式,你可以輸入 i 來進入編輯模式,這時候你會看到螢幕的最下方會出現『–INSERT–』字樣:

開始編輯:

這時候你就可以随便按幾個字來輸入一下,在這裡要提醒一下,『Tab』鍵與空白鍵是不一樣的!

回到指令模式:

在編輯模式的時候,不論你按什麼鍵(除了 Esc 之外)都會被視為字元而顯示在螢幕上,這時按下 Esc 鍵後會回到指令模式,如果你會到了指令模式,但是要消除你目前遊标所在行的内容,你可以輸入『dd』,就可以殺掉一整列了!

在指令列模式輸入儲存指令:

OK,我們要存檔了,存檔并離開的指令很簡單,輸入『:wq』即可存檔離開!這時你在提示字元後面輸入『 ls -l 』即可看到我們剛剛建立的 test.dat 檔案啦!

指令列内容說明

如前所述,所謂的指令列或指令模式,就是在最下面一行沒有顯示『–INSERT–』或者『–REPLACE–』字樣的時候。通常在指令列中的指令有下面幾種:(注意,當按下『:』時,遊标會自動移動到螢幕的最下面一行!)

  進入編輯模式:

i 插入:在目前的遊标所在處插入輸入之文字,已存在的文字會向後退;

a 增加:由目前遊标所在的下一個字開始輸入,已存在的文字會向後退:

o 插入新的一行:從遊标所在的下一行枝行首開始輸入文字;

r 取代:會取代遊标所在的那一個字元;

R 全部取代:會一直取代遊标所在的文字,直到按下 ESC 為止;

  遊标移動指令:

k 或向上鍵 向上移一個字元;

j 或向下鍵 向下移一個字元;

h 或向左鍵 向左移一個字元;

l 或向右鍵 向右移一個字元;

H 遊标移動到螢幕頂端;

M 遊标移動到螢幕正中央;

L 遊标移動到螢幕最下方;

+ 遊标移動至非空白字元的下一列;

- 遊标移動至非空白字元的前一列;

[Ctrl] + 螢幕向『後』移動一頁;

[Ctrl] + [f] 螢幕向『前』移動一頁;

[Ctrl] + 螢幕向『後』移動半頁;

[Ctrl] + [d] 螢幕向『前』移動半頁;

[n] 先按數字後再按空白鍵:遊标向後面移動 n 個字元;

0 數字鍵『0』:移動到這一列的第一個字元;

$ 移動到這一行的行尾;

G 移動到最後一行;

nG 移動到第 n 行(常與 :set nu 合用);

J 将目前遊标所在行與下一行連結;

  搜尋指令:

/word 向遊标之後尋找一個名為 『word』的字串;

?word 向遊标之前尋找一個名為 『word』的字串;

:g/word1/s//word2/g 尋找 『word1』這個字串,并且以 『word2』 這個字串取代之;

:n1,n2 s/word1/word2/g 将第 n1 行到 n2 行的字串 『word1』 都改成 『word2』;

:1,$ s/ls/ll/g 将所有檔案内容的 『ls』這個字串改成 『ll』 這個字串;

  删除與複制:

yy 或 Y 複制遊标所在行的内容;

nyy 或 nY 『n』 為數字:複制遊标所在行向下 n 行之内容;

p 将 yy 複制的内容貼到遊标所在行的下面;

x 删除一個字元;

nx 『n』 為數字:删除 n 個字元;

dd 删除遊标所在那一行;

ndd 『n』 為數字:向下删除 n 行;

u 取消前一個動作;

[Ctrl] + [L] 清除螢幕并重繪螢幕

  指令模式:

:wq 将所做修改儲存後離開 vi;

:w 僅儲存檔案;

:w [filename] 将目前的内容儲存到 『filename』這個檔案中(類似另存新檔);

:r [filename] 将 『filename』這個檔案内容加到遊标所在行後面;

:q 離開 vi;

:q! 強制離開 vi ;

  其他指令:

:set number 設定行号,讓你可以輕易的找出錯誤;

:set nonumber 取消設定行号;

:n1, n2 w [filename] 将 n1 到 n2 的内容存成 『filename』 這個檔案;

    OK!會這些指令就已經很厲害了,因為常用到的指令也隻有不到一半!通常 vi 的指令除了常用的幾個外,其他是不用背的,你可以做一張簡單的指令表在你的螢幕牆上,一有疑問可以馬上的查詢喲!

  下面是一張vi的指令鍵盤圖,希望對你有所幫助

<a target="_blank" href="http://blog.51cto.com/attachment/201012/101916493.gif"></a>

本文轉自 sw840227 51CTO部落格,原文連結:http://blog.51cto.com/jerrysun/463458,如需轉載請自行聯系原作者

繼續閱讀