vi(Visual)是以視覺為導(dǎo)向的全屏幕編輯器、共分為三種方式(mode):
command方式: 任何輸入都會作為編輯命令,而不會出現(xiàn)在屏幕上,若輸入錯誤則有“岬”的聲音;任何輸入都引起立即反映 insert方式: 任何輸入的數(shù)據(jù)都置于編輯寄存器。在command方式下輸入(I,a,A等),可進(jìn)入insert方式,insert方式下按ESC,可跳回command方式。 escape方式: 以“:”或者“/”為前導(dǎo)的指令,出現(xiàn)在屏幕的最下一行,任何輸入都被當(dāng)成特別指令。 進(jìn)入vi(在系統(tǒng)提示符下面輸入以下指令): vi 進(jìn)入vi而不讀入任何文件 vi filename 進(jìn)入vi并讀入指定名稱的文件(新、舊文件均可)。 vi +n filename 進(jìn)入vi并且由文件的第幾行開始。 vi +filename 進(jìn)入vi并且由文件的最后一行開始。 vi + /word filename 進(jìn)入vi并且由文件的word這個字開始。 vi filename(s) 進(jìn)入vi并且將各指定文件列入名單內(nèi),第一個文件先讀入。 vedit 進(jìn)入vi并且在輸入方式時會在狀態(tài)行顯示“INSERT MODE"。 編輯數(shù)個文件(利用vi filename(s))進(jìn)入vi后) :args 顯示編輯名單中的各個文件名 :n 讀入編輯名單中的下一個文件 :rew 讀入編輯名單中的第一個文件 :e# 讀入編輯名單內(nèi)的前一個文件 :e file 讀入另一個文件進(jìn)vi(此文件可不在編輯名單內(nèi)),若原文件經(jīng)修改還沒有存檔,則應(yīng)先以: w 存檔。 :e! file 強(qiáng)迫讀入另一個文件進(jìn)入vi,原文件不作存檔動作。 存儲及退出vi :w filename 存入指定文件,但未退出vi(若未指定文件名則為當(dāng)前工作的文件名)。 :wq 或者 :x或者zz 存文件,并且退出vi. :q 不作任何修改并退出vi。 :q! 放棄任何修改并退出vi。 :!command 暫時退出vi并執(zhí)行shell指令,執(zhí)行完畢后再回到vi。 :sh 暫時退出vi到系統(tǒng)下,結(jié)束時按Ctrl + d則回到vi。 加數(shù)據(jù)指令 i 在關(guān)標(biāo)位置開始插入字符,結(jié)束時候按ESC鍵。 I 在光標(biāo)所在行的最前面開始加字,結(jié)束時按ESC鍵。 a 在光標(biāo)位置后開始加字,結(jié)束時按ESC鍵。 A 在光標(biāo)所在行的最后面開始加字,結(jié)束時按ESC鍵。 o 在光標(biāo)下加一空白行并開始加字,結(jié)束時按ESC鍵。 O 在光標(biāo)上加一空白行并開始加字,結(jié)束時按ESC鍵。 !command 執(zhí)行shell指令,并把結(jié)果加在光標(biāo)所在行的下一行。 刪除指令 nx 刪除由光標(biāo)位置起始的n個字符(含光標(biāo)位置,按一個x表示刪除光標(biāo)所在的字符) nX 刪除由光標(biāo)位置起始的n個字符(不含光標(biāo)位置)。 ndw 刪除光標(biāo)位置其實的n個字符組(word)。 d0 將行的開始到光標(biāo)位置的字符全部刪除。 d$ 或D 將光標(biāo)位置起始到行尾的字符全部刪除。 ndd 將光標(biāo)位置起始的n行(整行)刪除(dd表示刪除光標(biāo)所在行)。 :start,endd 刪除文件的第start到end行。 光標(biāo)移動 0 移到一行的開始 $ 移到一行的最后 [ 移到文件開始位置 ] 移到文件結(jié)束位置 nh 往左移n位 nl或者spacebar 往右移n位 nk 向上移n行 n+ 向上移n行,光標(biāo)在該行的起始 ni 向下移n行 n- 向下移n行,光標(biāo)在該行的起始 H 移到屏幕的左上角 M 移到屏幕的中間行開頭 L 移到屏幕的最后一行 G 移到文件的最后一行 nG或者:n 移到文件的第n行 nw 右移n個字組,標(biāo)點符號屬于字組 nW 右移n個字組,標(biāo)點符號不屬于字組 nb 左移n個字組,標(biāo)點符號屬于字組 nB 左移n個字組,標(biāo)點符號不屬于字組 Ctrl + u 屏幕上卷半個菜單 Ctrl + d 屏幕下卷半個菜單 Ctrl + b 屏幕上卷一個菜單 Ctrl + F 屏幕下卷一個菜單 修改指令 r 修改光標(biāo)文件的字符 R 從光標(biāo)位置開始修改,結(jié)束時按ESC鍵 new 更改n組字符,結(jié)束時按ESC鍵 ncc 從光標(biāo)所在位置開始更改n行,結(jié)束時按ESC鍵 重排各行長度 i 并按Enter將該行由光標(biāo)所在處斷開,并進(jìn)入insert方式 J 把下一行的數(shù)據(jù)連接到本行之后 查找指令 /text 從光標(biāo)位置往下找字串text ?text 從光標(biāo)位置往上找字串text n 繼續(xù)找下一個字串(在輸入上面的尋找指令之后使用) 查找并替換指令 :%s/text1/text2/options 將各行的text1替換為text2 option=g表示文件中所有的text1均被替換,若未輸入任何option,則只有各行中的第一個出現(xiàn)的text1被替換 option=go 在屏幕顯示各替換的行 option=gc 在每個字串替換之前要求確認(rèn) Start,end%s/text1/ text2/options 同上,只查找并替換第start~end行。 或:Start,ends/text1/text2/options 復(fù)制及移動文件 :first,last co dest 將first 到last行的數(shù)據(jù)復(fù)制到目標(biāo)行(dest)下面 :Start,end m dest 將start 到 end行的數(shù)據(jù)移動到目標(biāo)行(dest)下。 :r filename 將指定文件的內(nèi)容讀入光標(biāo)所在行下。 nY 將光標(biāo)所在位置開始的n行數(shù)據(jù)暫存 p 復(fù)制暫存數(shù)據(jù)在光標(biāo)的下一行 P 復(fù)制暫存數(shù)據(jù)在光標(biāo)的上一行 其他命令 . 重復(fù)前一指令 u 取消前一指令 Ctrl + l 刷新屏幕顯示 :set number 顯示文件的行號,但不會存文件 :set nonumber 解除行號顯示 :set ai 設(shè)置每行起始位置(以光標(biāo)當(dāng)前位置為起始) :set noai 取消行起始位置設(shè)定
|