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