歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

簡單的介紹UNIX下的常用編輯工具VI


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