亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

vi

系統(tǒng) 2193 0

vi使用手冊(cè)(zt)


進(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è)文件,依次編輯

移動(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è)字j至字尾
) :光標(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)移至屏幕最后行
0:(注意是數(shù)字零)光標(biāo)移至當(dāng)前行首
$:光標(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顯示其他用戶用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)前行 。

- 作者: michaelbob 2005年03月21日, 星期一 10:05  回復(fù)(0) |  引用(0) 加入博采

VI使用手冊(cè)

VI使用手冊(cè)


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)入輸入模式。


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)入輸入模式。

文件操作指令多以 : 開(kāi)頭,這跟編輯指令有點(diǎn)區(qū)別。
:q 結(jié)束編輯(quit)
:q! 不存檔而要放棄編輯過(guò)的文件。
:w 保存文件(write)其後可加所要存檔的檔名。
:wq 即存檔後離開(kāi)。
zz 功能與 :wq 相同。




vi 或 vedit 命令

用途
用全屏顯示編輯文件。

語(yǔ)法
{ vi | vedit } [ -l ] [ -R ] [ -tTag ] [ -v ] [ -wNumber] [ -yNumber ] [ -r [ File ] ] [{ + | -c } { Subcommand } ] [ File ... ]

描述
vi 命令基于基礎(chǔ) ex 編輯器啟動(dòng)全屏編輯器。因此,ex 子命令可以在 vi 編輯器中使用。vedit 命令啟動(dòng)適用于初學(xué)者的 vi 編輯器版本。在 vedit 編輯器中,報(bào)告選項(xiàng)設(shè)置為 1,設(shè)置了 showmode 選項(xiàng)和 novice 選項(xiàng),使其成為一個(gè)行編輯器。

通過(guò)指定被編輯文件名,可以啟動(dòng) vi 編輯器。如果在命令行上提供多個(gè) File 參數(shù),vi 編輯器按指定的順序編輯每一個(gè)文件。現(xiàn)有文件的 vi 編輯器在屏幕底部顯示文件名、行數(shù)和字符數(shù)。在多字節(jié)語(yǔ)言環(huán)境的情況下,字符數(shù)必須解釋成字節(jié)數(shù)。

由于 vi 編輯器是全屏編輯器,所以可以逐屏編輯文本。vi 編輯器在編輯緩沖區(qū)為編輯的文件制作副本,并且直到保存更改文件內(nèi)容才會(huì)更改。光標(biāo)在顯示屏幕上的位置表明它在文件中的位置,并且子命令在光標(biāo)位置影響該文件。

vi 編輯器的局限性
以下列表提供了 vi 編輯器的最大限度。這些計(jì)數(shù)采用單字節(jié)字符集。

每行 {LINE_MAX} 個(gè)字符
每全局命令列表 256 個(gè)字符
128 個(gè)字符在以前被插入和刪除的文本中
128 個(gè)字符在外殼程序轉(zhuǎn)義命令中
128 個(gè)字符在一個(gè)字符串值的選項(xiàng)中
30 個(gè)字符在一個(gè)標(biāo)記名中
128 個(gè)映射宏,總共 2048 個(gè)字符
1,048,560 行,每行強(qiáng)制不能超過(guò) {LINE_MAX} 個(gè)字符
宏名和宏文本被限制在 100 個(gè)字符內(nèi)。
注:
對(duì)大于 64MB 的文件運(yùn)行 vi 編輯器可能會(huì)顯示以下的錯(cuò)誤信息:
0602-103 file too large to place in /tmp
vi 編輯方式
vi 編輯器按以下方式操作:

命令方式 當(dāng)啟動(dòng) vi 編輯器時(shí),它處于命令方式。您可以輸入任何子命令,除了那些指定僅用于文本輸入方式的子命令。當(dāng)子命令和其它方式結(jié)束時(shí),vi 編輯器返回命令方式。按 Esc 鍵取消子命令。
文本輸入方式 按這種方式使用 vi 編輯器來(lái)添加文本。用以下任意子命令進(jìn)入文本輸入方式: a 子命令、A 子命令、i 子命令、I 子命令、o子命令、O 子命令、cx 子命令(其中 x 代表子命令的范圍)、C 子命令、s 子命令、S 子命令和 R 子命令。輸入這些子命令中的一個(gè)后,即可輸入文本到編輯緩沖區(qū)中。要返回到命令方式,按 ESC 鍵以正常退出或按"中斷"(Ctrl-C 按鍵順序)以非正常方式結(jié)束。
最后行方式 帶前綴 :(冒號(hào))、/(斜杠)、?(問(wèn)號(hào))、!(感嘆號(hào))或 !!(兩個(gè)感嘆號(hào))的子命令在屏幕底部的顯示行上讀取輸入。當(dāng)輸入初始字符時(shí),vi 編輯器將光標(biāo)置于屏幕底部,在該處可以輸入命令中剩余的字符。按 Enter 鍵運(yùn)行子命令,或按"中斷"(Ctrl-C 按鍵順序)取消它。當(dāng) 使用 !! 前綴時(shí),光標(biāo)只在兩個(gè)感嘆號(hào)都輸入后才移動(dòng)。當(dāng)使用 : 前綴進(jìn)入最后行方式時(shí),如果在指定計(jì)數(shù)的命令之前使用以下字符,vi 編輯器賦予它們特定含義:
%
所有行,而不管光標(biāo)的位置
$
最后行
.
當(dāng)前行

定制 vi 編輯器
可以根據(jù)以下方式定制 vi 編輯器:

設(shè)置編輯選項(xiàng)
定義宏
映射鍵
設(shè)置縮寫(xiě)
設(shè)置 vi 編輯器選項(xiàng)
以下列表描述可以使用 set 命令更改的 vi 編輯器選項(xiàng)。這些選項(xiàng)的缺省設(shè)置是 off。如果打開(kāi)了這些開(kāi)關(guān)選項(xiàng)中的一個(gè),在選項(xiàng)之前輸入 no 即可重新關(guān)閉它。如果想中斷 autowrite vi 選項(xiàng),則輸入 noaw,其中 no 關(guān)閉選項(xiàng),aw 指定 autowrite 選項(xiàng)。

注:
當(dāng)輸入 vi 選項(xiàng)時(shí)不要包含圓括號(hào)。
vi 選項(xiàng)(縮寫(xiě)) 描述
autoindent(ai) 通過(guò)使用 shiftwidth 選項(xiàng)指定的制表符停止位之間的間隔,在文本輸入方式中自動(dòng)縮排為前行的縮排格式。缺省是 noai。將光標(biāo)退回到前面的制表符停止位,按 Ctrl-D 快捷鍵。這個(gè)選項(xiàng)對(duì)于全局命令不起作用。
autoprin(ap) 在任何更改編輯緩沖區(qū)的命令后面打印當(dāng)前行。缺省是 ap。這個(gè)選項(xiàng)只應(yīng)用于單行上一系列命令中的最后一個(gè)命令,并且對(duì)全局命令不起作用。
autowrite(aw) 如果編輯緩沖區(qū)自上次 write 子命令以來(lái)發(fā)生更改,則在 :n 子命令、:ta 子命令、Ctrl-A 按鍵順序和 ! 子命令之前,將編輯緩沖區(qū)自動(dòng)寫(xiě)入到文件。缺省是 noaw。
beautifying text(bf) 在文本輸入(除了制表符、換行符和換頁(yè)指示符)的過(guò)程中,防止用戶在編輯緩沖區(qū)中輸入控制字符。缺省是 nobf。此選項(xiàng)應(yīng)用于命令輸入。
closepunct(cp=) 處理結(jié)束標(biāo)點(diǎn)列表,特別當(dāng)文本自動(dòng)換行(wraptype 選項(xiàng))時(shí)。在多字符標(biāo)點(diǎn)前指出字?jǐn)?shù)數(shù),例如 cp=3..;)} 。當(dāng)自動(dòng)換行時(shí),vi 命令不分割關(guān)閉的標(biāo)點(diǎn)。
directory(dir=) 顯示包含編輯緩沖區(qū)的目錄。缺省為 dir = /var/tmp。
edcompatible(ed) 在多重替換過(guò)程中,保留 g(全局)和 c(確認(rèn))子命令后綴,并使 r(讀取)后綴像 r 子命令一樣運(yùn)作。缺省值是 noed。
exrc(exrc) 如果未設(shè)置,則在初始化過(guò)程中忽略當(dāng)前目錄下任何 .exrc 文件,除非當(dāng)前目錄是 HOME 環(huán)境變量指定的。缺省是 noexrc。
hardtabs(ht=) 告訴 vi 編輯器顯示屏幕上硬件制表符停止位之間的距離。(這個(gè)選項(xiàng)必須與基礎(chǔ)的終端或終端仿真器的制表符設(shè)置相匹配。)缺省值為 ht=8。
ignorecase(ic) 當(dāng)搜索正則表達(dá)式時(shí),忽略大寫(xiě)和小寫(xiě)之間的區(qū)別。缺省值是 noic。
linelimit(ll=) 設(shè)置最大行數(shù),如 -y 命令行選項(xiàng)。該選項(xiàng)只有和 .exrc 文件或 EXINIT 環(huán)境變量一起使用時(shí)有效。
lisp(lisp) 除去 ( ), { }, [ [ 和 ] ] 的特殊意義,并為 s 表達(dá)式啟用 =(格式打印)運(yùn)算符,以便能夠編輯行處理(LISP)程序。缺省是 nolisp。
list(list) 顯示文本和制表符 (^I) 和行的標(biāo)記端($)。缺省值是 nolist。
magic(magic) 當(dāng)搜索一種模式時(shí),將 .(句號(hào))、[(左括號(hào))和 *(星號(hào))字符當(dāng)成特殊字符。在關(guān)閉方式中,只有 ( )(圓括號(hào))和 $(美元符)保持特殊意義。但是,可以通過(guò)在其它字符前面加上 / (反斜杠)來(lái)激活其它字符的特殊意義。缺省是 magic。
mesg(mesg) 如果以可視方式設(shè)置,打開(kāi)終端的寫(xiě)入許可權(quán)。該選項(xiàng)只有和 .exrc 文件或 EXINIT 環(huán)境變量一起使用時(shí)有效。缺省值是 on。
modeline(modeline) 如果在文件開(kāi)始五行或最后五行找到,則運(yùn)行 vi 編輯器命令行。一行 vi 編輯器命令可以位于行中的任意位置。為了便于 vi 編輯器能辨認(rèn)命令行,這一行必須包含一個(gè)空格或制表符,后跟 ex: 或 vi: 字符串。命令行以第二個(gè) :(冒號(hào))結(jié)束。vi 編輯器嘗試將第一個(gè)和第二個(gè)冒號(hào)之間的任意數(shù)據(jù)解釋為 vi 編輯器命令。缺省為 nomodeline。
novice 指明是否處于 novice 方式。不能用 set 命令更改值。
number(nu) 顯示以行號(hào)作為前綴的行。缺省是 nonu。
optimize(opt) 加速缺少光標(biāo)尋址的終端的操作。缺省為 noopt。
paragraphs(para=) 定義開(kāi)始段落的 vi 宏名。缺省為 para=IPLPPPQPP/ LIpplpipnpbp。如果指定了一個(gè)段落,單字母 nroff 宏,如 .P 宏,必須以加引號(hào)字符包含空格。
partialchar(pc=) 出現(xiàn)在最后的顯示列,該列中雙寬字符不完全顯示。缺省字符為 -(減號(hào))。
prompt 當(dāng)處于命令方式時(shí),通過(guò)打印 :(冒號(hào))提示輸入新的編輯器命令。缺省值為 on。
readonly(ro) 設(shè)置永久的只讀方式。缺省為 noreadonly。
redraw(redraw) 在低能工作站上模仿智能工作站。缺省為 nore。
remap 允許根據(jù)其它宏來(lái)定義宏。缺省值是 on。
report(re=) 設(shè)置在消息顯示之前命令能重復(fù)的次數(shù)。對(duì)于產(chǎn)生許多消息的子命令,例如全局子命令,完成命令序列后顯示消息。缺省值為 report=5。
scroll(scr=) 設(shè)置在編輯器中上下滾動(dòng)時(shí)滾動(dòng)的行數(shù)。缺省值為窗口大小的 1/2,四舍五入。
sections(sect=) 定義開(kāi)始段落的 vi 宏名。缺省為 sect=NHSHHH/ HUuhsh+c。如果指定段落,單字母 nroff 宏,如 .P 宏必須以加引號(hào)字符包含空格。
shell(sh=) 為 ! 子命令或 :! 子命令定義外殼程序。缺省為登錄外殼程序。
shiftwidth(sw=) 為 autoindent 選項(xiàng)、shift 命令(> 和 <)和文本輸入命令(Ctrl-D 和 Ctrl-T 按鍵順序)使用的軟件制表符停止位設(shè)置間距。vi 選項(xiàng)只影響行開(kāi)始的縮排。缺省值為 sw=8。
showmatch(sm) 當(dāng)如輸入 )(右圓括號(hào))或 } (右花括號(hào))時(shí)顯示 ((匹配的左圓括號(hào))或 { (左花括號(hào))。缺省為 nosm。
showmode(smd) 當(dāng) vi 編輯器處于輸入方式時(shí)顯示消息加以指明。缺省為 nosmd。
slowopen(slow) 在插入期間,延遲更新顯示屏幕。缺省值為 noslow。
tabstop(ts=) 在一個(gè)顯示的文件中設(shè)置制表符停止位之間的間距。缺省值為 ts=8。
tags(tags =) 為用 ctags 命令創(chuàng)建的函數(shù)名的數(shù)據(jù)庫(kù)文件定義搜索路徑。缺省值為 tags=tags/ /usr/lib/tags。
term(term=) 設(shè)置正在使用的工作站類(lèi)型。缺省值為 term=$TERM,其中 $TERM 是 TERM 外殼程序變量的值。
terse(terse) 允許 vi 編輯器顯示消息的短格式。缺省為 noterse。
timeout(to) 為字符的進(jìn)入設(shè)置兩秒的時(shí)間限制。當(dāng)設(shè)置 timeout 選項(xiàng)時(shí),這個(gè)限制容許作為單獨(dú)的字符輸入和處理宏中的字符。要恢復(fù)宏的使用,需要設(shè)置 notimeout 選項(xiàng)。缺省值為 to。
ttytype 為正在使用的終端指明 tty 類(lèi)型。從 vi 編輯器不能更改這個(gè)值。
warn(warn) 在 ! 之前顯示警告消息。當(dāng)在編輯緩沖區(qū)中已經(jīng)作了更改,但還沒(méi)有寫(xiě)入文件時(shí),如果是第一次發(fā)送外殼程序命令,那么子命令執(zhí)行外殼程序命令。缺省為 warn。
window(wi=) 設(shè)置顯示在一個(gè)文本窗口中的行數(shù)。缺省值取決于操作時(shí)使用的波特率:600 波特或更少, 8 行;1200 波特,16 行;更高的速率,全屏減去 1 行。
wrapmargin(wm=) 設(shè)置從一行到另一行自動(dòng)換行的頁(yè)邊距。缺省值為 wm=0。0 值則關(guān)閉自動(dòng)換行。
wrapscan(ws) 允許字符串搜索從編輯緩沖區(qū)結(jié)尾到開(kāi)始有自動(dòng)換行。缺省值為 ws。
wraptype(wt=) 指明用于在行尾回繞單詞的方法。缺省值為 general。可以指定下列四個(gè)值中的一個(gè):
general
允許單詞中斷處(如兩個(gè)字符之間的空白)自動(dòng)換行。此設(shè)置為缺省值。
word
允許在單詞上自動(dòng)換行。
rigid
允許在列上和關(guān)閉的標(biāo)點(diǎn)之前自動(dòng)換行。
flexible
允許在列上自動(dòng)換行,但是一個(gè)標(biāo)點(diǎn)符號(hào)可以擴(kuò)展到頁(yè)邊距外后。
writeany(wa) 關(guān)閉通常在write 子命令之前進(jìn)行的檢查。缺省值為 nowa。

要查看對(duì)缺省設(shè)置進(jìn)行更改的 vi 編輯器設(shè)置列表,請(qǐng)輸入 set 并按空格鍵。按 Enter 鍵返回到命令方式。

要查看 vi 編輯器設(shè)置的完全列表,請(qǐng)輸入 set all。按 Enter 鍵返回到命令方式。

要打開(kāi)一個(gè) vi 編輯器選項(xiàng), 輸入 set Option。這個(gè)命令自動(dòng)返回到命令方式。

要打開(kāi)多個(gè) vi 編輯器選項(xiàng),輸入 set Option Option Option。這命令打開(kāi)三個(gè)指定的 vi 編輯器選項(xiàng)并返回到命令方式。

要關(guān)閉一個(gè) vi 選項(xiàng),輸入 set noOption。這個(gè)命令自動(dòng)返回到命令方式。

要更改一個(gè) vi 編輯器的值,請(qǐng)輸入 set Option=Value。這個(gè)命令自動(dòng)返回到命令方式。

可以僅為這個(gè)編輯會(huì)話使用 :set vi 編輯器子命令來(lái)設(shè)置選項(xiàng),或?yàn)檫@個(gè)編輯會(huì)話和所有將來(lái)的編輯會(huì)話設(shè)置選項(xiàng)。

要只為這個(gè)編輯會(huì)話設(shè)置或更改 vi 編輯器選項(xiàng),從命令行輸入 :set 子命令。

要為所有編輯會(huì)話設(shè)置 vi 選項(xiàng),將 :set 子命令置于 .profile 文件的 EXINIT 環(huán)境變量中(該文件由登錄的外殼程序讀取)或?qū)?set 子命令置于 .exrc 文件中。vi 編輯器首先查找 EXINIT 環(huán)境變量并運(yùn)行它的命令。如果 EXINIT 環(huán)境變量不存在,則 vi 編輯器查找 $HOME/.exrc 文件并運(yùn)行它的命令。最后,不管以前的任何結(jié)果,vi 編輯器查找本地的 .exrc 文件并運(yùn)行它的命令。

注:
這個(gè)過(guò)程一直成立,除了 tvi 命令(可信的 vi)。在這種情況下,vi 編輯器查找并只運(yùn)行 /etc/.exrc 文件。
要獲取通過(guò)設(shè)置 EXINIT 環(huán)境變量來(lái)更改選項(xiàng)的信息,請(qǐng)參閱 environment 文件中關(guān)于環(huán)境變量的描述。

.exrc 文件可以包含 set Option=Value; 格式的子命令,例如:

set cp=3 . . ;
要在 .exrc 文件中包含注釋,將 "(雙引號(hào))作為該行中的第一個(gè)字符。

定義宏
如果經(jīng)常使用一條子命令或一系列子命令,可以使用 vi 編輯器來(lái)定義發(fā)出子命令或子命令順序的宏。

要定義一個(gè)宏,輸入一系列以字母表中一個(gè)字母命名的緩沖區(qū)。小寫(xiě)字母 a 到 z 覆蓋緩沖區(qū)的內(nèi)容,大寫(xiě)字母 A 到 Z 將文本附加到緩沖區(qū)先前的內(nèi)容,這樣可以逐塊構(gòu)建宏。

例如,要定義命名為 c 的宏,該宏搜索單詞 corner 并使單詞 corner 后的第三行成為當(dāng)前行,輸入以下命令:

o /corner/+3
然后按 ESC 鍵并輸入以下命令:


"c
其中 c 是緩沖區(qū)宏的名稱。

要添加文本到已定義的緩沖區(qū)中以前的內(nèi)容,輸入 o viSubcommand,按 ESC 鍵,并輸入 "CapitalLetter,其中 CapitalLetter 變量指定一個(gè)從 A 到 Z 的大寫(xiě)字母。例如,要構(gòu)建名為 T 的緩沖區(qū)宏,該宏搜索單詞 corner 并允許添加更多命令,輸入以下命令:


o corner
然后按 ESC 鍵并輸入以下命令:

"T
其中 T 是緩沖區(qū)宏的名稱。任何時(shí)候都可以重復(fù)本過(guò)程將更多的 vi 子命令添加到相同的緩沖區(qū)。

例如,要添加移動(dòng)光標(biāo)到前面行和刪除該行的命令,輸入以下命令:

o -dd
這里 -(負(fù)號(hào))意為將光標(biāo)上移一行,而 dd 表示刪除當(dāng)前行。按 ESC 鍵并輸入以下命令:

"Tdd
要啟動(dòng)宏,輸入 @Letter,其中 Letter 變量指定想要使用的緩沖區(qū)宏的字母名。要再使用相同的宏,輸入 @@ (兩個(gè)位于符號(hào))。例如,輸入 @T 啟動(dòng) T 緩沖區(qū)宏并運(yùn)行搜索、移動(dòng)光標(biāo)和刪除行命令。輸入 @@T 以再一次啟動(dòng) T 緩沖區(qū)宏。

系統(tǒng)使用的字符集通過(guò)對(duì)照表定義。該表影響 vi 宏的性能。

映射鍵
可以使用 :map、:map! 和 :ab 子命令將擊鍵操作映射到命令或命令序列。:map 子命令在命令方式中使用。:map! 和 :ab 子命令在文本輸入方式中使用。可以為這個(gè)編輯會(huì)話和所有以后的編輯會(huì)話映射鍵,或者僅為當(dāng)前編輯會(huì)話(以兩鐘方式中的一種)映射鍵。

要為所有以后的編輯會(huì)話映射鍵,將子命令置于 $HOME/.exrc 文件中。vi 編輯器每次啟動(dòng),會(huì)讀取這個(gè)文件。映射保持對(duì)每一次編輯會(huì)話有效。

要僅從命令方式為當(dāng)前的編輯會(huì)話映射鍵,在 vi 編輯器會(huì)話期間啟動(dòng)子命令。要只通過(guò)文本輸入方式為當(dāng)前編輯會(huì)話映射鍵,在 vi 編輯器會(huì)話期間在命令行上輸入子命令。映射保持對(duì)當(dāng)前編輯會(huì)話有效。

注意: 如果使用的是 IBM 3161 ASCII 顯示站、IBM 3163 ASCII 顯示站或 IBM 3101 ASCII 顯示站,vi 編輯器的缺省鍵映射會(huì)導(dǎo)致數(shù)據(jù)丟失。要查看缺省映射,請(qǐng)發(fā)出 :map 子命令。ESC-J 或 Shift-J 按鍵順序產(chǎn)生特殊的問(wèn)題。這些按鍵順序從光標(biāo)的當(dāng)前位置到文件尾刪除所有的信息。為了避免問(wèn)題出現(xiàn),使用 .exrc 文件來(lái)更改這個(gè)按鍵順序。
:map、:map! 和 :ab 子命令按以下定義:

:map 按命令方式定義宏。在 vi 編輯器中,:map 子命令允許通過(guò)按單一鍵來(lái)運(yùn)行指定的命令或命令序列。
要按命令方式映射鍵,用空的編輯緩沖區(qū)啟動(dòng) vi 編輯器而不用 vi 命令給 vi 文件命名或在 vi 編輯器啟動(dòng)后輸入任何東西到緩沖區(qū)。可以使用 :map 子命令完成以下任務(wù):

要將字符映射到編輯命令序列,輸入:

:map Letter viSubcommand
要按命令方式取消先前映射的字符,輸入:

:unmap Letter
要為命令方式顯示當(dāng)前映射列表,輸入:

:map
vi 編輯器不使用以下鍵,但是可以在命令方式中和 :map 子命令一起使用。

字母 s、g、K、q、V 和 v
控制鍵序列 Ctrl-A、Ctrl-K、Ctrl-O、Ctrl-T、Ctrl-W 和 Ctrl-X
符號(hào) _(下劃線)、*(星號(hào))、 / (反斜杠) 和 =(等號(hào))
盡管可以映射已被 vi 編輯使用的鍵,但只要映射有效,就無(wú)法使用鍵的常用功能。有些終端允許將命令序列映射到功能鍵。如果處于 LISP 方式,=(等號(hào))不能使用,因?yàn)樗延?vi 編輯器使用。

要映射字母 v 到命令序列,該命令序列定位的下一個(gè)出現(xiàn)的 map 單詞并將它改成單詞 MAP,請(qǐng)輸入以下命令:


:map v /map<Ctrl-V><Enter>cwMAP<Ctrl-V><Esc><Ctrl-V><Enter>
前面的示例指導(dǎo) vi 編輯器定位下一個(gè) map 的出現(xiàn)(/map<Ctrl-V><Enter>),將 map 更改為 MAP(cwMAP),結(jié)束 change-word 子命令(<Ctrl-V><Esc>),輸入命令(<Ctrl-V><Enter>)。


注:
為了防止 vi 編輯器解釋 Enter 鍵,當(dāng)被映射時(shí),必須在前面輸入 Ctrl-V 按鍵順序。此情況對(duì) Esc、Backspace 和 Delete 鍵也成立。
要映射控制字符 Ctrl-A、Ctrl-K 和 Ctrl-O,同時(shí)按 Ctrl 鍵和相應(yīng)的字母。例如,要將 Ctrl-A 按鍵順序映射到保存文件和編輯系列中下一個(gè)文件命令序列,輸入以下命令:


:map <Ctrl-A> :w<Ctrl-V><Enter>:n<Ctrl-V><Enter>
要將映射控制字符 Ctrl-T、Ctrl-W 和 Ctrl-X,必須首先用 Ctrl-V按鍵順序序?yàn)樗鼈冝D(zhuǎn)義。

要映射 |(管道符),首先必須用兩個(gè) Ctrl-V 按鍵順序?yàn)樗D(zhuǎn)義,這通過(guò)以下示例說(shuō)明:將字符 g 映射到命令序列,該命令序列轉(zhuǎn)義到外殼程序,連接文件 /etc/motd 并輸出到 wc 命令:


:map g :!cat /etc/motd <Ctrl-V><Ctrl-V>| wc<Ctrl-V><Enter>
如果終端允許映射功能鍵,必須用 #number 按鍵順序引用它們,以指定想映射的功能鍵的號(hào)碼。在以下示例中,F(xiàn)1 功能鍵映射到刪除單詞和將光標(biāo)下移三個(gè)單詞的命令序列:


:map #1 dwwww
為了使功能鍵映射起作用,功能鍵給終端類(lèi)型的輸出必須和 terminfo 文件中定義的輸出相匹配。這些定義由 kfnumber 條目標(biāo)志,其中,kf1 代表 F1 功能鍵,kf2 代表 F2 功能鍵,等等。如果當(dāng)按功能鍵時(shí)所獲取的輸出與這個(gè)條目不匹配,在任何映射可以發(fā)生之前,必須使用終端的設(shè)置方式去糾正設(shè)置以便和這些終端數(shù)據(jù)庫(kù)條目相匹配。

也可以映射某個(gè)鍵盤(pán)特殊鍵,如 Home、End、Page Up 和 Page Down 鍵。對(duì)于大多數(shù)的終端,這些鍵已經(jīng)在 vi 編輯器中映射。可以通過(guò)使用 :map 子命令驗(yàn)證這個(gè)映射。如果這些鍵還沒(méi)有映射,可以如下使用 :map 子命令:


:map <Ctrl-V><End> G
:map <Ctrl-V><Home> 1G
:map <Ctrl-V><PageUp> <Ctrl-F>
:map <Ctrl-V><PageDown> <Ctrl-B>
要在命令方式中獲取所有當(dāng)前映射,請(qǐng)輸入 :map 子命令。前面的示例顯示如下:


v v /map<Ctrl-M>cwMAP<Ctrl-[>Ctrl-M>
<Ctrl-A> <Ctrl-A> :w<Ctrl-M>:n<Ctrl-M>
g g :!cat /etc/motd | wc <Ctrl-M>

注:
Ctrl-V 和 Enter 按鍵順序顯示為 Ctrl-M 按鍵順序,而 Ctrl-V 和 Esc 按鍵順序顯示為 Ctrl-[ 按鍵順序。
:map! 當(dāng)處于文本輸入方式時(shí),將字符串映射到單個(gè)鍵。要按文本輸入方式映射鍵,用空的編輯緩沖區(qū)啟動(dòng) vi 編輯器而不用 vi 命令給 vi 文件命名或在 vi 編輯器啟動(dòng)后輸入任何東西到緩沖區(qū)。可以使用 :map! 子命令完成以下任務(wù):
要按文本輸入方式映射一個(gè)字母到一個(gè)或多個(gè) vi 字符串,輸入:

:map! Letter String
要在文本輸入方式中取消先前映射的字母,請(qǐng)輸入:

:unmap! Letter
要顯示在文本輸入方式已映射到特殊鍵的現(xiàn)有字符串,請(qǐng)輸入:

:map!
當(dāng)處于文本輸入方式時(shí),輸入映射鍵處理指定的字符串。Ctrl-V 和 Esc 按鍵順序進(jìn)入命令方式 ,回到當(dāng)前單詞的開(kāi)始(bbw),并啟動(dòng) cw(change-word)子命令。例如:


:map! % <Ctrl-V><Esc>bbwcw
當(dāng)輸入文本時(shí),如果意識(shí)到已經(jīng)輸錯(cuò)了一個(gè)單詞,可以通過(guò)按 %(百分號(hào))鍵并重新輸入這個(gè)單詞。編輯器自動(dòng)返回到插入方式。


注:
當(dāng)選擇將用于 :map! 子命令的鍵時(shí)要特別當(dāng)心。一旦鍵已映射,除非先發(fā)出 :unmap! 子命令,它們就不能再按文本輸入。
:ab 將鍵或按鍵順序映射到字符串以用于文本輸入方式。當(dāng)輸入具有幾個(gè)重復(fù)的短句、名稱或標(biāo)題時(shí),:ab 子命令十分有用。
以下示例將 city 替換為短句 Austin, Texas 78759,只要它是用文本輸入方式輸入并緊跟一個(gè)空格、句號(hào)或冒號(hào):


:ab city Austin, Texas 78759
例如,如果在輸入文本時(shí),輸入以下內(nèi)容:


My current residence is city.
按 Tab 鍵擴(kuò)展單詞 city 用于閱讀:


My current residence is Austin, Texas 78759.
縮寫(xiě)在單詞中不擴(kuò)展。例如,如果輸入 My current residence iscity,單詞 iscity 不擴(kuò)展。

如果 :map! 子命令用于映射縮寫(xiě)用于插入方式,則出現(xiàn)的所有縮寫(xiě)都被擴(kuò)展,而不管它出現(xiàn)在什么位置。如果在前面的示例中使用 :map! 子命令(:map! city Austin, Texas 78759),那么無(wú)論什么時(shí)候輸入單詞 city,無(wú)論前面和后面是什么,這個(gè)單詞將擴(kuò)展為 Austin, Texas 78759。因此,單詞 iscity 成為 isAustin, Texas 78759。


注:
當(dāng)選擇用于 :ab 子命令的鍵時(shí),需要小心。一旦鍵已定義,除非先發(fā)出 :unab 子命令,它們就不能再按文本輸入。

設(shè)置縮寫(xiě)
set 命令具有與 map! 命令類(lèi)似的行為,除了 set 命令僅當(dāng)縮寫(xiě)是單個(gè)單詞時(shí)以縮寫(xiě)形式代替字符串。可以使用 vi 編輯器的 set 命令完成以下任務(wù):

列出現(xiàn)有的縮寫(xiě)
除去縮寫(xiě)
設(shè)置(定義)縮寫(xiě)
注:
用空編輯緩沖區(qū)啟動(dòng) vi 編輯器。不要用 vi 命令給 vi 文件命名或在 vi 編輯器啟動(dòng)后輸入任何東西到緩沖區(qū)。按 Esc 鍵以確保處于命令方式。
要列出縮寫(xiě) 輸入 :ab 命令來(lái)列出現(xiàn)有的縮寫(xiě)。按 Enter 鍵返回到命令方式。
要除去縮寫(xiě) 輸入 :anab Abbreviation 命令以除去縮寫(xiě),其中 Abbreviation 變量指定不再想縮寫(xiě)的字符串。
要設(shè)置(定義)縮寫(xiě) 輸入 :ab Abbreviation String 命令來(lái)設(shè)置縮寫(xiě),其中 Abbreviation 變量指定定義為縮寫(xiě)的字符串,而 String 變量指定被縮寫(xiě)的字符串。 只有當(dāng)縮寫(xiě)是單獨(dú)的單詞時(shí),縮寫(xiě)可以替代字符串。
例如, 如果輸入 :ab kn upper 命令,然后當(dāng)處于文本輸入方式時(shí)輸入 acknowledge,因?yàn)閱卧~ acknowledge 中的 kn 字符串不是單獨(dú)的單詞,所以不啟動(dòng) set 命令 :ab abbreviation string 命令。

然而,如果輸入 :ab kn upper命令,然后當(dāng)處于文本輸入方式時(shí),輸入 make the kn line all kncase,結(jié)果是 make the upper line all uppercase。


標(biāo)志

-cSubcommand 在開(kāi)始查看 vi 之前,執(zhí)行 ex 編輯器子命令。光標(biāo)移到被最近執(zhí)行的命令影響的行。當(dāng)輸入一個(gè)空操作數(shù)時(shí),如 -c' ',vi 編輯器將光標(biāo)置于文件的第一行。-c 標(biāo)志不能與 + 標(biāo)志兼容。不要同時(shí)指定這兩個(gè)標(biāo)志。
-l 用 LISP 方式進(jìn)入 vi 編輯器。在這種方式中,vi 編輯器適當(dāng)?shù)貫?LISP 代碼創(chuàng)建縮排,(, ), {, }, [[ 和 ]] 子命令被修改以便正確地為 LISP 進(jìn)行操作。
-r[File] 在 vi 編輯器或系統(tǒng)故障之后恢復(fù)文件。如果不指定 File 變量, vi 編輯器顯示所有保存過(guò)的文件列表。
-R 設(shè)置只讀選項(xiàng)以保護(hù)文件使其不被覆蓋。
-tTag 編輯包含 Tag 變量的文件并將 vi 編輯器定位于它的定義。要使用該標(biāo)志,必須首先使用 ctags 命令創(chuàng)建一個(gè)函數(shù)名及它們位置的數(shù)據(jù)庫(kù)。
-v 用詳細(xì)方式進(jìn)入 vi 編輯器。
-wNumber 將缺省窗口大小設(shè)置為 Number 變量指定的值。當(dāng)在低速線路上使用 vi 編輯器時(shí),這個(gè)標(biāo)志十分有用。
-yNumber 用任何大于 1024 的值覆蓋 1,048,560 的最大行設(shè)置。由于 vi 編輯器為緩沖區(qū)控制使用額外的行,請(qǐng)求的行數(shù)應(yīng)該是需要的兩倍。
+[Subcommand] 在開(kāi)始編輯之前,執(zhí)行 ex 編輯器子命令。如果沒(méi)有指定 Subcommand 變量,光標(biāo)將置于文件的首行。這個(gè) + 標(biāo)志與 -c 標(biāo)志不兼容。不要同時(shí)指定這兩個(gè)標(biāo)志。

vi 常規(guī)子命令語(yǔ)法
使用以下常規(guī)語(yǔ)法來(lái)輸入子命令:

[Named_Buffer] [Operator] [Number] Object

注:
方括號(hào)標(biāo)識(shí)任選項(xiàng)。
[Named_Buffer] 指定臨時(shí)文本存儲(chǔ)區(qū)域。
[Operator] 指定子命令或操作;指導(dǎo) vi 編輯器。
[Number] 將操作范圍或行地址指定為一個(gè)整數(shù)。
Object 指定操作對(duì)象,如文本對(duì)象(字符、單詞、句子、段落、節(jié)、字符串)或文本位置(一行、在當(dāng)前行中的位置、屏幕位置)。

在子命令之前計(jì)數(shù)
可以在許多子命令前放一個(gè)數(shù)字。vi 編輯器以下面方式中的一種解釋這個(gè)數(shù)字:

轉(zhuǎn)至由 Number 參數(shù)指定的行:
5G
10Z
轉(zhuǎn)至由 Number 參數(shù)指定的列。
25|
上下滾動(dòng)由 Number 參數(shù)指定的行數(shù):
10Ctrl-U
10Ctrl-D
vi 編輯器子命令
使用子命令執(zhí)行以下種類(lèi)的操作:

移動(dòng)光標(biāo)
編輯文本
控制文件
其它操作
移動(dòng)光標(biāo)
按以下方式使用子命令在文件內(nèi)移動(dòng)光標(biāo):

在行內(nèi)移動(dòng)
按字符位置在行內(nèi)移動(dòng)
移到單詞
按行位置移動(dòng)
移到句、段落或節(jié)
通過(guò)重繪屏幕移動(dòng)
翻頁(yè)和滾動(dòng)
搜索模式
在文件中標(biāo)記特殊位置并返回
在行內(nèi)移動(dòng)
在命令方式輸入以下命令。可以通過(guò)按 Esc 鍵取消不完整的命令。如果需要關(guān)于 vi 子命令格式的信息,請(qǐng)參閱"vi 常規(guī)子命令語(yǔ)法"。

左箭頭或 h 或 Ctrl-H 將光標(biāo)向左移動(dòng)一個(gè)字符。
下箭頭或 j 或 Ctrl-J 或 Ctrl-N 將光標(biāo)向下移動(dòng)一行(它保持在同一列)。
上箭頭或 k 或 Ctrl-P 將光標(biāo)向上移動(dòng)一行(它保持在同一列)。
右箭頭或 l 將光標(biāo)向右移動(dòng)一個(gè)字符。

按字符位置在行中移動(dòng)
在命令方式輸入以下命令。可以通過(guò)按 Esc 鍵取消不完整的命令。如果需要關(guān)于 vi 子命令格式的信息,請(qǐng)參閱"vi 常規(guī)子命令語(yǔ)法"。

^ 將光標(biāo)移到第一個(gè)非空字符。
0 將光標(biāo)移到行的開(kāi)始。
$ 將光移到行尾。
fx 將光標(biāo)移到下一個(gè) x 字符。
Fx 將光標(biāo)移到最后一個(gè) x 字符。
tx 將光標(biāo)移到下一個(gè) x 字符的前一列。
Tx 將光標(biāo)移到下一個(gè) x字符的后一列。
; 重復(fù)最近的 f、F、t 或 T 子命令。
, 以反方向重復(fù)最近的 f、F、t 或 T 子命令。
Number| 將光標(biāo)移到指定列。

移到單詞
在命令方式輸入以下命令。如果需要關(guān)于 vi 子命令格式的信息,請(qǐng)參閱"vi 常規(guī)子命令語(yǔ)法"。

w 將光標(biāo)移到下一個(gè)小字。
b 將光標(biāo)移到前一個(gè)小字。
e 將光標(biāo)移到小字的倒數(shù)第二個(gè)字母。
W 將光標(biāo)移到下一個(gè)大字。
B 將光標(biāo)移到前一個(gè)大字。
E 將光標(biāo)移到大字的倒數(shù)第二個(gè)字母。

按行位置移動(dòng)
在命令方式輸入以下命令。如果需要有關(guān) vi 子命令的信息,請(qǐng)參閱"vi 常規(guī)子命令語(yǔ)法"。

H 將光標(biāo)移到屏幕的頂行。
L 將光標(biāo)移到屏幕的最后一行。
M 將光標(biāo)移到屏幕的中間行。
+ 將光標(biāo)移到它的第一個(gè)非空字符的下一行。
- 將光標(biāo)移到它的第一個(gè)非空字符的前一行。
Enter 將光標(biāo)移到它的第一個(gè)非空字符的下一行。

移到句、段落或節(jié)
在命令方式輸入以下命令。可以通過(guò)按 Esc 鍵取消不完整的子命令。如果需要關(guān)于 vi 子命令格式的信息,請(qǐng)參閱"vi 常規(guī)子命令語(yǔ)法"。

( 將光標(biāo)置于前一句的開(kāi)始,或前一個(gè) s-表達(dá)式(如果處于 LISP 方式)。
) 將光標(biāo)置于下一句的開(kāi)始,或下一個(gè) s-表達(dá)式(如果處于 LISP 方式)。
{ 將光標(biāo)置于前一個(gè)段落的開(kāi)始,或下一個(gè)列表(如果處于 LISP 方式)。
} 將光標(biāo)置于下一個(gè)段落的開(kāi)始,如果處于 C 方式,則置于下一節(jié),或者如果處于 LISP 方式則置于下一列表。
]] 將光標(biāo)置于下一節(jié),或者函數(shù)(如果處于 LISP 方式)。
[[ 將光標(biāo)置于前一節(jié),或者函數(shù)(如果處于 LISP 方式)。

通過(guò)重繪屏幕移動(dòng)
在命令方式輸入以下命令。可以通過(guò)按 Esc 鍵取消不完整的子命令。如果需要關(guān)于 vi 子命令格式的信息,請(qǐng)參閱"vi 常規(guī)子命令語(yǔ)法"。

z 用當(dāng)前行重繪屏幕頂部。
z- 用當(dāng)前行重繪屏幕底部。
z. 用當(dāng)前行重繪屏幕中間。
/Pattern/z- 用包含由 Pattern 參數(shù)指定的字符串的行重繪屏幕底部。

翻頁(yè)和滾動(dòng)
在命令方式輸入以下命令。可以通過(guò)按 Esc 鍵取消不完整的子命令。如果需要關(guān)于 vi 子命令格式的信息,請(qǐng)參閱"vi 常規(guī)子命令語(yǔ)法"。

Ctrl-U 向上滾動(dòng) 1/2 屏幕。
Ctrl-D 向下滾動(dòng) 1/2 屏幕。
Ctrl-F 向前滾動(dòng)一個(gè)屏幕。
Ctrl-B 向后滾動(dòng)一個(gè)屏幕。
Ctrl-E 將窗口向下滾動(dòng)一行。
Ctrl-Y 將窗口向上滾動(dòng)一行。
z+ 向上翻頁(yè)
z^ 向下翻頁(yè)

搜索模式
在命令方式輸入以下命令。可以通過(guò)按 Esc 鍵取消不完整的子命令。如果需要關(guān)于 vi 子命令格式的信息,請(qǐng)參閱"vi 常規(guī)子命令語(yǔ)法"。

[Number]G 將光標(biāo)置于由 Number 參數(shù)指定的行號(hào),或者最后一行(如果沒(méi)有指定 Number 參數(shù))。
/Pattern 將光標(biāo)置于包含由 Pattern 參數(shù)指定的字符串的下一行。
?Pattern 將光標(biāo)置于包含由 Pattern 參數(shù)指定的字符串的上一行。
n 在同一方向重復(fù)上次對(duì) Pattern 參數(shù)指定的文本的搜索。
N 在相反方向重復(fù)上次對(duì) Pattern 參數(shù)指定的文本的搜索。
/Pattern/+Number 將光標(biāo)置于在與 Pattern 參數(shù)指定字符串相匹配的行的后面指定的行數(shù)。
?Pattern?-Number 將光標(biāo)置于在與 Pattern 參數(shù)指定字符串相匹配的行的前面指定的行數(shù)。
% 查找與當(dāng)前光標(biāo)位置的括號(hào)或大括號(hào)相匹配的括號(hào)或大括號(hào)。

編輯文本
用于編輯的子命令使您能執(zhí)行以下任務(wù):

在文件中標(biāo)記具體位置并返回
添加文本到文件
當(dāng)處于輸入方式時(shí)更改文本
從命令方式更改文本
復(fù)制和移動(dòng)文本
恢復(fù)和重復(fù)更改
在文件中標(biāo)記具體位置并返回
在命令方式輸入以下命令。可以通過(guò)按 Esc 鍵取消不完整的子命令。如果需要關(guān)于 vi 子命令格式的信息,請(qǐng)參閱"vi 常規(guī)子命令語(yǔ)法"。

" 將光標(biāo)移到當(dāng)前行的前一位置。
" 將光標(biāo)移到包含當(dāng)前行前一位置的行的開(kāi)始。
mx 用 x 參數(shù)指定的字母標(biāo)記當(dāng)前位置。
`x 將光標(biāo)移到由 x 參數(shù)指定的標(biāo)記。
'x 將光標(biāo)移到包含由 x 參數(shù)指定的標(biāo)記的行的開(kāi)始。

添加文本到文件(文本輸入方式)
在命令方式輸入以下命令,將 vi 編輯器更改為文本輸入方式。如果需要有關(guān) vi 子命令的信息,請(qǐng)參閱"vi 常規(guī)子命令語(yǔ)法"。

aText
在光標(biāo)后面插入由 Text 參數(shù)指定的文本。按 Esc 鍵結(jié)束文本輸入方式。
AText
添加由 Text 參數(shù)指定的文本到行尾。按 Esc 鍵結(jié)束文本輸入方式。
iText
在光標(biāo)前面插入由 Text 參數(shù)指定的文本。按 Esc 鍵結(jié)束文本輸入方式。
IText
在行中的第一個(gè)非空字符前插入由 Text 參數(shù)指定的文本。按 Esc 鍵結(jié)束文本輸入方式。
o
在當(dāng)前行的下面添加一個(gè)空行。按 Esc 鍵結(jié)束文本輸入方式。
O
在當(dāng)前行的上面添加一個(gè)空行。按 Esc 鍵結(jié)束文本輸入方式。

當(dāng)處于輸入方式時(shí)更改文本
僅當(dāng)處于文本輸入方式時(shí)使用以下子命令。這些命令在命令方式中有不同的意思。如果需要關(guān)于 vi 子命令格式的信息,請(qǐng)參閱"vi 常規(guī)子命令語(yǔ)法"。

Ctrl-D
回退到前一個(gè)自動(dòng)縮排停止位。
^ Ctrl-D 只結(jié)束該行的自動(dòng)縮排。
0Ctrl-D 將光標(biāo)退回到左頁(yè)邊。
Esc 結(jié)束插入并返回到命令狀態(tài)。
Ctrl-H 擦除上個(gè)字符。
Ctrl-Q 如果 xon 禁用則輸入任意字符。
Ctrl-V 輸入任意字符
Ctrl-W 擦除上個(gè)的小字。
/ 引用擦除并殺死字符。
Ctrl-? 中斷和結(jié)束插入或 Ctrl-D 按鍵順序。

從命令方式更改文本
在命令方式使用以下命令。可以通過(guò)按 Esc 鍵取消不完整的子命令。如果需要關(guān)于 vi 子命令格式的信息,請(qǐng)參閱"vi 常規(guī)子命令語(yǔ)法"。

C
更改行的剩余部分(同 c$ 一樣)。
cc
更改一行
cw 更改一個(gè)單詞
cwText 將字更改為 Text 參數(shù)指定的文本。
D 刪除行的剩余部分(同 d$ 一樣)。
dd 刪除一行。
dw 刪除一個(gè)單詞。
J 連接行。
rx 用 x 指定的字符替換當(dāng)前字符。
RText
用 Text 參數(shù)指定的文本覆蓋字符。
s
替代字符(同 cl 一樣)。
S
替代行(同 cc 一樣)。
u 撤銷(xiāo)上次更改。
x 刪除光標(biāo)位置的字符。
X 刪除光標(biāo)前的一個(gè)字符(同 dh 一樣)。
<< 將一行向左移位。
<L 將所有的行從光標(biāo)位置向左移到屏幕末尾。
>> 將一行向右移位。
>L 將所有的行從光標(biāo)位置向右移到屏幕末尾。
~ 將光標(biāo)位置的字母更改為相反的大小寫(xiě)格式。
! 縮排 LISP。

復(fù)制和移動(dòng)文本
在命令方式使用以下命令。可以通過(guò)按 Esc 鍵取消不完整的子命令。如果需要關(guān)于 vi 子命令格式的信息,請(qǐng)參閱"vi 常規(guī)子命令語(yǔ)法"。

p 在光標(biāo)之后將撤銷(xiāo)緩沖區(qū)中的文本還原。
P 在光標(biāo)之前將緩沖區(qū)中的文本還原。
"xp 將 x 緩沖區(qū)中的文本還原
"xd 將文本刪除到 x 緩沖區(qū)。
y 將跟隨的對(duì)象(例如 word 為w)放到撤銷(xiāo)緩沖區(qū)。
"xy 將跟隨的對(duì)象放到 x 緩沖區(qū),其中 x 為任意字母。
Y 將行放到撤銷(xiāo)緩沖區(qū)。

恢復(fù)和重復(fù)更改
在命令方式使用以下命令。可以通過(guò)按 Esc 鍵取消不完整的子命令。如果需要關(guān)于 vi 子命令格式的信息,請(qǐng)參閱"vi 常規(guī)子命令語(yǔ)法"。

u 撤銷(xiāo)最后一次更改。

注:
撤銷(xiāo)后,光標(biāo)移到更新過(guò)的當(dāng)前行的第一個(gè)非空字符。
U 如果最后一次更改以來(lái)光標(biāo)還沒(méi)有離開(kāi)行,則恢復(fù)當(dāng)前行。
. 重復(fù)上次更改或增加 "np 命令。

注:
這條子命令將重復(fù)最后一次的更改,包括一條撤銷(xiāo)命令。因此,一次撤銷(xiāo)后,重復(fù)一次撤銷(xiāo)而不是最后一次更改。
這條子命令不是為和宏一起使用設(shè)計(jì)的。輸入 @@ (兩個(gè)位于字符)以重復(fù)宏。

"n p 檢索完整行和行塊的倒數(shù)第 n 次刪除。

操作文件
用于操作文件的子命令允許執(zhí)行在以下各節(jié)中概述的任務(wù):

將更改保存至文件
編輯另一文件
編輯一系列文件
查找文件信息
將更改保存至文件
在命令方式使用以下命令。如果需要有關(guān) vi 子命令的信息,請(qǐng)參閱"vi 常規(guī)子命令語(yǔ)法"。

:w 將編輯緩沖區(qū)內(nèi)容寫(xiě)到原始文件中。如果正在 ex 編輯器中使用這條子命令,不必輸入 :(冒號(hào))。
:w File 將編輯緩沖區(qū)內(nèi)容寫(xiě)入由 File 參數(shù)指定的文件中。如果正在 ex 編輯器中使用這條子命令,不必輸入 :(冒號(hào))。
:w! File 用緩沖區(qū)內(nèi)容覆蓋由 File 參數(shù)指定的文件。如果正在 ex 編輯器中使用這條子命令,不必輸入 :(冒號(hào))。

編輯另一文件
在命令方式輸入以下命令。如果需要有關(guān) vi 子命令的信息,請(qǐng)參閱"vi 常規(guī)子命令語(yǔ)法"。

:e File 編輯指定文件。如果正在從 ex 編輯器使用這條子命令,不必輸入 :(冒號(hào))。
:e! 重新編輯當(dāng)前文件并廢棄所有更改。
:e + File 從最后開(kāi)始編輯指定文件。
:e + Number File 從指定行號(hào)開(kāi)始編輯指定文件。
:e # 編輯備用文件。在用 :e 命令訪問(wèn)另一個(gè)文件之前,備用文件通常是以前的文件名。但是,如果當(dāng)調(diào)用一個(gè)新文件時(shí)在當(dāng)前文件中暫掛更改,那么新文件成為備用文件。這條子命令和 Ctrl-A 子命令相同。
:r File 通過(guò)在當(dāng)前行下面添加新行,將文件讀取到編輯緩沖區(qū)。如果正在從 ex 編輯器使用這條子命令,不必輸入 :(冒號(hào))。
:r !Command 通過(guò)在當(dāng)前光標(biāo)位置下面添加新行,運(yùn)行指定命令并將它的輸出放到文件中。
:ta Tag 從標(biāo)記位置開(kāi)始,編輯包含 Tag 標(biāo)記符的文件。要使用這條子命令,必須首先使用 ctags 命令創(chuàng)建一個(gè)函數(shù)名及它們位置的數(shù)據(jù)庫(kù)。如果正在從 ex 編輯器使用這條子命令,不必輸入 :(冒號(hào))。
Ctrl-A 編輯備用文件。備用文件通常使用前個(gè)當(dāng)前文件名。但是,如果當(dāng)調(diào)用一個(gè)新文件時(shí)在當(dāng)前文件中暫掛更改,那么新文件成為備用文件。這條子命令和 :e # 子命令相同。

編輯文件列表
在命令方式輸入以下命令。如果需要有關(guān) vi 子命令的信息,請(qǐng)參閱"vi 常規(guī)子命令語(yǔ)法"。

:n 編輯命令行上輸入的列表中的下一個(gè)文件。如果正從 ex編輯器使用這條子命令,則不需要 :(冒號(hào))。
:n Files 指定將要編輯的文件的新列表。如果正從 ex 編輯器使用子命令,則不需要 :(冒號(hào))。

查找文件信息
在命令方式輸入以下子命令。如果需要關(guān)于 vi 子命令格式的信息,請(qǐng)參閱"vi 常規(guī)子命令語(yǔ)法"。

Ctrl-G 顯示當(dāng)前文件名、當(dāng)前行號(hào)、文件中行數(shù)和光標(biāo)定位于文件整體的百分比。

其它操作
vi 編輯器提供以下各節(jié)描述的子命令:

調(diào)整屏幕
輸入外殼程序命令
中斷和結(jié)束 vi 編輯器
調(diào)整屏幕
在命令方式輸入以下命令。可以通過(guò)按 Esc 鍵取消不完整的子命令。如果需要關(guān)于 vi 子命令格式的信息,請(qǐng)參閱"vi 常規(guī)子命令語(yǔ)法"。

Ctrl-L 清除和重繪屏幕。
Ctrl-R 重繪屏幕和消除標(biāo)有 @ (位于符號(hào))的空行。
zNumber 使窗口長(zhǎng)度能顯示指定行數(shù)。

輸入外殼程序命令
以下子命令允許在 vi 編輯器內(nèi)運(yùn)行命令。在命令方式輸入以下命令。如果需要關(guān)于 vi 子命令格式的信息,請(qǐng)參閱"vi 常規(guī)子命令語(yǔ)法"。

:sh 進(jìn)入外殼程序以便能運(yùn)行多條命令。通過(guò)按 Ctrl-D 按鍵順序可以返回到 vi 編輯器。如果正在 ex 編輯器中使用這條子命令,則不需要 :(冒號(hào))。
:!Command 運(yùn)行指定的命令然后返回到 vi 編輯器。如果正在 ex 編輯器中使用這條子命令,則不需要 :(冒號(hào))。

注:
當(dāng)后跟 :! 子命令時(shí),#(備用文件)、%(當(dāng)前文件)和 ! (前面的命令)特殊字符都會(huì)擴(kuò)展。要避免這些字符中的任意字符被擴(kuò)展,可使用 / (反斜杠)。
:!! 重復(fù)最近一次的 :!Command 子命令。
Number!!Command 運(yùn)行指定的命令并用命令輸出替代由 Number 指定的行。如果沒(méi)有指定數(shù)目,則缺省值是 1。如果命令需要標(biāo)準(zhǔn)輸入,則指定的行用作輸入。
!Object Command 運(yùn)行指定命令,并用命令輸出替代由 Object 參數(shù)指定的對(duì)象。如果命令需要標(biāo)準(zhǔn)輸入,則指定的對(duì)象用作輸入。

中斷和結(jié)束 vi 編輯器
在命令方式輸入以下命令。如果需要有關(guān) vi 子命令的信息,請(qǐng)參閱"vi 常規(guī)子命令語(yǔ)法"。

Q 以命令方式進(jìn)入 ex 編輯器。
ZZ 退出 vi 編輯器,保存更改。
:q 退出 vi 編輯器。如果更改了編輯緩沖區(qū)的內(nèi)容,vi 編輯器顯示一條警告消息并且不退出。如果正從 ex編輯器使用這條子命令,則不需要 :(冒號(hào))。
:q! 退出 vi 編輯器,廢棄編輯緩沖區(qū)。如果正從 ex編輯器使用這條子命令,則不需要 :(冒號(hào))。
Esc 結(jié)束文本輸入或結(jié)束一條不完整的子命令。
Ctrl-? 中斷一條子命令。

出口狀態(tài)
vi 命令返回以下出口值:

0 指示成功完成。
>0 指示發(fā)生錯(cuò)誤。

輸入文件
輸入文件必須是文本文件或和文本文件相似的文件,除了長(zhǎng)度不超過(guò) LINE_MAX -1 字節(jié)并且包含非空字符的不完整的最近行。

.exrc 文件必須是由 ex 命令組成的文本文件。

缺省情況下,vi 編輯器從被編輯的文件讀取文本,而不將這些行中任意一行解釋成任何格式的 vi 編輯器命令。

vi


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 日韩在线手机看片免费看 | 日韩精品欧美一区二区三区 | 亚洲视屏在线观看 | 国产成人免费观看在线视频 | 国产96福利视频在线观看 | 狠狠色狠狠色综合婷婷tag | 在线免费一区二区 | 天天操天天干天天透 | 综合激情五月婷婷 | 久久久精品久久久久特色影视 | 欧美视频第二页 | 国产一级毛片一区二区三区 | 中文字幕最新在线 | 日韩在线第三页 | 天天天天天天操 | 亚洲日本欧美日韩高观看 | 伊人在综合 | 999这里只有精品 | 日本在线不卡免 | 在线亚洲黄色 | 久久99九九99九九99精品 | 亚洲一级生活片 | 亚洲国产日韩欧美mv | 亚洲一区二区三区91 | 日韩中文字幕在线亚洲一区 | 中文国产成人久久精品小说 | 男人爱看的网站 | 台湾成人性视频免费播放 | 伊人久久网站 | 欧美不卡在线视频 | 中日韩欧美一级毛片 | 成人国产精品一级毛片了 | 国产日韩欧美在线一区二区三区 | 亚洲精品久久久久久久福利 | 91最新视频在线观看 | 国产大片中文字幕在线观看 | 国产尤物精品视频 | 欧洲毛片真人 | 中文字幕在线免费播放 | 91精品刘玥在线播放 | 黄视频网站观看 |