編輯器是使用計(jì)算機(jī)的重要工具之一,,在各種操作系統(tǒng)中,,編輯器都是必不可少的部件。Unix及其相似的ix操作系統(tǒng)系列中,,為方便各種用戶在各個不同的環(huán)境中使用,,提供了一系列的ex編輯器,,包括 ex, edit,ed 和vi.其中ex,edit,ed都是行編輯器,,現(xiàn)在已很少有人使用,,Unix提供他們的原因是考慮到滿足各種用戶特別是某些終端用戶的需要。
值得慶幸的是,,Unix提供了全屏幕的Vi編輯器,,這使我們的工作輕松不少。不少DOS用戶抱怨Vi編輯器不象DOS下的編輯器如edit那么好用,,這是因?yàn)閂i考慮到各種用戶的需要,沒有使用某些通用的編輯鍵(在各個不同的終端機(jī)上他們的定義是不同的,,在某些終端機(jī)上甚至沒有這些鍵),。而是采用狀態(tài)切換的方法,但這只是習(xí)慣的問題,,一旦你熟練的使用上了vi你就會覺得它其實(shí)也很好用,。
雖然 Vi采用了狀態(tài)切換的方法,但電腦的硬件及操作系統(tǒng)多種多樣,,某些電腦的鍵盤上沒有特定的幾個功能鍵,!那麼不就有某些功能不能用了?這個問題在 Unix 系統(tǒng)上也一樣,,幾乎各大電腦廠商都有自己的
Unix 系統(tǒng),,而 vi 的操作方法也會隨之有點(diǎn)出入。這里我們采用 PC 的鍵盤來說明 vi 的操作,,但在具體的環(huán)境中還要參考相應(yīng)的資料,,這一點(diǎn)是值得注意的。
二,、Vi入門
?。ㄒ唬⑦M(jìn)入vi
在系統(tǒng)提示字符(如$,、#)下敲入vi <檔案名稱>,,vi 可以自動幫你載入所要編輯的文件或是開啟一個新文件(如果該文件不存在或缺少文件名)。進(jìn)入 vi 后螢?zāi)蛔蠓綍霈F(xiàn)波浪符號,,凡是列首有該符號就代表此列目前是空的,。
(二),、兩種模式
如上所述,vi存在兩種模式:指令模式和輸入模式,。在指令模式下輸入的按鍵將做為指令來處理:如輸入a,,vi即認(rèn)為是在當(dāng)前位置插入字符。而在輸入模式下,,vi則把輸入的按鍵當(dāng)作插入的字符來處理,。指令模式切換到輸入模式只需鍵入相應(yīng)的輸入命令即可(如a,A),而要從輸入模式切換到指令模式,,則需在輸入模式下鍵入ESC鍵,,如果不曉得現(xiàn)在是處於什麼模式,可以多按幾次 [ESC],,系統(tǒng)如發(fā)出嗶嗶聲就表示已處于指令模式下了,。
附:有指令模式進(jìn)入輸入模式的指令:
新增 (append)
a :從光標(biāo)所在位置後面開始新增資料,光標(biāo)後的資料隨新增資料向後移動,。
A: 從光標(biāo)所在列最後面的地方開始新增資料,。
插入 (insert)
i: 從光標(biāo)所在位置前面開始插入資料,光標(biāo)後的資料隨新增資料向後移動,。
I :從光標(biāo)所在列的第一個非空白字元前面開始插入資料,。
開始 (open)
o :在光標(biāo)所在列下新增一列并進(jìn)入輸入模式。
O: 在光標(biāo)所在列上方新增一列并進(jìn)入輸入模式,。
?。ㄈ⑼顺鰒i
在指令模式下鍵入:q,:q!,:wq或:x(注意:號),,就會退出vi,。其中:wq和:x是存盤退出,而:q是直接退出,,
如果文件已有新的變化,,vi會提示你保存文件而:q命令也會失效,這時你可以用:w命令保存文件后再用:q退出,,或用:wq或:x命令退出,,如果你不想保存改變后的文件,你就需要用:q!命令,,這個命令將不保存文件而直接退出vi,。
(四),、基本編輯
配合一般鍵盤上的功能鍵,,像是方向鍵、[Insert] 、[Delete] 等等,,現(xiàn)在你應(yīng)該已經(jīng)可以利用 vi 來編輯文件了,。當(dāng)然 vi 還提供其他許許多多功能讓文字的處理更為方便。何謂編輯,?一般認(rèn)為是文字的新增,、修改以及刪除,甚至包括文字區(qū)塊的搬移,、復(fù)制等等,。先這里介紹 vi的如何做刪除與修改。(注意:在 vi 的原始觀念里,,輸入跟編輯是兩碼子事,。編輯是在指令模式下操作的,先利用指令移動光標(biāo)來定位要進(jìn)行編輯的地方,,然後才下指令做編輯,。)刪除與修改文件的命令:
x: 刪除光標(biāo)所在字符。
dd :刪除光標(biāo)所在的列,。
r :修改光標(biāo)所在字元,,r 後接著要修正的字符。
R: 進(jìn)入取替換狀態(tài),,新增文字會覆蓋原先文字,,直到按 [ESC] 回到指令模式下為止。
s: 刪除光標(biāo)所在字元,,并進(jìn)入輸入模式,。
S: 刪除光標(biāo)所在的列,,并進(jìn)入輸入模式,。
其實(shí)呢,在PC上根本沒有這麼麻煩,!輸入跟編輯都可以在輸入模式下完成,。例如要刪除字元,直接按 [Delete] 不就得了,。而插入狀態(tài)與取代狀態(tài)可以直接用 [Insert] 切換,,犯不著用什麼指令模式的編輯指令。不過就如前面所提到的,,這些指令幾乎是每臺終端機(jī)都能用,,而不是僅僅在 PC 上。在指令模式下移動光標(biāo)的基本指令是 h, j, k, l ,。想來各位現(xiàn)在也應(yīng)該能猜到只要直接用 PC 的方向鍵就可以了,,而且無論在指令模式或輸入模式下都可以。多容易不是。當(dāng)然 PC 鍵盤也有不足之處,。有個很好用的指令 u 可以恢復(fù)被刪除的文字,,而 U 指令則可以恢復(fù)光標(biāo)所在列的所有改變。這與某些電腦上的 [Undo] 按鍵功能相同,。
三,、附件:vi詳細(xì)指令表
(一),、基本編輯指令:
新增 (append)
a :從光標(biāo)所在位置後面開始新增資料,,光標(biāo)後的資料隨新增資料向後移動。
A: 從光標(biāo)所在列最後面的地方開始新增資料,。
插入 (insert)
i: 從光標(biāo)所在位置前面開始插入資料,,光標(biāo)後的資料隨新增資料向後移動。
I :從光標(biāo)所在列的第一個非空白字元前面開始插入資料,。
開始 (open)
o :在光標(biāo)所在列下新增一列并進(jìn)入輸入模式,。
O: 在光標(biāo)所在列上方新增一列并進(jìn)入輸入模式。
x: 刪除光標(biāo)所在字符,。
dd :刪除光標(biāo)所在的列,。
r :修改光標(biāo)所在字元,r 後接著要修正的字符,。
R: 進(jìn)入取替換狀態(tài),,新增文字會覆蓋原先文字,直到按 [ESC] 回到指令模式下為止,。
s: 刪除光標(biāo)所在字元,,并進(jìn)入輸入模式。
S: 刪除光標(biāo)所在的列,,并進(jìn)入輸入模式,。
(二),、光標(biāo)移動指令:
由於許多編輯工作是藉由光標(biāo)來定位,,所以 vi 提供許多移動光標(biāo)的方式,這個我們列幾張簡表來說明(這些當(dāng)然是指令模式下的指令):
指令?nbsp;?得?nbsp; ??? 功能鍵
0 移動到光標(biāo)所在列的最前面 [Home]?nbsp;
$ ?nbsp;移動到光標(biāo)所在列的最後面 [End]
[CTRL][d] 向下半頁 ?nbsp;[PageDown]
[CTRL][f] 向下一頁
[CTRL][u] 向上半頁?nbsp;
[CTRL][b] 向上一頁 [PageUp]
指令 說明
H 移動到視窗的第一列
M 移動到視窗的中間列
L 移動到視窗的最後列
b 移動到下個字的第一個字母
w 移動到上個字的第一個字母 ?
e 移動到下個字的最後一個字母
^ 移動到光標(biāo)所在列的第一個非空白字元
指令 說明 ??nbsp;
n- 減號移動到上一列的第一個非空白字元前面加上數(shù)字可以指定移動到以上 n 列
n+ 加號移動到下一列的第一個非空白字元前面加上數(shù)字可以指定移動到以下 n 列
nG 直接用數(shù)字 n 加上大寫 G 移動到第 n 列
指令 說明
fx
往右移動到 x 字元上
Fx 往左移動到 x 字元上 ?nbsp;
tx 往右移動到 x 字元前??nbsp;
Tx 往左移動到 x 字元前
; 配合 f&t 使用,,重復(fù)一次?
,? 配合 f&t 使用,,反方向重復(fù)一次
/string 往右移動到有 string 的地方
?string 往左移動到有 string 的地方
n ?nbsp;配合 /&? 使用,重復(fù)一次
N ?nbsp;配合 /&? 使用,,反方向重復(fù)一次
指令 說明 ?缸?nbsp;
n(
左括號移動到句子的最前面句子是以前面加上數(shù)字可以指定往前移動 n 個句子 ! . ? 三種符號來界定
n)?nbsp;右括號移動到下個句子的最前面前面加上數(shù)字可以指定往後移動 n 個句子 ! . ? 三種符號來界定
n{ ? 左括弧移動到段落的最前面 段落是以段落間的空白列界定
n} 前面加上數(shù)字可以指定往前移動 n 個段落右括弧移動到下個段落的最前面前面加上數(shù)字可以指定往後移動 n 個段落 段落是以段落間的空白列界定
?。ㄈ⒏嗟木庉嬛噶?BR>
這些編輯指令非常有彈性,,基本上可以說是由指令與范圍所構(gòu)成,。例如 dw 是由刪除指令 d 與范圍 w 所組成,,代表刪除一個字 d(elete) w(ord) 。
指令列表如下:
d 刪除(delete)
y 復(fù)制(yank)
p 放置(put)
c 修改(change)
范圍可以是下列幾個:
e 光標(biāo)所在位置到該字的最後一個字母
w 光標(biāo)所在位置到下個字的第一個字母
b 光標(biāo)所在位置到上個字的第一個字母
$ 光標(biāo)所在位置到該列的最後一個字母
0 光標(biāo)所在位置到該列的第一個字母
) 光標(biāo)所在位置到下個句子的第一個字母
( 光標(biāo)所在位置到該句子的第一個字母
} 光標(biāo)所在位置到該段落的最後一個字母
{ 光標(biāo)所在位置到該段落的第一個字母
說實(shí)在的,,組合這些指令來編輯文件有一點(diǎn)點(diǎn)藝術(shù)氣息,。不管怎麼樣,它們提供更多編輯文字的能力,。值得注意的一點(diǎn)是刪除與復(fù)制都會將指定范圍的內(nèi)容放到暫存區(qū)里,,然後就可以用指令 p 貼到其它地方去,這是 vi 用來處理區(qū)段拷貝與搬移的辦法,。
某些 vi 版本,,例如 Linux 所用的 elvis 可以大幅簡化這一坨指令。如果稍微觀察一下這些編輯指令就會發(fā)現(xiàn)問題其實(shí)是定范圍的方式有點(diǎn)雜,,實(shí)際上只有四個指令罷了,。指令 v 非常好用,只要按下 v 鍵,,光標(biāo)所在的位置就會反白,,然後就可以移動光標(biāo)來設(shè)定范圍,接著再直接下指令進(jìn)行編輯即可,。對於整列操作,, vi 另外提供了更方便的編輯指令。前面曾經(jīng)提到過刪除整列文字的指令 dd 就是其中一個,;cc 可以修改整列文字,;而 yy 則是復(fù)制整列文字;指令 D 則可以刪除光標(biāo)到該列結(jié)束為止所有的文字,。
?。ㄋ模⑽募僮髦噶?BR>
文件操作指令多以 : 開頭,,這跟編輯指令有點(diǎn)區(qū)別,。
:q 結(jié)束編輯(quit)
:q! 不存檔而要放棄編輯過的文件。
:w 保存文件(write)其後可加所要存檔的檔名,。
:wq 即存檔後離開,。
zz 功能與 :wq 相同,。
:x 與:wq相同
值得慶幸的是,,Unix提供了全屏幕的Vi編輯器,,這使我們的工作輕松不少。不少DOS用戶抱怨Vi編輯器不象DOS下的編輯器如edit那么好用,,這是因?yàn)閂i考慮到各種用戶的需要,沒有使用某些通用的編輯鍵(在各個不同的終端機(jī)上他們的定義是不同的,,在某些終端機(jī)上甚至沒有這些鍵),。而是采用狀態(tài)切換的方法,但這只是習(xí)慣的問題,,一旦你熟練的使用上了vi你就會覺得它其實(shí)也很好用,。
雖然 Vi采用了狀態(tài)切換的方法,但電腦的硬件及操作系統(tǒng)多種多樣,,某些電腦的鍵盤上沒有特定的幾個功能鍵,!那麼不就有某些功能不能用了?這個問題在 Unix 系統(tǒng)上也一樣,,幾乎各大電腦廠商都有自己的
Unix 系統(tǒng),,而 vi 的操作方法也會隨之有點(diǎn)出入。這里我們采用 PC 的鍵盤來說明 vi 的操作,,但在具體的環(huán)境中還要參考相應(yīng)的資料,,這一點(diǎn)是值得注意的。
二,、Vi入門
?。ㄒ唬⑦M(jìn)入vi
在系統(tǒng)提示字符(如$,、#)下敲入vi <檔案名稱>,,vi 可以自動幫你載入所要編輯的文件或是開啟一個新文件(如果該文件不存在或缺少文件名)。進(jìn)入 vi 后螢?zāi)蛔蠓綍霈F(xiàn)波浪符號,,凡是列首有該符號就代表此列目前是空的,。
(二),、兩種模式
如上所述,vi存在兩種模式:指令模式和輸入模式,。在指令模式下輸入的按鍵將做為指令來處理:如輸入a,,vi即認(rèn)為是在當(dāng)前位置插入字符。而在輸入模式下,,vi則把輸入的按鍵當(dāng)作插入的字符來處理,。指令模式切換到輸入模式只需鍵入相應(yīng)的輸入命令即可(如a,A),而要從輸入模式切換到指令模式,,則需在輸入模式下鍵入ESC鍵,,如果不曉得現(xiàn)在是處於什麼模式,可以多按幾次 [ESC],,系統(tǒng)如發(fā)出嗶嗶聲就表示已處于指令模式下了,。
附:有指令模式進(jìn)入輸入模式的指令:
新增 (append)
a :從光標(biāo)所在位置後面開始新增資料,光標(biāo)後的資料隨新增資料向後移動,。
A: 從光標(biāo)所在列最後面的地方開始新增資料,。
插入 (insert)
i: 從光標(biāo)所在位置前面開始插入資料,光標(biāo)後的資料隨新增資料向後移動,。
I :從光標(biāo)所在列的第一個非空白字元前面開始插入資料,。
開始 (open)
o :在光標(biāo)所在列下新增一列并進(jìn)入輸入模式。
O: 在光標(biāo)所在列上方新增一列并進(jìn)入輸入模式,。
?。ㄈ⑼顺鰒i
在指令模式下鍵入:q,:q!,:wq或:x(注意:號),,就會退出vi,。其中:wq和:x是存盤退出,而:q是直接退出,,
如果文件已有新的變化,,vi會提示你保存文件而:q命令也會失效,這時你可以用:w命令保存文件后再用:q退出,,或用:wq或:x命令退出,,如果你不想保存改變后的文件,你就需要用:q!命令,,這個命令將不保存文件而直接退出vi,。
(四),、基本編輯
配合一般鍵盤上的功能鍵,,像是方向鍵、[Insert] 、[Delete] 等等,,現(xiàn)在你應(yīng)該已經(jīng)可以利用 vi 來編輯文件了,。當(dāng)然 vi 還提供其他許許多多功能讓文字的處理更為方便。何謂編輯,?一般認(rèn)為是文字的新增,、修改以及刪除,甚至包括文字區(qū)塊的搬移,、復(fù)制等等,。先這里介紹 vi的如何做刪除與修改。(注意:在 vi 的原始觀念里,,輸入跟編輯是兩碼子事,。編輯是在指令模式下操作的,先利用指令移動光標(biāo)來定位要進(jìn)行編輯的地方,,然後才下指令做編輯,。)刪除與修改文件的命令:
x: 刪除光標(biāo)所在字符。
dd :刪除光標(biāo)所在的列,。
r :修改光標(biāo)所在字元,,r 後接著要修正的字符。
R: 進(jìn)入取替換狀態(tài),,新增文字會覆蓋原先文字,,直到按 [ESC] 回到指令模式下為止。
s: 刪除光標(biāo)所在字元,,并進(jìn)入輸入模式,。
S: 刪除光標(biāo)所在的列,,并進(jìn)入輸入模式,。
其實(shí)呢,在PC上根本沒有這麼麻煩,!輸入跟編輯都可以在輸入模式下完成,。例如要刪除字元,直接按 [Delete] 不就得了,。而插入狀態(tài)與取代狀態(tài)可以直接用 [Insert] 切換,,犯不著用什麼指令模式的編輯指令。不過就如前面所提到的,,這些指令幾乎是每臺終端機(jī)都能用,,而不是僅僅在 PC 上。在指令模式下移動光標(biāo)的基本指令是 h, j, k, l ,。想來各位現(xiàn)在也應(yīng)該能猜到只要直接用 PC 的方向鍵就可以了,,而且無論在指令模式或輸入模式下都可以。多容易不是。當(dāng)然 PC 鍵盤也有不足之處,。有個很好用的指令 u 可以恢復(fù)被刪除的文字,,而 U 指令則可以恢復(fù)光標(biāo)所在列的所有改變。這與某些電腦上的 [Undo] 按鍵功能相同,。
三,、附件:vi詳細(xì)指令表
(一),、基本編輯指令:
新增 (append)
a :從光標(biāo)所在位置後面開始新增資料,,光標(biāo)後的資料隨新增資料向後移動。
A: 從光標(biāo)所在列最後面的地方開始新增資料,。
插入 (insert)
i: 從光標(biāo)所在位置前面開始插入資料,,光標(biāo)後的資料隨新增資料向後移動。
I :從光標(biāo)所在列的第一個非空白字元前面開始插入資料,。
開始 (open)
o :在光標(biāo)所在列下新增一列并進(jìn)入輸入模式,。
O: 在光標(biāo)所在列上方新增一列并進(jìn)入輸入模式。
x: 刪除光標(biāo)所在字符,。
dd :刪除光標(biāo)所在的列,。
r :修改光標(biāo)所在字元,r 後接著要修正的字符,。
R: 進(jìn)入取替換狀態(tài),,新增文字會覆蓋原先文字,直到按 [ESC] 回到指令模式下為止,。
s: 刪除光標(biāo)所在字元,,并進(jìn)入輸入模式。
S: 刪除光標(biāo)所在的列,,并進(jìn)入輸入模式,。
(二),、光標(biāo)移動指令:
由於許多編輯工作是藉由光標(biāo)來定位,,所以 vi 提供許多移動光標(biāo)的方式,這個我們列幾張簡表來說明(這些當(dāng)然是指令模式下的指令):
指令?nbsp;?得?nbsp; ??? 功能鍵
0 移動到光標(biāo)所在列的最前面 [Home]?nbsp;
$ ?nbsp;移動到光標(biāo)所在列的最後面 [End]
[CTRL][d] 向下半頁 ?nbsp;[PageDown]
[CTRL][f] 向下一頁
[CTRL][u] 向上半頁?nbsp;
[CTRL][b] 向上一頁 [PageUp]
指令 說明
H 移動到視窗的第一列
M 移動到視窗的中間列
L 移動到視窗的最後列
b 移動到下個字的第一個字母
w 移動到上個字的第一個字母 ?
e 移動到下個字的最後一個字母
^ 移動到光標(biāo)所在列的第一個非空白字元
指令 說明 ??nbsp;
n- 減號移動到上一列的第一個非空白字元前面加上數(shù)字可以指定移動到以上 n 列
n+ 加號移動到下一列的第一個非空白字元前面加上數(shù)字可以指定移動到以下 n 列
nG 直接用數(shù)字 n 加上大寫 G 移動到第 n 列
指令 說明
fx
往右移動到 x 字元上
Fx 往左移動到 x 字元上 ?nbsp;
tx 往右移動到 x 字元前??nbsp;
Tx 往左移動到 x 字元前
; 配合 f&t 使用,,重復(fù)一次?
,? 配合 f&t 使用,,反方向重復(fù)一次
/string 往右移動到有 string 的地方
?string 往左移動到有 string 的地方
n ?nbsp;配合 /&? 使用,重復(fù)一次
N ?nbsp;配合 /&? 使用,,反方向重復(fù)一次
指令 說明 ?缸?nbsp;
n(
左括號移動到句子的最前面句子是以前面加上數(shù)字可以指定往前移動 n 個句子 ! . ? 三種符號來界定
n)?nbsp;右括號移動到下個句子的最前面前面加上數(shù)字可以指定往後移動 n 個句子 ! . ? 三種符號來界定
n{ ? 左括弧移動到段落的最前面 段落是以段落間的空白列界定
n} 前面加上數(shù)字可以指定往前移動 n 個段落右括弧移動到下個段落的最前面前面加上數(shù)字可以指定往後移動 n 個段落 段落是以段落間的空白列界定
?。ㄈ⒏嗟木庉嬛噶?BR>
這些編輯指令非常有彈性,,基本上可以說是由指令與范圍所構(gòu)成,。例如 dw 是由刪除指令 d 與范圍 w 所組成,,代表刪除一個字 d(elete) w(ord) 。
指令列表如下:
d 刪除(delete)
y 復(fù)制(yank)
p 放置(put)
c 修改(change)
范圍可以是下列幾個:
e 光標(biāo)所在位置到該字的最後一個字母
w 光標(biāo)所在位置到下個字的第一個字母
b 光標(biāo)所在位置到上個字的第一個字母
$ 光標(biāo)所在位置到該列的最後一個字母
0 光標(biāo)所在位置到該列的第一個字母
) 光標(biāo)所在位置到下個句子的第一個字母
( 光標(biāo)所在位置到該句子的第一個字母
} 光標(biāo)所在位置到該段落的最後一個字母
{ 光標(biāo)所在位置到該段落的第一個字母
說實(shí)在的,,組合這些指令來編輯文件有一點(diǎn)點(diǎn)藝術(shù)氣息,。不管怎麼樣,它們提供更多編輯文字的能力,。值得注意的一點(diǎn)是刪除與復(fù)制都會將指定范圍的內(nèi)容放到暫存區(qū)里,,然後就可以用指令 p 貼到其它地方去,這是 vi 用來處理區(qū)段拷貝與搬移的辦法,。
某些 vi 版本,,例如 Linux 所用的 elvis 可以大幅簡化這一坨指令。如果稍微觀察一下這些編輯指令就會發(fā)現(xiàn)問題其實(shí)是定范圍的方式有點(diǎn)雜,,實(shí)際上只有四個指令罷了,。指令 v 非常好用,只要按下 v 鍵,,光標(biāo)所在的位置就會反白,,然後就可以移動光標(biāo)來設(shè)定范圍,接著再直接下指令進(jìn)行編輯即可,。對於整列操作,, vi 另外提供了更方便的編輯指令。前面曾經(jīng)提到過刪除整列文字的指令 dd 就是其中一個,;cc 可以修改整列文字,;而 yy 則是復(fù)制整列文字;指令 D 則可以刪除光標(biāo)到該列結(jié)束為止所有的文字,。
?。ㄋ模⑽募僮髦噶?BR>
文件操作指令多以 : 開頭,,這跟編輯指令有點(diǎn)區(qū)別,。
:q 結(jié)束編輯(quit)
:q! 不存檔而要放棄編輯過的文件。
:w 保存文件(write)其後可加所要存檔的檔名,。
:wq 即存檔後離開,。
zz 功能與 :wq 相同,。
:x 與:wq相同
一,、vi的工作模式
vi有兩種工作模式:
編輯模式:用來輸入和編輯文件的模式,屏幕上會顯示用戶的鍵入,,按鍵不是被解釋為命令執(zhí)行,,而是作為文本寫到用戶的文件中。
指令模式:用來編輯,、存盤和退出文件的模式,。
運(yùn)行vi后,,首先進(jìn)入指令模式。此時輸入的任何字符都被視為指令,,鍵入的命令不會在屏幕上顯示,。
從指令模式切換到編輯模式,則可以按“Insert”鍵或“i”鍵,,從編輯模式切換到指令模式,,可按“Esc”鍵。
狀態(tài)行是屏幕底部一行,,被vi編輯器用來反饋編輯操作結(jié)果,。錯誤消息或提供信息的消息會在狀態(tài)行中顯示出來。
二,、vi的啟動和退出
1.啟動vi
在系統(tǒng)圖示字符下鍵入“vi”+“空格”+“文件名”,,如:vi test.txt
vi可以自動載入所要編輯的文件或是開啟一個新文件。
2.退出vi
在指令模式下鍵入如下命令可以退出vi:
:q 如果用戶只是讀文件的內(nèi)容而未對文件進(jìn)行修改,,可以在命令模式下輸入“:q”退出vi,。
:q! 如果用戶對文件的內(nèi)容作了修改,又決定放棄對文件的修改,,則用“:q!”命令,。
:w! 強(qiáng)行保存一個vi文件,如果該文件已存在,,則進(jìn)行覆蓋,。
:wq 保存文件并退出vi。
ZZ 快速保存文件的內(nèi)容,,然后退出vi,。功能和“:wq”相同。
:w filename 相當(dāng)于“另存為”,。
:n,mw filename 將第n-m行的文本保存到指定的文件filename中,。
三、vi長指令和短指令
長指令:以冒號開頭,,鍵入冒號后,,在屏幕的最末尾一行會出現(xiàn)冒號提示符,等待用戶鍵入指令,,輸入完指令后回車,,vi會執(zhí)行該指令。
段指令:與快捷鍵相似,,鍵入短指令后,,vi不會給任何提示就直接執(zhí)行。
1.輸入輸出命令
a 在光標(biāo)后輸入文本
A 在當(dāng)前行末尾輸入文本
i 在光標(biāo)前輸入文本
I 在當(dāng)前行開始輸入文本
o 在當(dāng)前行后輸入新一行
O 在當(dāng)前行前輸入新一行
2.光標(biāo)移動命令
b 移動到當(dāng)前單詞的開始
e 移動到當(dāng)前單詞的結(jié)尾
w 向后移動一個單詞
h 向前移動一個字符
l 向后移動一個字符
j 向下移動一行
k 向上移動一行
3.刪除操作命令
x 刪除光標(biāo)所在的字符
dw 刪除光標(biāo)所在的單詞
dd 刪除當(dāng)前行
d$ 刪除光標(biāo)至行尾的所有字符
D 與“d$”命令相同
4.替換操作命令
r 替換光標(biāo)所在的字符
R 替換字符序列
cw 替換一個單詞
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ù)對光標(biāo)所在行的所有改變
J 把兩行文本鏈接到一起
:set 用來設(shè)置或?yàn)g覽vi系統(tǒng)當(dāng)前的選項(xiàng)(加參數(shù)“all”后查看所有選項(xiàng)的列表)
:X 對所編輯的文件進(jìn)行簡單加密
四,、vi的高級應(yīng)用
1.設(shè)置vi環(huán)境
vi編輯器的行為可以通過設(shè)置編輯參數(shù)來定義,。
使用vi的set命令進(jìn)行設(shè)置。vi在進(jìn)行設(shè)置前必須處于指令模式,,但選項(xiàng)的改變是臨時的,,只在用戶當(dāng)前編輯回話下有效,當(dāng)用戶退出vi編
輯器時,,設(shè)置會被丟棄,。
autoindent選項(xiàng)
將新行與前一行的開始對準(zhǔn),縮寫:ai
該選項(xiàng)將用戶鍵入的每個新行與前一行的開始對齊,。該選項(xiàng)對于使用程序語言編程時十分有用,。本選項(xiàng)的默認(rèn)值是noai。
ignorecase選項(xiàng)
在搜索命令下忽略大小寫,,縮寫:ic
vi編輯器提供大小寫敏感的搜索,,要使vi忽略大小寫,鍵入“:set ignorecase”,,要返回大小寫敏感狀態(tài),,鍵入“:set noignorecase”.
magic選項(xiàng)
在搜索時,允許使用特殊字符,。
某些符號在用于搜索時有特殊的含義,。當(dāng)用戶將這些符號開頭置為nomagic時,這些符號不再有特殊含義,。
number選項(xiàng)
顯示行號,,縮寫:nu
vi編輯器一般情況下不顯示每行的行號??梢愿淖僴umber選項(xiàng)來顯示行號,。
report選項(xiàng)
告知用戶最后一個命令作用行的行號。
vi編輯器對用戶的編輯工作并不給予任何反饋,,如果希望在屏幕上看到自己編輯的反饋信息,,用戶可以通過編輯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)
縮短錯誤信息,。
wrapmargin選項(xiàng)
將右邊界設(shè)定為一定的字符個數(shù),縮寫:wm
用戶的終端屏幕通常為80列,,當(dāng)鍵入到行的末尾時,,屏幕即開始一個新行,,這就是行回繞,。在用戶按回車鍵時,,屏幕同樣開始一個新行。
因此,,屏幕上一行的長度可以為1-80個字符之間的任何長度,。但是,vi編輯器只在用戶按回車時,,才在用戶文件中生成一個新行,。如果用戶在
按回車前鍵入了120個字符,這時鍵入的文本看起來是在2行,,但實(shí)際在文件中,,這120個字符只在1行中。如果要限制行長度,,一是在到達(dá)屏幕
行末尾前按回車換行,,另一種是設(shè)定wrapmargin選項(xiàng)使vi編輯器自動插入回車。
2.縮寫操作符
縮寫操作符“:ab”命令使得用戶給任何字符串指定縮寫,,該功能可以幫主用戶提高輸入速度,。用戶可以為自己經(jīng)常輸入的文本選擇一個易
輸入的縮寫。
例如:鍵入“:ab uox Unix Operating System”命令,當(dāng)vi處于文本輸入模式時,,用戶鍵入“uox”接著鍵入一個空格時,,vi自動將鍵入的
“uox”變?yōu)椤癠nix Operating System”。
取消縮寫“:unab”命令可以取消一個縮寫,,例如:鍵入“:unab uox”命令即可,。
想列出已經(jīng)設(shè)置了的所有縮寫,鍵入“:ab”命令即可,。
3.宏操作符
宏操作符“:map”命令使用戶能將一系列按鍵指定給某一按鍵,。給用戶一個在指令模式下的快捷按鍵。
例如:鍵入“:map q dd”命令,,此后處于指令模式時,,每當(dāng)用戶鍵入q時,vi編輯器自動執(zhí)行“dd”命令,。
取消宏操作“:unmap”命令,。
用戶也可以使用map指令指定功能鍵,例如:鍵入“:map #n dd”命令,其中“#n”代表以n為功能鍵號的功能鍵,。
4.“.exrc”文件
用戶在vi編輯器中所設(shè)置的所有選項(xiàng)都是臨時的,,當(dāng)用戶退出時,它們都會失效,。要使這些設(shè)置永久保存,,可以將選項(xiàng)的設(shè)置保存到文件
“.exrc”中。
當(dāng)用戶打開vi編輯器時,,它自動查看用戶當(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一個“.exrc”文件也沒找到,則
對選項(xiàng)使用默認(rèn)值,。
“.exrc”文件屬于啟動文件,。
例如:建立一個“.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命令,使得用戶可以臨時拋開vi來運(yùn)行Shell命令,。
vi編輯器用“!”來通知vi其后面是一個Shell命令,。例如:鍵入“:!date”命令,vi編輯器將清除屏幕,,輸出當(dāng)前系統(tǒng)時間,,后按任意鍵
返回vi編輯器,并可以繼續(xù)編輯,。
如果用戶系統(tǒng)將Shell命令執(zhí)行的結(jié)果加到文件文本中,,可以使用“:r!”和相應(yīng)的Shell命令來將命令結(jié)果寫到用戶文件文本中。
相關(guān)附件:
