天天看點

VI 的用法

Vi 已經是 Unix 系統中标準的文字編輯器, 每個網管人員都必須熟悉它, 因為你會在維護系統時常常遇到它.

Vi 對初學者而言, 第一印象總是不好, 覺得它難用. 其實, 大家在用慣了辦公室軟體之後, 再回過頭來用這些未見過的怪物, 難免無法适應, 這是很正常的. 但别忘了, 各位都将是學校中重要網管的人員,您的角色不再是純粹的使用者, 而是一位面對複雜網絡的管理者及問題解決者, 你必須能夠親手操控你的系統, 設定你的系統, 調整你的系統, 而這個過程, 你就不得不去面對 Vi.

進入vi後 有兩種模式

1.編輯模式

2.指令模式

進入vi後預設是指令模式,是以不要亂按 就會得到dd的警告聲,要輸入文字的話 請按a後i 就可以開始輸入文字拉!

輸入結束後 請按esc鍵回指令模式

輸入q就是退出

輸入wq就是存盤後退出

輸入q!放棄存盤強行退出

Vi 的使用

一. 開啟檔案, 關閉檔案

vi 檔案名 開啟檔案

: 進入指令列的方法

q 離開 (指令列)

wq 存盤然後離開 (指令列)

q! 放棄存盤, 強迫離開 (指令列)

ZZ 存盤然後離開 (不在指令列使用)

:e 檔案名 在 Vi 中開啟檔案

二. Vi 的操作模式:

Vi 有二種主要的操作模式, ESC 鍵為單向的切換鍵(由本文輸入模式回到編輯指令模式)

編輯指令模式 : 要 vi 做一些特定目的的動作. 如插入,附加,取代,修改,删除,移動光标,搜尋等等. 若是存盤等動作, 則需在指令列中下達,

欲切換至指令列, 需先按 :

本文輸入模式 : 在此模式下, 任何字元, 皆被視為輸入的資料.

一開始進入 Vi 之後, 即進入編輯指令模式, 你輸入的每一個字元, 皆被預視為一個指令. 有效的指令會被接受, 若是無效的指令, 會産生

beep beep 聲, 以示警告.

若想做輸入的動作, 必須切換為本文輸入模式, 切換的方法, 隻要單按一個特殊意義的字元鍵即可, 如下所示:

按 i 或 I 插入狀态

按 a 或 A 附加狀态

按 R 取代狀态R 會進行連續字元取代

按 s 或 S 删除一個字元;删除光标所在那一列

按 cw, c2b, c$, c0 修改狀态

按 o 或 O 新增空白列

你不必一下子全用上, 隻要會 i, a, o 這個三個模式即可勝任愉快, 因為大部份時候, 你也隻用這三個.

OK, 現在你可以試着在本文輸入模式下, 鍵入一些資料看看. 然後, 按 ESC 切換回編輯指令模式.

三. 移動光标:

Vi 為了适用于各種不同的終端機模式, 是以以字鍵的方式來操控光标.

k j h l 上 下 左 右

Enter 換列

w b 往前一個 word ; 倒退一個 word

0 $ 至該列開頭 ; 至該列尾端

+ - 往下一列; 往上一列

請記住一個要訣:

在 Vi 中, 大部份的指令都可以在其前面加上數字, 該數字表示重複該指令的次數.

例如: 8l 表示往右移動 8 個字元, 3w 表示往前移動三個 word, 2b 表示倒退 2 個 word

注: word 的定義, 連續英數字元形成一個 word, 而其它特殊符号則每一個字元便是一個 word(除非連續特殊字元), 例如: --classify 中含有 2 個 word, 一個是 -- ; 一個是 classify 而 -x, 則有 3 個 word. 在特殊的終端機模式下, 方向鍵也是可以使用的. 如 linux 或 vt100. 其實大部份時候, 你仍可以保有使用方向鍵的習慣. 但大概隻有 local 下才能使用 PgUp , PgDn, End, Home 等鍵喔! 不過, 若你所使用的終端機模式不支援方向鍵, 那麼上表中的按鍵, 就相當重要了.

四. 卷頁:

^f 往下一頁 (forward)

^b 往上一頁 (before)

^d 往下半個螢幕(down)

^u 往上半個螢幕(up)

五. 跳列:

你可以指定跳至某一列位置. 跳動之前, 先檢視一下目前所在列數是多少.

^g 可以顯示目前的位置, 如: "ls.txt" line 53 of 264 --20%-- col 16-23

上面表示, 目前是在第 53 列, 全部共有 264 列, 占該檔百分之20的位置, 目前的光标, 實際是在第23行, 但隻算成第16行, 因為中間有使用

tab 鍵.

80G 或 80gg 跳至第 80 列

G 跳至檔案尾

gg 跳至檔案頭

六. 删除: (但不會進入本文輸入模式)

x 删除一個字元

dd 删除一行

r 取代一個字元

以上皆針對光标目前的所在位置産生作用.

還有 dw, db, de, d0, d$ 等指令, 但你不須一下子全用上. 上表中這三個夠用了.

記住一個要訣: Vi 的指令繁多, 但你真正用上手的不必多, 而且這些也就夠了.

七. undo (回複動作):

若你對上一個動作反悔了, 可以使用 undo 的功能:

u 取消上一個動作所産生的改變

U 取消光标所在那一列所有的改變

:e! 取消所有的改變, 回複至未修改之前

八. 關鍵詞搜尋/取代:

/ 關鍵詞 往下搜尋關鍵詞

? 關鍵詞 往上搜尋關鍵詞

n 重複搜尋指令(不管往下或往上)

N 和 n 相反方向

cw字元串 以該字元串取代原有的關鍵詞

n. 繼續取代該字元串的動作

%s/目标/取代/g 将目标字元串全換成取代字元串

九. 選取、複制與搬移:

Y 或 yy 選取光标所在那一列

5Y 或 5yy 選取光标列所在共5列(5 隻是一個例子, 可改用其它數字)

p 将選取的内容, 複制至光标之後

P 将選取的内容, 複制至光标之前

cw, x, dd 等删除指令 會将被删除的内容放入 buffer 中, 配合 p 或 P 即可做出搬移的效果.

十. 暫時跳出 Vi:

在編輯過程中, 你可能想要執行其它指令, 方法如下:

:! 指令 執行該令命

:sh 暫時跳出 Vi, 欲回 Vi 按 ^d 或 exit