vi使用手冊(zt)
進入vi的命令
vi filename :打開或新建文件,并將光標置于第一行首
vi +n filename :打開文件,并將光標置于第n行首
vi + filename :打開文件,并將光標置于最后一行首
vi +/pattern filename:打開文件,并將光標置于第一個與pattern匹配的串處
vi -r filename :在上次正用vi編輯時發(fā)生系統(tǒng)崩潰,恢復filename
vi filename....filename :打開多個文件,依次編輯
移動光標類命令
h :光標左移一個字符
l :光標右移一個字符
space:光標右移一個字符
Backspace:光標左移一個字符
k或Ctrl+p:光標上移一行
j或Ctrl+n :光標下移一行
Enter :光標下移一行
w或W :光標右移一個字至字首
b或B :光標左移一個字至字首
e或E :光標右移一個字j至字尾
) :光標移至句尾
( :光標移至句首
}:光標移至段落開頭
{:光標移至段落結(jié)尾
nG:光標移至第n行首
n+:光標下移n行
n-:光標上移n行
n$:光標移至第n行尾
H :光標移至屏幕頂行
M :光標移至屏幕中間行
L :光標移至屏幕最后行
0:(注意是數(shù)字零)光標移至當前行首
$:光標移至當前行尾
屏幕翻滾類命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:將第n行滾至屏幕頂部,不指定n時將當前行滾至屏幕頂部。
插入文本類命令
i :在光標前
I :在當前行首
a:光標后
A:在當前行尾
o:在當前行之下新開一行
O:在當前行之上新開一行
r:替換當前字符
R:替換當前字符及其后的字符,直至按ESC鍵
s:從當前光標位置處開始,以輸入的文本替代指定數(shù)目的字符
S:刪除指定數(shù)目的行,并以所輸入文本代替之
ncw或nCW:修改指定數(shù)目的字
nCC:修改指定數(shù)目的行
刪除命令
ndw或ndW:刪除光標處開始及其后的n-1個字
do:刪至行首
d$:刪至行尾
ndd:刪除當前行及其后n-1行
x或X:刪除一個字符,x刪除光標后的,而X刪除光標前的
Ctrl+u:刪除輸入方式下所輸入的文本
搜索及替換命令 :
/pattern:從光標開始處向文件尾搜索pattern
?pattern:從光標開始處向文件首搜索pattern
n:在同一方向重復上一次搜索命令
N:在反方向上重復上一次搜索命令
:s/p1/p2/g:將當前行中所有p1均用p2替代
:n1,n2s/p1/p2/g:將第n1至n2行中所有p1均用p2替代
:g/p1/s//p2/g:將文件中所有p1均用p2替換
選項設(shè)置
all:列出所有選項設(shè)置情況
term:設(shè)置終端類型
ignorance:在搜索中忽略大小寫
list:顯示制表位(Ctrl+I)和行尾標志($)
number:顯示行號
report:顯示由面向行的命令修改過的數(shù)目
terse:顯示簡短的警告信息
warn:在轉(zhuǎn)到別的文件時若沒保存當前文件則顯示NO write信息
nomagic:允許在搜索模式中,使用前面不帶"/"的特殊字符
nowrapscan:禁止vi在搜索到達文件兩端時,又從另一端開始
mesg:允許vi顯示其他用戶用write寫到自己終端上的信息
最后行方式命令
: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 :保存當前文件
:e filename:打開文件filename進行編輯
:x:保存當前文件并退出
:q:退出vi
:q!:不保存文件并退出vi
:!command:執(zhí)行shell命令command
:n1,n2 w!command:將文件中n1行至n2行的內(nèi)容作為command的輸入并執(zhí)行之,若不指
定n1,n2,則表示將整個文件內(nèi)容作為command的輸入
:r!command:將命令command的輸出結(jié)果放到當前行 。
- 作者: michaelbob 2005年03月21日, 星期一 10:05 回復(0) | 引用(0) 加入博采
VI使用手冊
VI使用手冊
a :從光標所在位置後面開始新增資料,光標後的資料隨新增資料向後移動。
A: 從光標所在列最後面的地方開始新增資料。
插入 (insert)
i: 從光標所在位置前面開始插入資料,光標後的資料隨新增資料向後移動。
I :從光標所在列的第一個非空白字元前面開始插入資料。
開始 (open)
o :在光標所在列下新增一列并進入輸入模式。
O: 在光標所在列上方新增一列并進入輸入模式。
x: 刪除光標所在字符。
dd :刪除光標所在的列。
r :修改光標所在字元,r 後接著要修正的字符。
R: 進入取替換狀態(tài),新增文字會覆蓋原先文字,直到按 [ESC] 回到指令模式下為止。
s: 刪除光標所在字元,并進入輸入模式。
S: 刪除光標所在的列,并進入輸入模式。
文件操作指令多以 : 開頭,這跟編輯指令有點區(qū)別。
:q 結(jié)束編輯(quit)
:q! 不存檔而要放棄編輯過的文件。
:w 保存文件(write)其後可加所要存檔的檔名。
:wq 即存檔後離開。
zz 功能與 :wq 相同。
vi 或 vedit 命令
用途
用全屏顯示編輯文件。
語法
{ vi | vedit } [ -l ] [ -R ] [ -tTag ] [ -v ] [ -wNumber] [ -yNumber ] [ -r [ File ] ] [{ + | -c } { Subcommand } ] [ File ... ]
描述
vi 命令基于基礎(chǔ) ex 編輯器啟動全屏編輯器。因此,ex 子命令可以在 vi 編輯器中使用。vedit 命令啟動適用于初學者的 vi 編輯器版本。在 vedit 編輯器中,報告選項設(shè)置為 1,設(shè)置了 showmode 選項和 novice 選項,使其成為一個行編輯器。
通過指定被編輯文件名,可以啟動 vi 編輯器。如果在命令行上提供多個 File 參數(shù),vi 編輯器按指定的順序編輯每一個文件。現(xiàn)有文件的 vi 編輯器在屏幕底部顯示文件名、行數(shù)和字符數(shù)。在多字節(jié)語言環(huán)境的情況下,字符數(shù)必須解釋成字節(jié)數(shù)。
由于 vi 編輯器是全屏編輯器,所以可以逐屏編輯文本。vi 編輯器在編輯緩沖區(qū)為編輯的文件制作副本,并且直到保存更改文件內(nèi)容才會更改。光標在顯示屏幕上的位置表明它在文件中的位置,并且子命令在光標位置影響該文件。
vi 編輯器的局限性
以下列表提供了 vi 編輯器的最大限度。這些計數(shù)采用單字節(jié)字符集。
每行 {LINE_MAX} 個字符
每全局命令列表 256 個字符
128 個字符在以前被插入和刪除的文本中
128 個字符在外殼程序轉(zhuǎn)義命令中
128 個字符在一個字符串值的選項中
30 個字符在一個標記名中
128 個映射宏,總共 2048 個字符
1,048,560 行,每行強制不能超過 {LINE_MAX} 個字符
宏名和宏文本被限制在 100 個字符內(nèi)。
注:
對大于 64MB 的文件運行 vi 編輯器可能會顯示以下的錯誤信息:
0602-103 file too large to place in /tmp
vi 編輯方式
vi 編輯器按以下方式操作:
命令方式 當啟動 vi 編輯器時,它處于命令方式。您可以輸入任何子命令,除了那些指定僅用于文本輸入方式的子命令。當子命令和其它方式結(jié)束時,vi 編輯器返回命令方式。按 Esc 鍵取消子命令。
文本輸入方式 按這種方式使用 vi 編輯器來添加文本。用以下任意子命令進入文本輸入方式: a 子命令、A 子命令、i 子命令、I 子命令、o子命令、O 子命令、cx 子命令(其中 x 代表子命令的范圍)、C 子命令、s 子命令、S 子命令和 R 子命令。輸入這些子命令中的一個后,即可輸入文本到編輯緩沖區(qū)中。要返回到命令方式,按 ESC 鍵以正常退出或按"中斷"(Ctrl-C 按鍵順序)以非正常方式結(jié)束。
最后行方式 帶前綴 :(冒號)、/(斜杠)、?(問號)、!(感嘆號)或 !!(兩個感嘆號)的子命令在屏幕底部的顯示行上讀取輸入。當輸入初始字符時,vi 編輯器將光標置于屏幕底部,在該處可以輸入命令中剩余的字符。按 Enter 鍵運行子命令,或按"中斷"(Ctrl-C 按鍵順序)取消它。當 使用 !! 前綴時,光標只在兩個感嘆號都輸入后才移動。當使用 : 前綴進入最后行方式時,如果在指定計數(shù)的命令之前使用以下字符,vi 編輯器賦予它們特定含義:
%
所有行,而不管光標的位置
$
最后行
.
當前行
定制 vi 編輯器
可以根據(jù)以下方式定制 vi 編輯器:
設(shè)置編輯選項
定義宏
映射鍵
設(shè)置縮寫
設(shè)置 vi 編輯器選項
以下列表描述可以使用 set 命令更改的 vi 編輯器選項。這些選項的缺省設(shè)置是 off。如果打開了這些開關(guān)選項中的一個,在選項之前輸入 no 即可重新關(guān)閉它。如果想中斷 autowrite vi 選項,則輸入 noaw,其中 no 關(guān)閉選項,aw 指定 autowrite 選項。
注:
當輸入 vi 選項時不要包含圓括號。
vi 選項(縮寫) 描述
autoindent(ai) 通過使用 shiftwidth 選項指定的制表符停止位之間的間隔,在文本輸入方式中自動縮排為前行的縮排格式。缺省是 noai。將光標退回到前面的制表符停止位,按 Ctrl-D 快捷鍵。這個選項對于全局命令不起作用。
autoprin(ap) 在任何更改編輯緩沖區(qū)的命令后面打印當前行。缺省是 ap。這個選項只應用于單行上一系列命令中的最后一個命令,并且對全局命令不起作用。
autowrite(aw) 如果編輯緩沖區(qū)自上次 write 子命令以來發(fā)生更改,則在 :n 子命令、:ta 子命令、Ctrl-A 按鍵順序和 ! 子命令之前,將編輯緩沖區(qū)自動寫入到文件。缺省是 noaw。
beautifying text(bf) 在文本輸入(除了制表符、換行符和換頁指示符)的過程中,防止用戶在編輯緩沖區(qū)中輸入控制字符。缺省是 nobf。此選項應用于命令輸入。
closepunct(cp=) 處理結(jié)束標點列表,特別當文本自動換行(wraptype 選項)時。在多字符標點前指出字數(shù)數(shù),例如 cp=3..;)} 。當自動換行時,vi 命令不分割關(guān)閉的標點。
directory(dir=) 顯示包含編輯緩沖區(qū)的目錄。缺省為 dir = /var/tmp。
edcompatible(ed) 在多重替換過程中,保留 g(全局)和 c(確認)子命令后綴,并使 r(讀取)后綴像 r 子命令一樣運作。缺省值是 noed。
exrc(exrc) 如果未設(shè)置,則在初始化過程中忽略當前目錄下任何 .exrc 文件,除非當前目錄是 HOME 環(huán)境變量指定的。缺省是 noexrc。
hardtabs(ht=) 告訴 vi 編輯器顯示屏幕上硬件制表符停止位之間的距離。(這個選項必須與基礎(chǔ)的終端或終端仿真器的制表符設(shè)置相匹配。)缺省值為 ht=8。
ignorecase(ic) 當搜索正則表達式時,忽略大寫和小寫之間的區(qū)別。缺省值是 noic。
linelimit(ll=) 設(shè)置最大行數(shù),如 -y 命令行選項。該選項只有和 .exrc 文件或 EXINIT 環(huán)境變量一起使用時有效。
lisp(lisp) 除去 ( ), { }, [ [ 和 ] ] 的特殊意義,并為 s 表達式啟用 =(格式打印)運算符,以便能夠編輯行處理(LISP)程序。缺省是 nolisp。
list(list) 顯示文本和制表符 (^I) 和行的標記端($)。缺省值是 nolist。
magic(magic) 當搜索一種模式時,將 .(句號)、[(左括號)和 *(星號)字符當成特殊字符。在關(guān)閉方式中,只有 ( )(圓括號)和 $(美元符)保持特殊意義。但是,可以通過在其它字符前面加上 / (反斜杠)來激活其它字符的特殊意義。缺省是 magic。
mesg(mesg) 如果以可視方式設(shè)置,打開終端的寫入許可權(quán)。該選項只有和 .exrc 文件或 EXINIT 環(huán)境變量一起使用時有效。缺省值是 on。
modeline(modeline) 如果在文件開始五行或最后五行找到,則運行 vi 編輯器命令行。一行 vi 編輯器命令可以位于行中的任意位置。為了便于 vi 編輯器能辨認命令行,這一行必須包含一個空格或制表符,后跟 ex: 或 vi: 字符串。命令行以第二個 :(冒號)結(jié)束。vi 編輯器嘗試將第一個和第二個冒號之間的任意數(shù)據(jù)解釋為 vi 編輯器命令。缺省為 nomodeline。
novice 指明是否處于 novice 方式。不能用 set 命令更改值。
number(nu) 顯示以行號作為前綴的行。缺省是 nonu。
optimize(opt) 加速缺少光標尋址的終端的操作。缺省為 noopt。
paragraphs(para=) 定義開始段落的 vi 宏名。缺省為 para=IPLPPPQPP/ LIpplpipnpbp。如果指定了一個段落,單字母 nroff 宏,如 .P 宏,必須以加引號字符包含空格。
partialchar(pc=) 出現(xiàn)在最后的顯示列,該列中雙寬字符不完全顯示。缺省字符為 -(減號)。
prompt 當處于命令方式時,通過打印 :(冒號)提示輸入新的編輯器命令。缺省值為 on。
readonly(ro) 設(shè)置永久的只讀方式。缺省為 noreadonly。
redraw(redraw) 在低能工作站上模仿智能工作站。缺省為 nore。
remap 允許根據(jù)其它宏來定義宏。缺省值是 on。
report(re=) 設(shè)置在消息顯示之前命令能重復的次數(shù)。對于產(chǎn)生許多消息的子命令,例如全局子命令,完成命令序列后顯示消息。缺省值為 report=5。
scroll(scr=) 設(shè)置在編輯器中上下滾動時滾動的行數(shù)。缺省值為窗口大小的 1/2,四舍五入。
sections(sect=) 定義開始段落的 vi 宏名。缺省為 sect=NHSHHH/ HUuhsh+c。如果指定段落,單字母 nroff 宏,如 .P 宏必須以加引號字符包含空格。
shell(sh=) 為 ! 子命令或 :! 子命令定義外殼程序。缺省為登錄外殼程序。
shiftwidth(sw=) 為 autoindent 選項、shift 命令(> 和 <)和文本輸入命令(Ctrl-D 和 Ctrl-T 按鍵順序)使用的軟件制表符停止位設(shè)置間距。vi 選項只影響行開始的縮排。缺省值為 sw=8。
showmatch(sm) 當如輸入 )(右圓括號)或 } (右花括號)時顯示 ((匹配的左圓括號)或 { (左花括號)。缺省為 nosm。
showmode(smd) 當 vi 編輯器處于輸入方式時顯示消息加以指明。缺省為 nosmd。
slowopen(slow) 在插入期間,延遲更新顯示屏幕。缺省值為 noslow。
tabstop(ts=) 在一個顯示的文件中設(shè)置制表符停止位之間的間距。缺省值為 ts=8。
tags(tags =) 為用 ctags 命令創(chuàng)建的函數(shù)名的數(shù)據(jù)庫文件定義搜索路徑。缺省值為 tags=tags/ /usr/lib/tags。
term(term=) 設(shè)置正在使用的工作站類型。缺省值為 term=$TERM,其中 $TERM 是 TERM 外殼程序變量的值。
terse(terse) 允許 vi 編輯器顯示消息的短格式。缺省為 noterse。
timeout(to) 為字符的進入設(shè)置兩秒的時間限制。當設(shè)置 timeout 選項時,這個限制容許作為單獨的字符輸入和處理宏中的字符。要恢復宏的使用,需要設(shè)置 notimeout 選項。缺省值為 to。
ttytype 為正在使用的終端指明 tty 類型。從 vi 編輯器不能更改這個值。
warn(warn) 在 ! 之前顯示警告消息。當在編輯緩沖區(qū)中已經(jīng)作了更改,但還沒有寫入文件時,如果是第一次發(fā)送外殼程序命令,那么子命令執(zhí)行外殼程序命令。缺省為 warn。
window(wi=) 設(shè)置顯示在一個文本窗口中的行數(shù)。缺省值取決于操作時使用的波特率:600 波特或更少, 8 行;1200 波特,16 行;更高的速率,全屏減去 1 行。
wrapmargin(wm=) 設(shè)置從一行到另一行自動換行的頁邊距。缺省值為 wm=0。0 值則關(guān)閉自動換行。
wrapscan(ws) 允許字符串搜索從編輯緩沖區(qū)結(jié)尾到開始有自動換行。缺省值為 ws。
wraptype(wt=) 指明用于在行尾回繞單詞的方法。缺省值為 general。可以指定下列四個值中的一個:
general
允許單詞中斷處(如兩個字符之間的空白)自動換行。此設(shè)置為缺省值。
word
允許在單詞上自動換行。
rigid
允許在列上和關(guān)閉的標點之前自動換行。
flexible
允許在列上自動換行,但是一個標點符號可以擴展到頁邊距外后。
writeany(wa) 關(guān)閉通常在write 子命令之前進行的檢查。缺省值為 nowa。
要查看對缺省設(shè)置進行更改的 vi 編輯器設(shè)置列表,請輸入 set 并按空格鍵。按 Enter 鍵返回到命令方式。
要查看 vi 編輯器設(shè)置的完全列表,請輸入 set all。按 Enter 鍵返回到命令方式。
要打開一個 vi 編輯器選項, 輸入 set Option。這個命令自動返回到命令方式。
要打開多個 vi 編輯器選項,輸入 set Option Option Option。這命令打開三個指定的 vi 編輯器選項并返回到命令方式。
要關(guān)閉一個 vi 選項,輸入 set noOption。這個命令自動返回到命令方式。
要更改一個 vi 編輯器的值,請輸入 set Option=Value。這個命令自動返回到命令方式。
可以僅為這個編輯會話使用 :set vi 編輯器子命令來設(shè)置選項,或為這個編輯會話和所有將來的編輯會話設(shè)置選項。
要只為這個編輯會話設(shè)置或更改 vi 編輯器選項,從命令行輸入 :set 子命令。
要為所有編輯會話設(shè)置 vi 選項,將 :set 子命令置于 .profile 文件的 EXINIT 環(huán)境變量中(該文件由登錄的外殼程序讀取)或?qū)?set 子命令置于 .exrc 文件中。vi 編輯器首先查找 EXINIT 環(huán)境變量并運行它的命令。如果 EXINIT 環(huán)境變量不存在,則 vi 編輯器查找 $HOME/.exrc 文件并運行它的命令。最后,不管以前的任何結(jié)果,vi 編輯器查找本地的 .exrc 文件并運行它的命令。
注:
這個過程一直成立,除了 tvi 命令(可信的 vi)。在這種情況下,vi 編輯器查找并只運行 /etc/.exrc 文件。
要獲取通過設(shè)置 EXINIT 環(huán)境變量來更改選項的信息,請參閱 environment 文件中關(guān)于環(huán)境變量的描述。
.exrc 文件可以包含 set Option=Value; 格式的子命令,例如:
set cp=3 . . ;
要在 .exrc 文件中包含注釋,將 "(雙引號)作為該行中的第一個字符。
定義宏
如果經(jīng)常使用一條子命令或一系列子命令,可以使用 vi 編輯器來定義發(fā)出子命令或子命令順序的宏。
要定義一個宏,輸入一系列以字母表中一個字母命名的緩沖區(qū)。小寫字母 a 到 z 覆蓋緩沖區(qū)的內(nèi)容,大寫字母 A 到 Z 將文本附加到緩沖區(qū)先前的內(nèi)容,這樣可以逐塊構(gòu)建宏。
例如,要定義命名為 c 的宏,該宏搜索單詞 corner 并使單詞 corner 后的第三行成為當前行,輸入以下命令:
o /corner/+3
然后按 ESC 鍵并輸入以下命令:
"c
其中 c 是緩沖區(qū)宏的名稱。
要添加文本到已定義的緩沖區(qū)中以前的內(nèi)容,輸入 o viSubcommand,按 ESC 鍵,并輸入 "CapitalLetter,其中 CapitalLetter 變量指定一個從 A 到 Z 的大寫字母。例如,要構(gòu)建名為 T 的緩沖區(qū)宏,該宏搜索單詞 corner 并允許添加更多命令,輸入以下命令:
o corner
然后按 ESC 鍵并輸入以下命令:
"T
其中 T 是緩沖區(qū)宏的名稱。任何時候都可以重復本過程將更多的 vi 子命令添加到相同的緩沖區(qū)。
例如,要添加移動光標到前面行和刪除該行的命令,輸入以下命令:
o -dd
這里 -(負號)意為將光標上移一行,而 dd 表示刪除當前行。按 ESC 鍵并輸入以下命令:
"Tdd
要啟動宏,輸入 @Letter,其中 Letter 變量指定想要使用的緩沖區(qū)宏的字母名。要再使用相同的宏,輸入 @@ (兩個位于符號)。例如,輸入 @T 啟動 T 緩沖區(qū)宏并運行搜索、移動光標和刪除行命令。輸入 @@T 以再一次啟動 T 緩沖區(qū)宏。
系統(tǒng)使用的字符集通過對照表定義。該表影響 vi 宏的性能。
映射鍵
可以使用 :map、:map! 和 :ab 子命令將擊鍵操作映射到命令或命令序列。:map 子命令在命令方式中使用。:map! 和 :ab 子命令在文本輸入方式中使用。可以為這個編輯會話和所有以后的編輯會話映射鍵,或者僅為當前編輯會話(以兩鐘方式中的一種)映射鍵。
要為所有以后的編輯會話映射鍵,將子命令置于 $HOME/.exrc 文件中。vi 編輯器每次啟動,會讀取這個文件。映射保持對每一次編輯會話有效。
要僅從命令方式為當前的編輯會話映射鍵,在 vi 編輯器會話期間啟動子命令。要只通過文本輸入方式為當前編輯會話映射鍵,在 vi 編輯器會話期間在命令行上輸入子命令。映射保持對當前編輯會話有效。
注意: 如果使用的是 IBM 3161 ASCII 顯示站、IBM 3163 ASCII 顯示站或 IBM 3101 ASCII 顯示站,vi 編輯器的缺省鍵映射會導致數(shù)據(jù)丟失。要查看缺省映射,請發(fā)出 :map 子命令。ESC-J 或 Shift-J 按鍵順序產(chǎn)生特殊的問題。這些按鍵順序從光標的當前位置到文件尾刪除所有的信息。為了避免問題出現(xiàn),使用 .exrc 文件來更改這個按鍵順序。
:map、:map! 和 :ab 子命令按以下定義:
:map 按命令方式定義宏。在 vi 編輯器中,:map 子命令允許通過按單一鍵來運行指定的命令或命令序列。
要按命令方式映射鍵,用空的編輯緩沖區(qū)啟動 vi 編輯器而不用 vi 命令給 vi 文件命名或在 vi 編輯器啟動后輸入任何東西到緩沖區(qū)。可以使用 :map 子命令完成以下任務:
要將字符映射到編輯命令序列,輸入:
:map Letter viSubcommand
要按命令方式取消先前映射的字符,輸入:
:unmap Letter
要為命令方式顯示當前映射列表,輸入:
:map
vi 編輯器不使用以下鍵,但是可以在命令方式中和 :map 子命令一起使用。
字母 s、g、K、q、V 和 v
控制鍵序列 Ctrl-A、Ctrl-K、Ctrl-O、Ctrl-T、Ctrl-W 和 Ctrl-X
符號 _(下劃線)、*(星號)、 / (反斜杠) 和 =(等號)
盡管可以映射已被 vi 編輯使用的鍵,但只要映射有效,就無法使用鍵的常用功能。有些終端允許將命令序列映射到功能鍵。如果處于 LISP 方式,=(等號)不能使用,因為它已由 vi 編輯器使用。
要映射字母 v 到命令序列,該命令序列定位的下一個出現(xiàn)的 map 單詞并將它改成單詞 MAP,請輸入以下命令:
:map v /map<Ctrl-V><Enter>cwMAP<Ctrl-V><Esc><Ctrl-V><Enter>
前面的示例指導 vi 編輯器定位下一個 map 的出現(xiàn)(/map<Ctrl-V><Enter>),將 map 更改為 MAP(cwMAP),結(jié)束 change-word 子命令(<Ctrl-V><Esc>),輸入命令(<Ctrl-V><Enter>)。
注:
為了防止 vi 編輯器解釋 Enter 鍵,當被映射時,必須在前面輸入 Ctrl-V 按鍵順序。此情況對 Esc、Backspace 和 Delete 鍵也成立。
要映射控制字符 Ctrl-A、Ctrl-K 和 Ctrl-O,同時按 Ctrl 鍵和相應的字母。例如,要將 Ctrl-A 按鍵順序映射到保存文件和編輯系列中下一個文件命令序列,輸入以下命令:
:map <Ctrl-A> :w<Ctrl-V><Enter>:n<Ctrl-V><Enter>
要將映射控制字符 Ctrl-T、Ctrl-W 和 Ctrl-X,必須首先用 Ctrl-V按鍵順序序為它們轉(zhuǎn)義。
要映射 |(管道符),首先必須用兩個 Ctrl-V 按鍵順序為它轉(zhuǎn)義,這通過以下示例說明:將字符 g 映射到命令序列,該命令序列轉(zhuǎn)義到外殼程序,連接文件 /etc/motd 并輸出到 wc 命令:
:map g :!cat /etc/motd <Ctrl-V><Ctrl-V>| wc<Ctrl-V><Enter>
如果終端允許映射功能鍵,必須用 #number 按鍵順序引用它們,以指定想映射的功能鍵的號碼。在以下示例中,F(xiàn)1 功能鍵映射到刪除單詞和將光標下移三個單詞的命令序列:
:map #1 dwwww
為了使功能鍵映射起作用,功能鍵給終端類型的輸出必須和 terminfo 文件中定義的輸出相匹配。這些定義由 kfnumber 條目標志,其中,kf1 代表 F1 功能鍵,kf2 代表 F2 功能鍵,等等。如果當按功能鍵時所獲取的輸出與這個條目不匹配,在任何映射可以發(fā)生之前,必須使用終端的設(shè)置方式去糾正設(shè)置以便和這些終端數(shù)據(jù)庫條目相匹配。
也可以映射某個鍵盤特殊鍵,如 Home、End、Page Up 和 Page Down 鍵。對于大多數(shù)的終端,這些鍵已經(jīng)在 vi 編輯器中映射。可以通過使用 :map 子命令驗證這個映射。如果這些鍵還沒有映射,可以如下使用 :map 子命令:
:map <Ctrl-V><End> G
:map <Ctrl-V><Home> 1G
:map <Ctrl-V><PageUp> <Ctrl-F>
:map <Ctrl-V><PageDown> <Ctrl-B>
要在命令方式中獲取所有當前映射,請輸入 :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! 當處于文本輸入方式時,將字符串映射到單個鍵。要按文本輸入方式映射鍵,用空的編輯緩沖區(qū)啟動 vi 編輯器而不用 vi 命令給 vi 文件命名或在 vi 編輯器啟動后輸入任何東西到緩沖區(qū)。可以使用 :map! 子命令完成以下任務:
要按文本輸入方式映射一個字母到一個或多個 vi 字符串,輸入:
:map! Letter String
要在文本輸入方式中取消先前映射的字母,請輸入:
:unmap! Letter
要顯示在文本輸入方式已映射到特殊鍵的現(xiàn)有字符串,請輸入:
:map!
當處于文本輸入方式時,輸入映射鍵處理指定的字符串。Ctrl-V 和 Esc 按鍵順序進入命令方式 ,回到當前單詞的開始(bbw),并啟動 cw(change-word)子命令。例如:
:map! % <Ctrl-V><Esc>bbwcw
當輸入文本時,如果意識到已經(jīng)輸錯了一個單詞,可以通過按 %(百分號)鍵并重新輸入這個單詞。編輯器自動返回到插入方式。
注:
當選擇將用于 :map! 子命令的鍵時要特別當心。一旦鍵已映射,除非先發(fā)出 :unmap! 子命令,它們就不能再按文本輸入。
:ab 將鍵或按鍵順序映射到字符串以用于文本輸入方式。當輸入具有幾個重復的短句、名稱或標題時,:ab 子命令十分有用。
以下示例將 city 替換為短句 Austin, Texas 78759,只要它是用文本輸入方式輸入并緊跟一個空格、句號或冒號:
:ab city Austin, Texas 78759
例如,如果在輸入文本時,輸入以下內(nèi)容:
My current residence is city.
按 Tab 鍵擴展單詞 city 用于閱讀:
My current residence is Austin, Texas 78759.
縮寫在單詞中不擴展。例如,如果輸入 My current residence iscity,單詞 iscity 不擴展。
如果 :map! 子命令用于映射縮寫用于插入方式,則出現(xiàn)的所有縮寫都被擴展,而不管它出現(xiàn)在什么位置。如果在前面的示例中使用 :map! 子命令(:map! city Austin, Texas 78759),那么無論什么時候輸入單詞 city,無論前面和后面是什么,這個單詞將擴展為 Austin, Texas 78759。因此,單詞 iscity 成為 isAustin, Texas 78759。
注:
當選擇用于 :ab 子命令的鍵時,需要小心。一旦鍵已定義,除非先發(fā)出 :unab 子命令,它們就不能再按文本輸入。
設(shè)置縮寫
set 命令具有與 map! 命令類似的行為,除了 set 命令僅當縮寫是單個單詞時以縮寫形式代替字符串。可以使用 vi 編輯器的 set 命令完成以下任務:
列出現(xiàn)有的縮寫
除去縮寫
設(shè)置(定義)縮寫
注:
用空編輯緩沖區(qū)啟動 vi 編輯器。不要用 vi 命令給 vi 文件命名或在 vi 編輯器啟動后輸入任何東西到緩沖區(qū)。按 Esc 鍵以確保處于命令方式。
要列出縮寫 輸入 :ab 命令來列出現(xiàn)有的縮寫。按 Enter 鍵返回到命令方式。
要除去縮寫 輸入 :anab Abbreviation 命令以除去縮寫,其中 Abbreviation 變量指定不再想縮寫的字符串。
要設(shè)置(定義)縮寫 輸入 :ab Abbreviation String 命令來設(shè)置縮寫,其中 Abbreviation 變量指定定義為縮寫的字符串,而 String 變量指定被縮寫的字符串。 只有當縮寫是單獨的單詞時,縮寫可以替代字符串。
例如, 如果輸入 :ab kn upper 命令,然后當處于文本輸入方式時輸入 acknowledge,因為單詞 acknowledge 中的 kn 字符串不是單獨的單詞,所以不啟動 set 命令 :ab abbreviation string 命令。
然而,如果輸入 :ab kn upper命令,然后當處于文本輸入方式時,輸入 make the kn line all kncase,結(jié)果是 make the upper line all uppercase。
標志
-cSubcommand 在開始查看 vi 之前,執(zhí)行 ex 編輯器子命令。光標移到被最近執(zhí)行的命令影響的行。當輸入一個空操作數(shù)時,如 -c' ',vi 編輯器將光標置于文件的第一行。-c 標志不能與 + 標志兼容。不要同時指定這兩個標志。
-l 用 LISP 方式進入 vi 編輯器。在這種方式中,vi 編輯器適當?shù)貫?LISP 代碼創(chuàng)建縮排,(, ), {, }, [[ 和 ]] 子命令被修改以便正確地為 LISP 進行操作。
-r[File] 在 vi 編輯器或系統(tǒng)故障之后恢復文件。如果不指定 File 變量, vi 編輯器顯示所有保存過的文件列表。
-R 設(shè)置只讀選項以保護文件使其不被覆蓋。
-tTag 編輯包含 Tag 變量的文件并將 vi 編輯器定位于它的定義。要使用該標志,必須首先使用 ctags 命令創(chuàng)建一個函數(shù)名及它們位置的數(shù)據(jù)庫。
-v 用詳細方式進入 vi 編輯器。
-wNumber 將缺省窗口大小設(shè)置為 Number 變量指定的值。當在低速線路上使用 vi 編輯器時,這個標志十分有用。
-yNumber 用任何大于 1024 的值覆蓋 1,048,560 的最大行設(shè)置。由于 vi 編輯器為緩沖區(qū)控制使用額外的行,請求的行數(shù)應該是需要的兩倍。
+[Subcommand] 在開始編輯之前,執(zhí)行 ex 編輯器子命令。如果沒有指定 Subcommand 變量,光標將置于文件的首行。這個 + 標志與 -c 標志不兼容。不要同時指定這兩個標志。
vi 常規(guī)子命令語法
使用以下常規(guī)語法來輸入子命令:
[Named_Buffer] [Operator] [Number] Object
注:
方括號標識任選項。
[Named_Buffer] 指定臨時文本存儲區(qū)域。
[Operator] 指定子命令或操作;指導 vi 編輯器。
[Number] 將操作范圍或行地址指定為一個整數(shù)。
Object 指定操作對象,如文本對象(字符、單詞、句子、段落、節(jié)、字符串)或文本位置(一行、在當前行中的位置、屏幕位置)。
在子命令之前計數(shù)
可以在許多子命令前放一個數(shù)字。vi 編輯器以下面方式中的一種解釋這個數(shù)字:
轉(zhuǎn)至由 Number 參數(shù)指定的行:
5G
10Z
轉(zhuǎn)至由 Number 參數(shù)指定的列。
25|
上下滾動由 Number 參數(shù)指定的行數(shù):
10Ctrl-U
10Ctrl-D
vi 編輯器子命令
使用子命令執(zhí)行以下種類的操作:
移動光標
編輯文本
控制文件
其它操作
移動光標
按以下方式使用子命令在文件內(nèi)移動光標:
在行內(nèi)移動
按字符位置在行內(nèi)移動
移到單詞
按行位置移動
移到句、段落或節(jié)
通過重繪屏幕移動
翻頁和滾動
搜索模式
在文件中標記特殊位置并返回
在行內(nèi)移動
在命令方式輸入以下命令。可以通過按 Esc 鍵取消不完整的命令。如果需要關(guān)于 vi 子命令格式的信息,請參閱"vi 常規(guī)子命令語法"。
左箭頭或 h 或 Ctrl-H 將光標向左移動一個字符。
下箭頭或 j 或 Ctrl-J 或 Ctrl-N 將光標向下移動一行(它保持在同一列)。
上箭頭或 k 或 Ctrl-P 將光標向上移動一行(它保持在同一列)。
右箭頭或 l 將光標向右移動一個字符。
按字符位置在行中移動
在命令方式輸入以下命令。可以通過按 Esc 鍵取消不完整的命令。如果需要關(guān)于 vi 子命令格式的信息,請參閱"vi 常規(guī)子命令語法"。
^ 將光標移到第一個非空字符。
0 將光標移到行的開始。
$ 將光移到行尾。
fx 將光標移到下一個 x 字符。
Fx 將光標移到最后一個 x 字符。
tx 將光標移到下一個 x 字符的前一列。
Tx 將光標移到下一個 x字符的后一列。
; 重復最近的 f、F、t 或 T 子命令。
, 以反方向重復最近的 f、F、t 或 T 子命令。
Number| 將光標移到指定列。
移到單詞
在命令方式輸入以下命令。如果需要關(guān)于 vi 子命令格式的信息,請參閱"vi 常規(guī)子命令語法"。
w 將光標移到下一個小字。
b 將光標移到前一個小字。
e 將光標移到小字的倒數(shù)第二個字母。
W 將光標移到下一個大字。
B 將光標移到前一個大字。
E 將光標移到大字的倒數(shù)第二個字母。
按行位置移動
在命令方式輸入以下命令。如果需要有關(guān) vi 子命令的信息,請參閱"vi 常規(guī)子命令語法"。
H 將光標移到屏幕的頂行。
L 將光標移到屏幕的最后一行。
M 將光標移到屏幕的中間行。
+ 將光標移到它的第一個非空字符的下一行。
- 將光標移到它的第一個非空字符的前一行。
Enter 將光標移到它的第一個非空字符的下一行。
移到句、段落或節(jié)
在命令方式輸入以下命令。可以通過按 Esc 鍵取消不完整的子命令。如果需要關(guān)于 vi 子命令格式的信息,請參閱"vi 常規(guī)子命令語法"。
( 將光標置于前一句的開始,或前一個 s-表達式(如果處于 LISP 方式)。
) 將光標置于下一句的開始,或下一個 s-表達式(如果處于 LISP 方式)。
{ 將光標置于前一個段落的開始,或下一個列表(如果處于 LISP 方式)。
} 將光標置于下一個段落的開始,如果處于 C 方式,則置于下一節(jié),或者如果處于 LISP 方式則置于下一列表。
]] 將光標置于下一節(jié),或者函數(shù)(如果處于 LISP 方式)。
[[ 將光標置于前一節(jié),或者函數(shù)(如果處于 LISP 方式)。
通過重繪屏幕移動
在命令方式輸入以下命令。可以通過按 Esc 鍵取消不完整的子命令。如果需要關(guān)于 vi 子命令格式的信息,請參閱"vi 常規(guī)子命令語法"。
z 用當前行重繪屏幕頂部。
z- 用當前行重繪屏幕底部。
z. 用當前行重繪屏幕中間。
/Pattern/z- 用包含由 Pattern 參數(shù)指定的字符串的行重繪屏幕底部。
翻頁和滾動
在命令方式輸入以下命令。可以通過按 Esc 鍵取消不完整的子命令。如果需要關(guān)于 vi 子命令格式的信息,請參閱"vi 常規(guī)子命令語法"。
Ctrl-U 向上滾動 1/2 屏幕。
Ctrl-D 向下滾動 1/2 屏幕。
Ctrl-F 向前滾動一個屏幕。
Ctrl-B 向后滾動一個屏幕。
Ctrl-E 將窗口向下滾動一行。
Ctrl-Y 將窗口向上滾動一行。
z+ 向上翻頁
z^ 向下翻頁
搜索模式
在命令方式輸入以下命令。可以通過按 Esc 鍵取消不完整的子命令。如果需要關(guān)于 vi 子命令格式的信息,請參閱"vi 常規(guī)子命令語法"。
[Number]G 將光標置于由 Number 參數(shù)指定的行號,或者最后一行(如果沒有指定 Number 參數(shù))。
/Pattern 將光標置于包含由 Pattern 參數(shù)指定的字符串的下一行。
?Pattern 將光標置于包含由 Pattern 參數(shù)指定的字符串的上一行。
n 在同一方向重復上次對 Pattern 參數(shù)指定的文本的搜索。
N 在相反方向重復上次對 Pattern 參數(shù)指定的文本的搜索。
/Pattern/+Number 將光標置于在與 Pattern 參數(shù)指定字符串相匹配的行的后面指定的行數(shù)。
?Pattern?-Number 將光標置于在與 Pattern 參數(shù)指定字符串相匹配的行的前面指定的行數(shù)。
% 查找與當前光標位置的括號或大括號相匹配的括號或大括號。
編輯文本
用于編輯的子命令使您能執(zhí)行以下任務:
在文件中標記具體位置并返回
添加文本到文件
當處于輸入方式時更改文本
從命令方式更改文本
復制和移動文本
恢復和重復更改
在文件中標記具體位置并返回
在命令方式輸入以下命令。可以通過按 Esc 鍵取消不完整的子命令。如果需要關(guān)于 vi 子命令格式的信息,請參閱"vi 常規(guī)子命令語法"。
" 將光標移到當前行的前一位置。
" 將光標移到包含當前行前一位置的行的開始。
mx 用 x 參數(shù)指定的字母標記當前位置。
`x 將光標移到由 x 參數(shù)指定的標記。
'x 將光標移到包含由 x 參數(shù)指定的標記的行的開始。
添加文本到文件(文本輸入方式)
在命令方式輸入以下命令,將 vi 編輯器更改為文本輸入方式。如果需要有關(guān) vi 子命令的信息,請參閱"vi 常規(guī)子命令語法"。
aText
在光標后面插入由 Text 參數(shù)指定的文本。按 Esc 鍵結(jié)束文本輸入方式。
AText
添加由 Text 參數(shù)指定的文本到行尾。按 Esc 鍵結(jié)束文本輸入方式。
iText
在光標前面插入由 Text 參數(shù)指定的文本。按 Esc 鍵結(jié)束文本輸入方式。
IText
在行中的第一個非空字符前插入由 Text 參數(shù)指定的文本。按 Esc 鍵結(jié)束文本輸入方式。
o
在當前行的下面添加一個空行。按 Esc 鍵結(jié)束文本輸入方式。
O
在當前行的上面添加一個空行。按 Esc 鍵結(jié)束文本輸入方式。
當處于輸入方式時更改文本
僅當處于文本輸入方式時使用以下子命令。這些命令在命令方式中有不同的意思。如果需要關(guān)于 vi 子命令格式的信息,請參閱"vi 常規(guī)子命令語法"。
Ctrl-D
回退到前一個自動縮排停止位。
^ Ctrl-D 只結(jié)束該行的自動縮排。
0Ctrl-D 將光標退回到左頁邊。
Esc 結(jié)束插入并返回到命令狀態(tài)。
Ctrl-H 擦除上個字符。
Ctrl-Q 如果 xon 禁用則輸入任意字符。
Ctrl-V 輸入任意字符
Ctrl-W 擦除上個的小字。
/ 引用擦除并殺死字符。
Ctrl-? 中斷和結(jié)束插入或 Ctrl-D 按鍵順序。
從命令方式更改文本
在命令方式使用以下命令。可以通過按 Esc 鍵取消不完整的子命令。如果需要關(guān)于 vi 子命令格式的信息,請參閱"vi 常規(guī)子命令語法"。
C
更改行的剩余部分(同 c$ 一樣)。
cc
更改一行
cw 更改一個單詞
cwText 將字更改為 Text 參數(shù)指定的文本。
D 刪除行的剩余部分(同 d$ 一樣)。
dd 刪除一行。
dw 刪除一個單詞。
J 連接行。
rx 用 x 指定的字符替換當前字符。
RText
用 Text 參數(shù)指定的文本覆蓋字符。
s
替代字符(同 cl 一樣)。
S
替代行(同 cc 一樣)。
u 撤銷上次更改。
x 刪除光標位置的字符。
X 刪除光標前的一個字符(同 dh 一樣)。
<< 將一行向左移位。
<L 將所有的行從光標位置向左移到屏幕末尾。
>> 將一行向右移位。
>L 將所有的行從光標位置向右移到屏幕末尾。
~ 將光標位置的字母更改為相反的大小寫格式。
! 縮排 LISP。
復制和移動文本
在命令方式使用以下命令。可以通過按 Esc 鍵取消不完整的子命令。如果需要關(guān)于 vi 子命令格式的信息,請參閱"vi 常規(guī)子命令語法"。
p 在光標之后將撤銷緩沖區(qū)中的文本還原。
P 在光標之前將緩沖區(qū)中的文本還原。
"xp 將 x 緩沖區(qū)中的文本還原
"xd 將文本刪除到 x 緩沖區(qū)。
y 將跟隨的對象(例如 word 為w)放到撤銷緩沖區(qū)。
"xy 將跟隨的對象放到 x 緩沖區(qū),其中 x 為任意字母。
Y 將行放到撤銷緩沖區(qū)。
恢復和重復更改
在命令方式使用以下命令。可以通過按 Esc 鍵取消不完整的子命令。如果需要關(guān)于 vi 子命令格式的信息,請參閱"vi 常規(guī)子命令語法"。
u 撤銷最后一次更改。
注:
撤銷后,光標移到更新過的當前行的第一個非空字符。
U 如果最后一次更改以來光標還沒有離開行,則恢復當前行。
. 重復上次更改或增加 "np 命令。
注:
這條子命令將重復最后一次的更改,包括一條撤銷命令。因此,一次撤銷后,重復一次撤銷而不是最后一次更改。
這條子命令不是為和宏一起使用設(shè)計的。輸入 @@ (兩個位于字符)以重復宏。
"n p 檢索完整行和行塊的倒數(shù)第 n 次刪除。
操作文件
用于操作文件的子命令允許執(zhí)行在以下各節(jié)中概述的任務:
將更改保存至文件
編輯另一文件
編輯一系列文件
查找文件信息
將更改保存至文件
在命令方式使用以下命令。如果需要有關(guān) vi 子命令的信息,請參閱"vi 常規(guī)子命令語法"。
:w 將編輯緩沖區(qū)內(nèi)容寫到原始文件中。如果正在 ex 編輯器中使用這條子命令,不必輸入 :(冒號)。
:w File 將編輯緩沖區(qū)內(nèi)容寫入由 File 參數(shù)指定的文件中。如果正在 ex 編輯器中使用這條子命令,不必輸入 :(冒號)。
:w! File 用緩沖區(qū)內(nèi)容覆蓋由 File 參數(shù)指定的文件。如果正在 ex 編輯器中使用這條子命令,不必輸入 :(冒號)。
編輯另一文件
在命令方式輸入以下命令。如果需要有關(guān) vi 子命令的信息,請參閱"vi 常規(guī)子命令語法"。
:e File 編輯指定文件。如果正在從 ex 編輯器使用這條子命令,不必輸入 :(冒號)。
:e! 重新編輯當前文件并廢棄所有更改。
:e + File 從最后開始編輯指定文件。
:e + Number File 從指定行號開始編輯指定文件。
:e # 編輯備用文件。在用 :e 命令訪問另一個文件之前,備用文件通常是以前的文件名。但是,如果當調(diào)用一個新文件時在當前文件中暫掛更改,那么新文件成為備用文件。這條子命令和 Ctrl-A 子命令相同。
:r File 通過在當前行下面添加新行,將文件讀取到編輯緩沖區(qū)。如果正在從 ex 編輯器使用這條子命令,不必輸入 :(冒號)。
:r !Command 通過在當前光標位置下面添加新行,運行指定命令并將它的輸出放到文件中。
:ta Tag 從標記位置開始,編輯包含 Tag 標記符的文件。要使用這條子命令,必須首先使用 ctags 命令創(chuàng)建一個函數(shù)名及它們位置的數(shù)據(jù)庫。如果正在從 ex 編輯器使用這條子命令,不必輸入 :(冒號)。
Ctrl-A 編輯備用文件。備用文件通常使用前個當前文件名。但是,如果當調(diào)用一個新文件時在當前文件中暫掛更改,那么新文件成為備用文件。這條子命令和 :e # 子命令相同。
編輯文件列表
在命令方式輸入以下命令。如果需要有關(guān) vi 子命令的信息,請參閱"vi 常規(guī)子命令語法"。
:n 編輯命令行上輸入的列表中的下一個文件。如果正從 ex編輯器使用這條子命令,則不需要 :(冒號)。
:n Files 指定將要編輯的文件的新列表。如果正從 ex 編輯器使用子命令,則不需要 :(冒號)。
查找文件信息
在命令方式輸入以下子命令。如果需要關(guān)于 vi 子命令格式的信息,請參閱"vi 常規(guī)子命令語法"。
Ctrl-G 顯示當前文件名、當前行號、文件中行數(shù)和光標定位于文件整體的百分比。
其它操作
vi 編輯器提供以下各節(jié)描述的子命令:
調(diào)整屏幕
輸入外殼程序命令
中斷和結(jié)束 vi 編輯器
調(diào)整屏幕
在命令方式輸入以下命令。可以通過按 Esc 鍵取消不完整的子命令。如果需要關(guān)于 vi 子命令格式的信息,請參閱"vi 常規(guī)子命令語法"。
Ctrl-L 清除和重繪屏幕。
Ctrl-R 重繪屏幕和消除標有 @ (位于符號)的空行。
zNumber 使窗口長度能顯示指定行數(shù)。
輸入外殼程序命令
以下子命令允許在 vi 編輯器內(nèi)運行命令。在命令方式輸入以下命令。如果需要關(guān)于 vi 子命令格式的信息,請參閱"vi 常規(guī)子命令語法"。
:sh 進入外殼程序以便能運行多條命令。通過按 Ctrl-D 按鍵順序可以返回到 vi 編輯器。如果正在 ex 編輯器中使用這條子命令,則不需要 :(冒號)。
:!Command 運行指定的命令然后返回到 vi 編輯器。如果正在 ex 編輯器中使用這條子命令,則不需要 :(冒號)。
注:
當后跟 :! 子命令時,#(備用文件)、%(當前文件)和 ! (前面的命令)特殊字符都會擴展。要避免這些字符中的任意字符被擴展,可使用 / (反斜杠)。
:!! 重復最近一次的 :!Command 子命令。
Number!!Command 運行指定的命令并用命令輸出替代由 Number 指定的行。如果沒有指定數(shù)目,則缺省值是 1。如果命令需要標準輸入,則指定的行用作輸入。
!Object Command 運行指定命令,并用命令輸出替代由 Object 參數(shù)指定的對象。如果命令需要標準輸入,則指定的對象用作輸入。
中斷和結(jié)束 vi 編輯器
在命令方式輸入以下命令。如果需要有關(guān) vi 子命令的信息,請參閱"vi 常規(guī)子命令語法"。
Q 以命令方式進入 ex 編輯器。
ZZ 退出 vi 編輯器,保存更改。
:q 退出 vi 編輯器。如果更改了編輯緩沖區(qū)的內(nèi)容,vi 編輯器顯示一條警告消息并且不退出。如果正從 ex編輯器使用這條子命令,則不需要 :(冒號)。
:q! 退出 vi 編輯器,廢棄編輯緩沖區(qū)。如果正從 ex編輯器使用這條子命令,則不需要 :(冒號)。
Esc 結(jié)束文本輸入或結(jié)束一條不完整的子命令。
Ctrl-? 中斷一條子命令。
出口狀態(tài)
vi 命令返回以下出口值:
0 指示成功完成。
>0 指示發(fā)生錯誤。
輸入文件
輸入文件必須是文本文件或和文本文件相似的文件,除了長度不超過 LINE_MAX -1 字節(jié)并且包含非空字符的不完整的最近行。
.exrc 文件必須是由 ex 命令組成的文本文件。
缺省情況下,vi 編輯器從被編輯的文件讀取文本,而不將這些行中任意一行解釋成任何格式的 vi 編輯器命令。
更多文章、技術(shù)交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
