天天看點

Vi指令大全

進入vi的指令

vi filename: 打開或建立檔案,并将光标置于第一行首

vi +n filename: 打開檔案,并将光标置于第n行首

vi + filename: 打開檔案,并将光标置于最後一行首

vi +/pattern filename: 打開檔案,并将光标置于第一個與pattern比對的串處

vi -r filename: 在上次正用vi編輯時發生系統崩潰,恢複filename

vi filename....filename: 打開多個檔案,依次進行編輯

移動光标類指令

h: 光标左移一個字元

l: 光标右移一個字元

space: 光标右移一個字元

Backspace: 光标左移一個字元

k或Ctrl+p: 光标上移一行

j或Ctrl+n: 光标下移一行

Enter: 光标下移一行

w或W : 光标右移一個字至字首

b或B : 光标左移一個字至字首

e或E : 光标右移一個字至字尾

): 光标移至句尾

(: 光标移至句首

}: 光标移至段落開頭

{: 光标移至段落結尾

nG: 光标移至第n行首

n+: 光标下移n行

n-: 光标上移n行

n$: 光标移至第n行尾

H: 光标移至螢幕頂行

M: 光标移至螢幕中間行

L: 光标移至螢幕最後行

0: 光标移至目前行首

$: 光标移至目前行尾

螢幕翻滾類指令

Ctrl+u: 向檔案首翻半屏

Ctrl+d: 向檔案尾翻半屏

Ctrl+f: 向檔案尾翻一屏

Ctrl+b: 向檔案首翻一屏

nz: 将第n行滾至螢幕頂部,不指定n時将目前行滾至螢幕頂部。

插入文本類指令

i: 在光标前

I: 在目前行首

a: 光标後

A: 在目前行尾

o: 在目前行之下新開一行

O: 在目前行之上新開一行

r: 替換目前字元

R: 替換目前字元及其後的字元,直至按ESC鍵

s: 從目前光标位置處開始,以輸入的文本替代指定數目的字元

S: 删除指定數目的行,并以所輸入文本代替之

ncw或nCW: 修改指定數目的字

nCC: 修改指定數目的行

删除指令

ndw或ndW: 删除光标處開始及其後的n-1個字

do: 删至行首

d$: 删至行尾

ndd: 删除目前行及其後n-1行

x或X: 删除一個字元,x删除光标後的,而X删除光标前的

Ctrl+u: 删除輸入方式下所輸入的文本

搜尋及替換指令

/pattern: 從光标開始處向檔案尾搜尋pattern

?pattern: 從光标開始處向檔案首搜尋pattern

n: 在同一方向重複上一次搜尋指令

N: 在反方向上重複上一次搜尋指令

:s/p1/p2/g: 将目前行中所有p1均用p2替代

:n1,n2s/p1/p2/g: 将第n1至n2行中所有p1均用p2替代

:g/p1/s//p2/g: 将檔案中所有p1均用p2替換

選項設定

all: 列出所有選項設定情況

term: 設定終端類型

ignorance: 在搜尋中忽略大小寫

list: 顯示制表位(Ctrl+I)和行尾标志($)

number: 顯示行号

report: 顯示由面向行的指令修改過的數目

terse: 顯示簡短的警告資訊

warn: 在轉到别的檔案時若沒儲存目前檔案則顯示NO write資訊

nomagic: 允許在搜尋模式中,使用前面不帶“\”的特殊字元

nowrapscan: 禁止vi在搜尋到達檔案兩端時,又從另一端開始

mesg: 允許vi顯示其他使用者用write寫到自己終端上的資訊

最後行方式指令

:n1,n2 co n3: 将n1行到n2行之間的内容拷貝到第n3行下

:n1,n2 m n3:将n1行到n2行之間的内容移至到第n3行下

:n1,n2 d: 将 n1行到n2行之間的内容删除

:w: 儲存目前檔案

:e filename: 打開檔案filename進行編輯

:x: 儲存目前檔案并退出

:q: 退出vi

:q!: 不儲存檔案并退出vi

:!command: 執行shell指令command

:n1,n2 w!command: 将檔案中n1行至n2行的内容作為command的輸入并執行之, 若不指定n1,n2,則表示将整個檔案内容作為command的輸入

:r!command: 将指令command的輸出結果放到目前行

寄存器操作

"?nyy: 将目前行及其下n行的内容儲存到寄存器?中,其中?為一個字母,n為一個數字

"?nyw: 将目前行及其下n個字儲存到寄存器?中,其中?為一個字母,n為一個數字

"?nyl: 将目前行及其下n個字元儲存到寄存器?中,其中?為一個字母,n為一個數字

"?p: 取出寄存器?中的内容并将其放到光标位置處。這裡?可以是一個字母,也可以是一個數字

ndd: 将目前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中

轉自

http://kb.discuz.net/index.php?title=Vi%E6%8C%87%E4%BB%A4%E5%A4%A7%E5%85%A8