一、Unix編輯器概述
編輯器是使用計(jì)算機(jī)的重要工具之一,在各種操作系統(tǒng)中,編輯器都是必不可少的部件。Unix及其相似的ix 操作系統(tǒng)系列中,為方便各種用戶(hù)在各個(gè)不同的環(huán)境中使用,提供了一系列的ex編輯器,包括 ex, edit,ed 和 vi.其中ex,edit,ed都是行編輯器,現(xiàn)在已很少有人使用,Unix提供他們的原因是考慮到滿(mǎn)足各種用戶(hù)特別是某些終端用戶(hù)的需要。值得慶幸的是,Unix提供了全屏幕的Vi編輯器,這使我們的工作輕松不少。不少DOS用戶(hù)抱怨Vi編輯器不象 DOS下的編輯器如edit那么好用,這是因?yàn)閂i考慮到各種用戶(hù)的需要,沒(méi)有使用某些通用的編輯鍵(在各個(gè)不同的終端機(jī)上他們的定義是不同的,在某些終端機(jī)上甚至沒(méi)有這些鍵)。而是采用狀態(tài)切換的方法,但這只是習(xí)慣的問(wèn)題,一旦你熟練的使用上了vi你就會(huì)覺(jué)得它其實(shí)也很好用。
雖然 Vi采用了狀態(tài)切換的方法,但電腦的硬件及操作系統(tǒng)多種多樣,某些電腦的鍵盤(pán)上沒(méi)有特定的幾個(gè)功能鍵!那麼不就有某些功能不能用了?這個(gè)問(wèn)題在 Unix 系統(tǒng)上也一樣,幾乎各大電腦廠商都有自己的 Unix 系統(tǒng),而 vi 的操作方法也會(huì)隨之有點(diǎn)出入。這里我們采用 PC 的鍵盤(pán)來(lái)說(shuō)明 vi 的操作,但在具體的環(huán)境中還要參考相應(yīng)的資料,這一點(diǎn)是值得注意的。
二、Vi入門(mén)
(一)、進(jìn)入vi
在系統(tǒng)提示字符(如$、#)下敲入vi <檔案名稱(chēng)>,vi 可以自動(dòng)幫你載入所要編輯的文件或是開(kāi)啟一個(gè)新文件(如果該文件不存在或缺少文件名)。進(jìn)入 vi 后螢?zāi)蛔蠓綍?huì)出現(xiàn)波浪符號(hào),凡是列首有該符號(hào)就代表此列目前是空的。
(二)、兩種模式
如上所述,vi存在兩種模式:指令模式和輸入模式。在指令模式下輸入的按鍵將做為指令來(lái)處理:如輸入 a,vi即認(rèn)為是在當(dāng)前位置插入字符。而在輸入模式下,vi則把輸入的按鍵當(dāng)作插入的字符來(lái)處理。指令模式切換到輸入模式只需鍵入相應(yīng)的輸入命令即可(如a,A),而要從輸入模式切換到指令模式,則需在輸入模式下鍵入ESC鍵,如果不曉得現(xiàn)在是處?kù)妒颤N模式,可以多按幾次 [ESC],系統(tǒng)如發(fā)出嗶嗶聲就表示已處于指令模式下了。
付:在指令模式進(jìn)入輸入模式的指令:
新增 (append)
a :從光標(biāo)所在位置後面開(kāi)始新增資料,光標(biāo)後的資料隨新增資料向後移動(dòng)。
A:從光標(biāo)所在列最後面的地方開(kāi)始新增資料。
插入 (insert)
i:從光標(biāo)所在位置前面開(kāi)始插入資料,光標(biāo)後的資料隨新增資料向後移動(dòng)。
I :從光標(biāo)所在列的第一個(gè)非空白字元前面開(kāi)始插入資料。
開(kāi)始 (open)
o :在光標(biāo)所在列下新增一列并進(jìn)入輸入模式。
O: 在光標(biāo)所在列上方新增一列并進(jìn)入輸入模式。
(三)、退出vi
在指令模式下鍵入:q,:q!,:wq或:x(注意:號(hào)),就會(huì)退出vi。其中:wq和:x是存盤(pán)退出,而:q是直接退出,如果文件已有新的變化,vi會(huì)提示你保存文件而:q命令也會(huì)失效,這時(shí)你可以用:w命令保存文件后再用:q 退出,或用:wq或:x命令退出,如果你不想保存改變后的文件,你就需要用:q!命令,這個(gè)命令將不保存文件而直接退出vi。
(四)、基本編輯
配合一般鍵盤(pán)上的功能鍵,像是方向鍵、[Insert] 、[Delete] 等等,現(xiàn)在你應(yīng)該已經(jīng)可以利用 vi 來(lái)編輯文件了。當(dāng)然 vi 還提供其他許許多多功能讓文字的處理更為方便。
何謂編輯?一般認(rèn)為是文字的新增、修改以及刪除,甚至包括文字區(qū)塊的搬移、復(fù)制等等。先這里介紹 vi 的如何做刪除與修改。(注意:在 vi 的原始觀念里,輸入跟編輯是兩碼子事。編輯是在指令模式下操作的,先利用指令移動(dòng)光標(biāo)來(lái)定位要進(jìn)行編輯的地方,然後才下指令做編輯。)
刪除與修改文件的命令:
x:刪除光標(biāo)所在字符。
dd :刪除光標(biāo)所在的列。
r :修改光標(biāo)所在字元,r 後接著要修正的字符。
R:進(jìn)入取替換狀態(tài),新增文字會(huì)覆蓋原先文字,直到按 [ESC] 回到指令模式下為止。
s:刪除光標(biāo)所在字元,并進(jìn)入輸入模式。
S:刪除光標(biāo)所在的列,并進(jìn)入輸入模式。
其實(shí)呢,在PC上根本沒(méi)有這麼麻煩!輸入跟編輯都可以在輸入模式下完成。例如要?jiǎng)h除字元,直接按 [Delete] 不就得了。而插入狀態(tài)與取代狀態(tài)可以直接用 [Insert] 切換,犯不著用什麼指令模式的編輯指令。不過(guò)就如前面所提到的,這些指令幾乎是每臺(tái)終端機(jī)都能用,而不是僅僅在 PC 上。在指令模式下移動(dòng)光標(biāo)的基本指令是 h, j, k, l 。想來(lái)各位現(xiàn)在也應(yīng)該能猜到只要直接用 PC 的方向鍵就可以了,而且無(wú)論在指令模式或輸入模式下都可以。多容易不是。當(dāng)然 PC 鍵盤(pán)也有不足之處。有個(gè)很好用的指令 u 可以恢復(fù)被刪除的文字,而 U 指令則可以恢復(fù)光標(biāo)所在列的所有改變。這與某些電腦上的 [Undo] 按鍵功能相同。
三、附件:vi詳細(xì)指令表
進(jìn)入vi的命令
vi filename: 打開(kāi)或新建文件,并將光標(biāo)置于第一行首
vi +n filename: 打開(kāi)文件,并將光標(biāo)置于第n行首
vi + filename: 打開(kāi)文件,并將光標(biāo)置于最后一行首
vi +/pattern filename: 打開(kāi)文件,并將光標(biāo)置于第一個(gè)與pattern匹配的串處
vi -r filename: 在上次正用vi編輯時(shí)發(fā)生系統(tǒng)崩潰,恢復(fù)filename
vi filename....filename: 打開(kāi)多個(gè)文件,依次進(jìn)行編輯
移動(dòng)光標(biāo)類(lèi)命令
h: 光標(biāo)左移一個(gè)字符
l: 光標(biāo)右移一個(gè)字符
space: 光標(biāo)右移一個(gè)字符
Backspace: 光標(biāo)左移一個(gè)字符
k或Ctrl+p: 光標(biāo)上移一行
j或Ctrl+n: 光標(biāo)下移一行
Enter: 光標(biāo)下移一行
w或W : 光標(biāo)右移一個(gè)字至字首
b或B : 光標(biāo)左移一個(gè)字至字首
e或E : 光標(biāo)右移一個(gè)字至字尾
): 光標(biāo)移至句尾
(: 光標(biāo)移至句首
}: 光標(biāo)移至段落開(kāi)頭
{: 光標(biāo)移至段落結(jié)尾
nG: 光標(biāo)移至第n行首
n+: 光標(biāo)下移n行
n-: 光標(biāo)上移n行
n$: 光標(biāo)移至第n行尾
H: 光標(biāo)移至屏幕頂行
M: 光標(biāo)移至屏幕中間行
L: 光標(biāo)移至當(dāng)前屏幕最后行
0: 光標(biāo)移至當(dāng)前行首 //是個(gè)數(shù)字0,而不是字母o
$: 光標(biāo)移至當(dāng)前行尾
屏幕翻滾類(lèi)命令
Ctrl+u: 向文件首翻半屏
Ctrl+d: 向文件尾翻半屏
Ctrl+f: 向文件尾翻一屏
Ctrl+b: 向文件首翻一屏
nz: 將第n行滾至屏幕頂部,不指定n時(shí)將當(dāng)前行滾至屏幕頂部。
插入文本類(lèi)命令
i: 在光標(biāo)前
I: 在當(dāng)前行首
a: 光標(biāo)后
A: 在當(dāng)前行尾
o: 在當(dāng)前行之下新開(kāi)一行
O: 在當(dāng)前行之上新開(kāi)一行
r: 替換當(dāng)前字符
R: 替換當(dāng)前字符及其后的字符,直至按ESC鍵
s: 從當(dāng)前光標(biāo)位置處開(kāi)始,以輸入的文本替代指定數(shù)目的字符
S: 刪除指定數(shù)目的行,并以所輸入文本代替之
ncw或nCW: 修改指定數(shù)目的字
nCC: 修改指定數(shù)目的行
刪除命令
ndw或ndW: 刪除光標(biāo)處開(kāi)始及其后的n-1個(gè)字
do: 刪至行首
d$: 刪至行尾
ndd: 刪除當(dāng)前行及其后n-1行
x或X: 刪除一個(gè)字符,x刪除光標(biāo)后的,而X刪除光標(biāo)前的
Ctrl+u: 刪除輸入方式下所輸入的文本
搜索及替換命令
/pattern: 從光標(biāo)開(kāi)始處向文件尾搜索pattern
?pattern: 從光標(biāo)開(kāi)始處向文件首搜索pattern
n: 在同一方向重復(fù)上一次搜索命令
N: 在反方向上重復(fù)上一次搜索命令
:s/p1/p2/g: 將當(dāng)前行中所有p1均用p2替代
:n1,n2s/p1/p2/g: 將第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g: 將文件中所有p1均用p2替換
選項(xiàng)設(shè)置
all:列出所有選項(xiàng)設(shè)置情況
term:設(shè)置終端類(lèi)型
ignorance:在搜索中忽略大小寫(xiě)
list:顯示制表位(ctrl+i)和行尾標(biāo)志($)
number:顯示行號(hào)
report:顯示由面向行的命令修改過(guò)的數(shù)目
terse:顯示簡(jiǎn)短的警告信息
warn:在轉(zhuǎn)到別的文件時(shí)若沒(méi)保存當(dāng)前文件則顯示no write信息
nomagic:允許在搜索模式中,使用前面不帶“\”的特殊字符
nowrapscan:禁止vi在搜索到達(dá)文件兩端時(shí),又從另一端開(kāi)始
mesg:允許vi顯示其他用戶(hù)用write寫(xiě)到自己終端上的信息
最后行方式命令
:n1,n2 co n3:將n1行到n2行之間的內(nèi)容拷貝到第n3行下
:n1,n2 m n3:將n1行到n2行之間的內(nèi)容移至到第n3行下
:n1,n2 d :將n1行到n2行之間的內(nèi)容刪除
:w :保存當(dāng)前文件
:e filename:打開(kāi)文件filename進(jìn)行編輯
:x:保存當(dāng)前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:!command:執(zhí)行shell命令command
:n1,n2 w!command:將文件中n1行至n2行的內(nèi)容作為command的輸入并執(zhí)行之,若不指定n1,n2,則表示將整個(gè)文件內(nèi)容作為command的輸入
:r!command:將命令command的輸出結(jié)果放到當(dāng)前行
寄存器操作
"?nyy:將當(dāng)前行及其下n行的內(nèi)容保存到寄存器?中,其中?為一個(gè)字母,n為一個(gè)數(shù)字
"?nyw:將當(dāng)前行及其下n個(gè)字保存到寄存器?中,其中?為一個(gè)字母,n為一個(gè)數(shù)字
"?nyl:將當(dāng)前行及其下n個(gè)字符保存到寄存器?中,其中?為一個(gè)字母,n為一個(gè)數(shù)字
"?p:取出寄存器?中的內(nèi)容并將其放到光標(biāo)位置處。這里?可以是一個(gè)字母,也可以是一個(gè)數(shù)字
ndd:將當(dāng)前行及其下共n行文本刪除,并將所刪內(nèi)容放到1號(hào)刪除寄存器中。
set nu :顯示全部行號(hào)。
set nonu :不顯示行號(hào)
set ic 查找時(shí)不考慮大小寫(xiě)
set noic 查找時(shí)考慮大小寫(xiě)
vi實(shí)現(xiàn)選擇文本塊 按v,而vim是ctrl+v
y為copy
p為粘貼
刪除光標(biāo)所在的以及之前的所有行: dgg 或d1G
刪除光標(biāo)所在行以及之后的所有行: dG
G 光標(biāo)移動(dòng)到文件的尾部
nG 光標(biāo)移動(dòng)到文件的第n行
: 0 光標(biāo)移動(dòng)到文件的第1行
: 1 光標(biāo)移動(dòng)到文件的第1行
: n 光標(biāo)移動(dòng)到文件的第n行
: $ 光標(biāo)移動(dòng)到文件的尾部
/string 光標(biāo)向前移動(dòng)到string首
?string 光標(biāo)向后移動(dòng)到string首
大邑縣網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,大邑縣網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為大邑縣上1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的大邑縣做網(wǎng)站的公司定做!
新聞標(biāo)題:Vi編輯器使用
轉(zhuǎn)載來(lái)源:http://jinyejixie.com/article14/pppdde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷(xiāo)推廣、Google、網(wǎng)站制作、網(wǎng)站營(yíng)銷(xiāo)、網(wǎng)站收錄、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)