一,、vi的工作模式
vi有兩種工作模式:
編輯模式:用來輸入和編輯文件的模式,,屏幕上會(huì)顯示用戶的鍵入,,按鍵不是被解釋為命令執(zhí)行,而是作為文本寫到用戶的文件中,。
指令模式:用來編輯,、存盤和退出文件的模式。
運(yùn)行vi后,,首先進(jìn)入指令模式,。此時(shí)輸入的任何字符都被視為指令,鍵入的命令不會(huì)在屏幕上顯示,。
從指令模式切換到編輯模式,,則可以按“Insert”鍵或“i”鍵,從編輯模式切換到指令模式,,可按“Esc”鍵。
狀態(tài)行是屏幕底部一行,,被vi編輯器用來反饋編輯操作結(jié)果,。錯(cuò)誤消息或提供信息的消息會(huì)在狀態(tài)行中顯示出來。
二,、vi的啟動(dòng)和退出
1.啟動(dòng)vi
在系統(tǒng)圖示字符下鍵入“vi”+“空格”+“文件名”,,如:vi test.txt
vi可以自動(dòng)載入所要編輯的文件或是開啟一個(gè)新文件。
2.退出vi
在指令模式下鍵入如下命令可以退出vi:
:q 如果用戶只是讀文件的內(nèi)容而未對(duì)文件進(jìn)行修改,,可以在命令模式下輸入“:q”退出vi,。
:q! 如果用戶對(duì)文件的內(nèi)容作了修改,又決定放棄對(duì)文件的修改,,則用“:q!”命令,。
:w! 強(qiáng)行保存一個(gè)vi文件,如果該文件已存在,,則進(jìn)行覆蓋,。
:wq 保存文件并退出vi。
ZZ 快速保存文件的內(nèi)容,,然后退出vi,。功能和“:wq”相同。
:w filename 相當(dāng)于“另存為”,。
:n,mw filename 將第n-m行的文本保存到指定的文件filename中,。
三、vi長指令和短指令
長指令:以冒號(hào)開頭,,鍵入冒號(hào)后,,在屏幕的最末尾一行會(huì)出現(xiàn)冒號(hào)提示符,等待用戶鍵入指令,,輸入完指令后回車,,vi會(huì)執(zhí)行該指令,。
段指令:與快捷鍵相似,鍵入短指令后,,vi不會(huì)給任何提示就直接執(zhí)行,。
1.輸入輸出命令
a 在光標(biāo)后輸入文本
A 在當(dāng)前行末尾輸入文本
i 在光標(biāo)前輸入文本
I 在當(dāng)前行開始輸入文本
o 在當(dāng)前行后輸入新一行
O 在當(dāng)前行前輸入新一行
2.光標(biāo)移動(dòng)命令
b 移動(dòng)到當(dāng)前單詞的開始
e 移動(dòng)到當(dāng)前單詞的結(jié)尾
w 向后移動(dòng)一個(gè)單詞
h 向前移動(dòng)一個(gè)字符
l 向后移動(dòng)一個(gè)字符
j 向下移動(dòng)一行
k 向上移動(dòng)一行
3.刪除操作命令
x 刪除光標(biāo)所在的字符
dw 刪除光標(biāo)所在的單詞
dd 刪除當(dāng)前行
d$ 刪除光標(biāo)至行尾的所有字符
D 與“d$”命令相同
4.替換操作命令
r 替換光標(biāo)所在的字符
R 替換字符序列
cw 替換一個(gè)單詞
ce 與“cw”命令相同
cb 替換光標(biāo)所在的前一字符
c$ 替換自光標(biāo)位置至行尾的所有字符
C 與“c$”命令相同
cc 替換當(dāng)前行
5.查詢操作命令
/abc 向后查詢字符串“abc”
abc 想前查詢字符串“abc”
n 重復(fù)前一次查詢
N 重復(fù)前一次查詢,但方向相反
6.拷貝粘貼命令
yw 將光標(biāo)所在單詞拷入剪貼板
y$ 將光標(biāo)至行尾的字符拷入剪貼板
Y 與“y$”命令相同
yy 將當(dāng)前行拷入剪貼板
y 將選取的內(nèi)容拷入剪貼板
p 將剪貼板中的內(nèi)容粘貼在光標(biāo)后
P 將剪貼板中的內(nèi)容粘貼在光標(biāo)前
7.其他操作命令
v 選取文本內(nèi)容
u 取消上一次的操作
U 可以恢復(fù)對(duì)光標(biāo)所在行的所有改變
J 把兩行文本鏈接到一起
:set 用來設(shè)置或?yàn)g覽vi系統(tǒng)當(dāng)前的選項(xiàng)(加參數(shù)“all”后查看所有選項(xiàng)的列表)
:X 對(duì)所編輯的文件進(jìn)行簡單加密
四,、vi的高級(jí)應(yīng)用
1.設(shè)置vi環(huán)境
vi編輯器的行為可以通過設(shè)置編輯參數(shù)來定義,。
使用vi的set命令進(jìn)行設(shè)置。vi在進(jìn)行設(shè)置前必須處于指令模式,,但選項(xiàng)的改變是臨時(shí)的,,只在用戶當(dāng)前編輯回話下有效,當(dāng)用戶退出vi編
輯器時(shí),,設(shè)置會(huì)被丟棄,。
autoindent選項(xiàng)
將新行與前一行的開始對(duì)準(zhǔn),縮寫:ai
該選項(xiàng)將用戶鍵入的每個(gè)新行與前一行的開始對(duì)齊,。該選項(xiàng)對(duì)于使用程序語言編程時(shí)十分有用,。本選項(xiàng)的默認(rèn)值是noai。
ignorecase選項(xiàng)
在搜索命令下忽略大小寫,,縮寫:ic
vi編輯器提供大小寫敏感的搜索,,要使vi忽略大小寫,鍵入“:set ignorecase”,,要返回大小寫敏感狀態(tài),,鍵入“:set noignorecase”.
magic選項(xiàng)
在搜索時(shí),允許使用特殊字符,。
某些符號(hào)在用于搜索時(shí)有特殊的含義,。當(dāng)用戶將這些符號(hào)開頭置為nomagic時(shí),這些符號(hào)不再有特殊含義,。
number選項(xiàng)
顯示行號(hào),,縮寫:nu
vi編輯器一般情況下不顯示每行的行號(hào)??梢愿淖僴umber選項(xiàng)來顯示行號(hào),。
report選項(xiàng)
告知用戶最后一個(gè)命令作用行的行號(hào)。
vi編輯器對(duì)用戶的編輯工作并不給予任何反饋,,如果希望在屏幕上看到自己編輯的反饋信息,,用戶可以通過編輯report選項(xiàng)來實(shí)現(xiàn)。
scroll選項(xiàng)
設(shè)定在指令模式下使用“Ctrl+d”命令翻滾的行數(shù),。
shiftwidth選項(xiàng)
設(shè)定縮進(jìn)空格數(shù),,一般與autoindent一同使用,縮寫:sw
showmode選項(xiàng)
在屏幕右角顯示vi編輯器模式,縮寫:smd
terse選項(xiàng)
縮短錯(cuò)誤信息,。
wrapmargin選項(xiàng)
將右邊界設(shè)定為一定的字符個(gè)數(shù),,縮寫:wm
用戶的終端屏幕通常為80列,當(dāng)鍵入到行的末尾時(shí),,屏幕即開始一個(gè)新行,,這就是行回繞。在用戶按回車鍵時(shí),,屏幕同樣開始一個(gè)新行,。
因此,屏幕上一行的長度可以為1-80個(gè)字符之間的任何長度,。但是,,vi編輯器只在用戶按回車時(shí),才在用戶文件中生成一個(gè)新行,。如果用戶在
按回車前鍵入了120個(gè)字符,,這時(shí)鍵入的文本看起來是在2行,但實(shí)際在文件中,,這120個(gè)字符只在1行中,。如果要限制行長度,一是在到達(dá)屏幕
行末尾前按回車換行,,另一種是設(shè)定wrapmargin選項(xiàng)使vi編輯器自動(dòng)插入回車。
2.縮寫操作符
縮寫操作符“:ab”命令使得用戶給任何字符串指定縮寫,,該功能可以幫主用戶提高輸入速度,。用戶可以為自己經(jīng)常輸入的文本選擇一個(gè)易
輸入的縮寫。
例如:鍵入“:ab uox Unix Operating System”命令,當(dāng)vi處于文本輸入模式時(shí),,用戶鍵入“uox”接著鍵入一個(gè)空格時(shí),,vi自動(dòng)將鍵入的
“uox”變?yōu)?#8220;Unix Operating System”。
取消縮寫“:unab”命令可以取消一個(gè)縮寫,,例如:鍵入“:unab uox”命令即可,。
想列出已經(jīng)設(shè)置了的所有縮寫,鍵入“:ab”命令即可,。
3.宏操作符
宏操作符“:map”命令使用戶能將一系列按鍵指定給某一按鍵,。給用戶一個(gè)在指令模式下的快捷按鍵。
例如:鍵入“:map q dd”命令,,此后處于指令模式時(shí),,每當(dāng)用戶鍵入q時(shí),vi編輯器自動(dòng)執(zhí)行“dd”命令,。
取消宏操作“:unmap”命令,。
用戶也可以使用map指令指定功能鍵,例如:鍵入“:map #n dd”命令,其中“#n”代表以n為功能鍵號(hào)的功能鍵,。
4.“.exrc”文件
用戶在vi編輯器中所設(shè)置的所有選項(xiàng)都是臨時(shí)的,,當(dāng)用戶退出時(shí),,它們都會(huì)失效。要使這些設(shè)置永久保存,,可以將選項(xiàng)的設(shè)置保存到文件
“.exrc”中,。
當(dāng)用戶打開vi編輯器時(shí),它自動(dòng)查看用戶當(dāng)前的工作目錄中的“.exrc”文件,,并根據(jù)在文件中的內(nèi)容設(shè)置編輯環(huán)境,。如果vi沒有在當(dāng)前目
錄中發(fā)現(xiàn)“.exrc”文件,則將查找用戶的主目錄,,并根據(jù)在哪里發(fā)現(xiàn)的“.exrc”文件設(shè)置編輯環(huán)境,。如果vi一個(gè)“.exrc”文件也沒找到,則
對(duì)選項(xiàng)使用默認(rèn)值,。
“.exrc”文件屬于啟動(dòng)文件,。
例如:建立一個(gè)“.exrc”文件。
在終端中鍵入“vi .exrc”,,回車,。
在vi編輯器中鍵入:
set autoindent
set shiftwidth=2
set nomagic
set number
set scroll=20
set showmode
保存退出即可
5.運(yùn)行Shell命令
用戶可以在vi的命令行運(yùn)行Linux Shell命令,使得用戶可以臨時(shí)拋開vi來運(yùn)行Shell命令,。
vi編輯器用“!”來通知vi其后面是一個(gè)Shell命令,。例如:鍵入“:!date”命令,vi編輯器將清除屏幕,,輸出當(dāng)前系統(tǒng)時(shí)間,,后按任意鍵返回vi編輯器,并可以繼續(xù)編輯,。
如果用戶系統(tǒng)將Shell命令執(zhí)行的結(jié)果加到文件文本中,,可以使用“:r!”和相應(yīng)的Shell命令來將命令結(jié)果寫到用戶文件文本中。