電子百科
1、命令模式(command mode)—執(zhí)行命令
在該模式中,可以輸入命令來執(zhí)行許多種功能??刂破聊还鈽?biāo)的移動(dòng),字符、字或行的刪除,移動(dòng)復(fù)制某區(qū)段及進(jìn)入Insert mode下,或者到 last line mode。
2、輸入模式(Insert mode)—輸入文本
vi被運(yùn)行時(shí),通常處在命令模式下,鍵入以下命令 可以使vi退出命令模式,進(jìn)入輸入模式:I(i)、A(a)、O(o)。
3、末行模式(last line mode)—執(zhí)行待定命令
將文件保存或退出vi,也可以設(shè)置編輯環(huán)境,如尋找字符串、列出行號(hào)……等。不過一般我們?cè)谑褂脮r(shí)把vi簡(jiǎn)化成兩個(gè)模式,就是將末行模式(last line mode)也算入命令行模式command mode)。
1. vi的啟動(dòng)
輸入vi命令后,便進(jìn)入全屏幕編輯環(huán)境,此時(shí)的狀態(tài)為命令模式。
(1) vi
進(jìn)入vi的一個(gè)臨時(shí)緩沖區(qū),光標(biāo)定位在該緩沖區(qū)第1行第1列的位置上。
(2) vi file1
如果file1文件不存在,將建立此文件;如該文件存在,則將其拷貝到一個(gè)臨時(shí)緩沖區(qū)。光標(biāo)定位在該緩沖區(qū)第1行第1列的位置上。
(3) vi + file1
如果file1文件不存在,將建立此文件;如該文件存在,則將其拷貝到一個(gè)臨時(shí)緩沖區(qū)。光標(biāo)定位在文件最后1行第1列的位置上。
(4) vi +N file1(N:為數(shù)字)
如果file1文件不存在,將建立此文件;如該文件存在,則將其拷貝到一個(gè)臨時(shí)緩沖區(qū)。光標(biāo)定位在文件第N行第1列的位置上。
(5) vi +/string file1
如果file1文件不存在將建立此文件;如該文件存在則將其拷貝到一個(gè)臨時(shí)緩沖區(qū)。光標(biāo)定位在文件中第一次出現(xiàn)字符串string的行首位置。
2. 退出vi(末行模式(last line mode))
建議在退出vi前,先按ESC鍵,以確保當(dāng)前vi的狀態(tài)為命令方式,然后再鍵入“:”(冒號(hào)),輸入下列命令,退出vi。
(1) :w
將編輯緩沖區(qū)的內(nèi)容寫入文件,則新的內(nèi)容就替代了原始文件。這時(shí)并沒有退出vi,必須進(jìn)一步輸入下述命令才能退出vi:
:w filename(存入指定文件)
:q
(2) :wq
即將上面的兩步操作可以合成一步來完成,先執(zhí)行w,后執(zhí)行q。
(3) :x和ZZ(注意: ZZ前面沒有“:”)
功能與(2)等價(jià)。
(4) :q!(或:quit)
強(qiáng)行退出vi,使被更新的內(nèi)容不寫回文件中。僅鍵入命令:q時(shí),如vi發(fā)現(xiàn)文本內(nèi)容已被更改,將提示用戶使用“:quit”命令退出。
1、在文件中移動(dòng)光標(biāo)
h:向左移動(dòng)一個(gè)字符
l:向右移動(dòng)一個(gè)字符
j:向下移動(dòng)一行
k:向上移動(dòng)一行
^(即Shift+6):移動(dòng)到當(dāng)前行的開頭處
$(即Shift+4):移動(dòng)到當(dāng)前行的結(jié)尾處
H(大寫):使光標(biāo)移動(dòng)到屏幕的頂部
M(大寫):使光標(biāo)移動(dòng)到屏幕的中間
L(大寫):使光標(biāo)移動(dòng)到屏幕的底部
Ctrl+b:上滾一屏。
Ctrl+f:下滾一屏。
Ctrl+d:下滾半屏。
Ctrl+u: 上滾半屏。
2、插入文本
(1)添加:
●輸入a后,在光標(biāo)的右邊插入文本
●輸入A,在一行的結(jié)尾處添加文本
?。?)插入:
●通過在命令模式下輸入i,在光標(biāo)的左邊插入文本
●通過在命令模式下輸入I,在行首插入文本
?。?)插入新行:
●輸入o,在當(dāng)前光標(biāo)位置下面打開一行
●輸入O,在當(dāng)前光標(biāo)位置上面打開一行
3、撤消更改
(1)撤消前一個(gè)命令:在最后一個(gè)命令之后立即輸入u來撤消該命令
?。?)重復(fù)某個(gè)命令:“.”
(3)撤消對(duì)一行的更改:輸入U(xiǎn)來撤消你對(duì)一行所做的所有更改,這個(gè)命令只有在你沒將光標(biāo)移動(dòng)到該行以外時(shí)才生效。
4、刪除文本
?。?)刪除一個(gè)字符:
●為刪除一個(gè)字符,需將光標(biāo)放置在要?jiǎng)h除的字符上并輸入x
●為刪除光標(biāo)之前(其左邊)的一個(gè)字符,需輸入X
(2)刪除一個(gè)詞或詞的部分內(nèi)容:
●為刪除一個(gè)詞,需將光標(biāo)放置到該詞的開頭并輸入dw
●為刪除詞的部分內(nèi)容,需將光標(biāo)放置到該詞要保存部分的右邊。輸入dw來刪除該詞余下的部分
(3)刪除一行:將光標(biāo)放置到該行的任意處并輸入dd
?。?)刪除多行:ndd
?。?)刪除行的部分內(nèi)容:將光標(biāo)放置到該行要保存部分的右邊,并輸入D。為刪除光標(biāo)左邊的所有內(nèi)容,須將光標(biāo)放置到該行要?jiǎng)h除部分的右邊,并輸入d0(d-零)。
?。?)刪除到文件的結(jié)尾:為刪除從當(dāng)前行到文件結(jié)尾的所有內(nèi)容,需輸入dG
5、復(fù)制和移動(dòng)文本
●復(fù)制一行命令:yy
●粘貼命令:p
●移動(dòng)文本:先將要移動(dòng)的部分用刪除命令刪除,然后再粘貼就可以了
●復(fù)制指定文件的內(nèi)容
: r filename
6、查找一個(gè)字符串
●輸入/,并在/后面輸入要查找的串,然后按下回車
●輸入“n”跳轉(zhuǎn)到該串的下一個(gè)出現(xiàn)處
●輸入“N”跳轉(zhuǎn)到該串的上一個(gè)出現(xiàn)處
7、替換一個(gè)字符串
●在一行內(nèi)替換頭一個(gè)字符串old為新的字符串new
:s/old/new
●在一行內(nèi)替換所有的字符串old為新的字符串new
:s/old/new/g
●在兩行內(nèi)替換所有的字符串old為新的字符串new
:#,#s/old/new/g
●在文件內(nèi)替換所有的字符串old為新的字符串new
:%s/old/new/g
●進(jìn)行全文替換時(shí)詢問用戶確認(rèn)每個(gè)替換需添加c選項(xiàng)
:%s/old/new/gc
8、設(shè)置vi
●顯示行號(hào)
:set number
●取消行號(hào)顯示
:set nonumber
●設(shè)置顯示用戶模式
:set showmode
●設(shè)置文件只讀
:set readonly