VI編輯器的用法

CSDN - 文檔中心 - 其他     閱讀:2648   評論: 0    參與評論
   
標題      VI使用手冊     選擇自 NETOCOOL 的 Blog
關鍵字      VI使用手冊
出處     

    a :從光標所在位置後面開始新增資料,光標後的資料隨新增資料向後移動。

A: 從光標所在列最後面的地方開始新增資料。

插入 (insert)

i: 從光標所在位置前面開始插入資料,光標後的資料隨新增資料向後移動。

I :從光標所在列的第一個非空白字元前面開始插入資料。

開始 (open)

o :在光標所在列下新增一列並進入輸入模式。

O: 在光標所在列上方新增一列並進入輸入模式。


x: 刪除光標所在字符。

dd :刪除光標所在的列。

r :修改光標所在字元,r 後接著要修正的字符。

R: 進入取替換狀態,新增文字會覆蓋原先文字,直到按 [ESC] 回到指令模式下爲止。

s: 刪除光標所在字元,並進入輸入模式。

S: 刪除光標所在的列,並進入輸入模式。

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




vi 或 vedit 命令

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

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

描述
vi 命令基於基礎 ex 編輯器啓動全屏編輯器。因此,ex 子命令可以在 vi 編輯器中使用。vedit 命令啓動適用於初學者的 vi 編輯器版本。在 vedit 編輯器中,報告選項設置爲 1,設置了 showmode 選項和 novice 選項,使其成爲一個行編輯器。

通過指定被編輯文件名,可以啓動 vi 編輯器。如果在命令行上提供多個 File 參數,vi 編輯器按指定的順序編輯每一個文件。現有文件的 vi 編輯器在屏幕底部顯示文件名、行數和字符數。在多字節語言環境的情況下,字符數必須解釋成字節數。

由於 vi 編輯器是全屏編輯器,所以可以逐屏編輯文本。vi 編輯器在編輯緩衝區爲編輯的文件製作副本,並且直到保存更改文件內容纔會更改。光標在顯示屏幕上的位置表明它在文件中的位置,並且子命令在光標位置影響該文件。

vi 編輯器的侷限性
以下列表提供了 vi 編輯器的最大限度。這些計數採用單字節字符集。

每行 {LINE_MAX} 個字符
每全局命令列表 256 個字符
128 個字符在以前被插入和刪除的文本中
128 個字符在外殼程序轉義命令中
128 個字符在一個字符串值的選項中
30 個字符在一個標記名中
128 個映射宏,總共 2048 個字符
1,048,560 行,每行強制不能超過 {LINE_MAX} 個字符
宏名和宏文本被限制在 100 個字符內。
注:
對大於 64MB 的文件運行 vi 編輯器可能會顯示以下的錯誤信息:
0602-103 file too large to place in /tmp
vi 編輯方式
vi 編輯器按以下方式操作:

命令方式 當啓動 vi 編輯器時,它處於命令方式。您可以輸入任何子命令,除了那些指定僅用於文本輸入方式的子命令。當子命令和其它方式結束時,vi 編輯器返回命令方式。按 Esc 鍵取消子命令。
文本輸入方式 按這種方式使用 vi 編輯器來添加文本。用以下任意子命令進入文本輸入方式: a 子命令、A 子命令、i 子命令、I 子命令、o子命令、O 子命令、cx 子命令(其中 x 代表子命令的範圍)、C 子命令、s 子命令、S 子命令和 R 子命令。輸入這些子命令中的一個後,即可輸入文本到編輯緩衝區中。要返回到命令方式,按 ESC 鍵以正常退出或按“中斷”(Ctrl-C 按鍵順序)以非正常方式結束。
最後行方式 帶前綴 :(冒號)、/(斜槓)、?(問號)、!(感嘆號)或 !!(兩個感嘆號)的子命令在屏幕底部的顯示行上讀取輸入。當輸入初始字符時,vi 編輯器將光標置於屏幕底部,在該處可以輸入命令中剩餘的字符。按 Enter 鍵運行子命令,或按“中斷”(Ctrl-C 按鍵順序)取消它。當 使用 !! 前綴時,光標只在兩個感嘆號都輸入後才移動。當使用 : 前綴進入最後行方式時,如果在指定計數的命令之前使用以下字符,vi 編輯器賦予它們特定含義:
%
所有行,而不管光標的位置
$
最後行
.
當前行 

定製 vi 編輯器
可以根據以下方式定製 vi 編輯器:

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

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

要查看對缺省設置進行更改的 vi 編輯器設置列表,請輸入 set 並按空格鍵。按 Enter 鍵返回到命令方式。

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

要打開一個 vi 編輯器選項, 輸入 set Option。這個命令自動返回到命令方式。

要打開多個 vi 編輯器選項,輸入 set Option Option Option。這命令打開三個指定的 vi 編輯器選項並返回到命令方式。

要關閉一個 vi 選項,輸入 set noOption。這個命令自動返回到命令方式。

要更改一個 vi 編輯器的值,請輸入 set Option=Value。這個命令自動返回到命令方式。

可以僅爲這個編輯會話使用 :set vi 編輯器子命令來設置選項,或爲這個編輯會話和所有將來的編輯會話設置選項。

要只爲這個編輯會話設置或更改 vi 編輯器選項,從命令行輸入 :set 子命令。

要爲所有編輯會話設置 vi 選項,將 :set 子命令置於 .profile 文件的 EXINIT 環境變量中(該文件由登錄的外殼程序讀取)或將 set 子命令置於 .exrc 文件中。vi 編輯器首先查找 EXINIT 環境變量並運行它的命令。如果 EXINIT 環境變量不存在,則 vi 編輯器查找 $HOME/.exrc 文件並運行它的命令。最後,不管以前的任何結果,vi 編輯器查找本地的 .exrc 文件並運行它的命令。

注:
這個過程一直成立,除了 tvi 命令(可信的 vi)。在這種情況下,vi 編輯器查找並只運行 /etc/.exrc 文件。
要獲取通過設置 EXINIT 環境變量來更改選項的信息,請參閱 environment 文件中關於環境變量的描述。

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

set cp=3 . . ;
要在 .exrc 文件中包含註釋,將 "(雙引號)作爲該行中的第一個字符。

定義宏
如果經常使用一條子命令或一系列子命令,可以使用 vi 編輯器來定義發出子命令或子命令順序的宏。

要定義一個宏,輸入一系列以字母表中一個字母命名的緩衝區。小寫字母 a 到 z 覆蓋緩衝區的內容,大寫字母 A 到 Z 將文本附加到緩衝區先前的內容,這樣可以逐塊構建宏。

例如,要定義命名爲 c 的宏,該宏搜索單詞 corner 並使單詞 corner 後的第三行成爲當前行,輸入以下命令:

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


"c
其中 c 是緩衝區宏的名稱。

要添加文本到已定義的緩衝區中以前的內容,輸入 o viSubcommand,按 ESC 鍵,並輸入 "CapitalLetter,其中 CapitalLetter 變量指定一個從 A 到 Z 的大寫字母。例如,要構建名爲 T 的緩衝區宏,該宏搜索單詞 corner 並允許添加更多命令,輸入以下命令:


o corner
然後按 ESC 鍵並輸入以下命令:

"T
其中 T 是緩衝區宏的名稱。任何時候都可以重複本過程將更多的 vi 子命令添加到相同的緩衝區。

例如,要添加移動光標到前面行和刪除該行的命令,輸入以下命令:

o -dd
這裏 -(負號)意爲將光標上移一行,而 dd 表示刪除當前行。按 ESC 鍵並輸入以下命令:

"Tdd
要啓動宏,輸入 @Letter,其中 Letter 變量指定想要使用的緩衝區宏的字母名。要再使用相同的宏,輸入 @@ (兩個位於符號)。例如,輸入 @T 啓動 T 緩衝區宏並運行搜索、移動光標和刪除行命令。輸入 @@T 以再一次啓動 T 緩衝區宏。

系統使用的字符集通過對照表定義。該表影響 vi 宏的性能。

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

要爲所有以後的編輯會話映射鍵,將子命令置於 $HOME/.exrc 文件中。vi 編輯器每次啓動,會讀取這個文件。映射保持對每一次編輯會話有效。

要僅從命令方式爲當前的編輯會話映射鍵,在 vi 編輯器會話期間啓動子命令。要只通過文本輸入方式爲當前編輯會話映射鍵,在 vi 編輯器會話期間在命令行上輸入子命令。映射保持對當前編輯會話有效。

注意: 如果使用的是 IBM 3161 ASCII 顯示站、IBM 3163 ASCII 顯示站或 IBM 3101 ASCII 顯示站,vi 編輯器的缺省鍵映射會導致數據丟失。要查看缺省映射,請發出 :map 子命令。ESC-J 或 Shift-J 按鍵順序產生特殊的問題。這些按鍵順序從光標的當前位置到文件尾刪除所有的信息。爲了避免問題出現,使用 .exrc 文件來更改這個按鍵順序。
:map、:map! 和 :ab 子命令按以下定義:

:map 按命令方式定義宏。在 vi 編輯器中,:map 子命令允許通過按單一鍵來運行指定的命令或命令序列。
要按命令方式映射鍵,用空的編輯緩衝區啓動 vi 編輯器而不用 vi 命令給 vi 文件命名或在 vi 編輯器啓動後輸入任何東西到緩衝區。可以使用 :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 到命令序列,該命令序列定位的下一個出現的 map 單詞並將它改成單詞 MAP,請輸入以下命令:


:map v /map<Ctrl-V><Enter>cwMAP<Ctrl-V><Esc><Ctrl-V><Enter>
前面的示例指導 vi 編輯器定位下一個 map 的出現(/map<Ctrl-V><Enter>),將 map 更改爲 MAP(cwMAP),結束 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按鍵順序序爲它們轉義。

  要映射 |(管道符),首先必須用兩個 Ctrl-V 按鍵順序爲它轉義,這通過以下示例說明:將字符 g 映射到命令序列,該命令序列轉義到外殼程序,連接文件 /etc/motd 並輸出到 wc 命令:


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


:map #1 dwwww
爲了使功能鍵映射起作用,功能鍵給終端類型的輸出必須和 terminfo 文件中定義的輸出相匹配。這些定義由 kfnumber 條目標誌,其中,kf1 代表 F1 功能鍵,kf2 代表 F2 功能鍵,等等。如果當按功能鍵時所獲取的輸出與這個條目不匹配,在任何映射可以發生之前,必須使用終端的設置方式去糾正設置以便和這些終端數據庫條目相匹配。

也可以映射某個鍵盤特殊鍵,如 Home、End、Page Up 和 Page Down 鍵。對於大多數的終端,這些鍵已經在 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! 當處於文本輸入方式時,將字符串映射到單個鍵。要按文本輸入方式映射鍵,用空的編輯緩衝區啓動 vi 編輯器而不用 vi 命令給 vi 文件命名或在 vi 編輯器啓動後輸入任何東西到緩衝區。可以使用 :map! 子命令完成以下任務:
要按文本輸入方式映射一個字母到一個或多個 vi 字符串,輸入:

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

:unmap! Letter
要顯示在文本輸入方式已映射到特殊鍵的現有字符串,請輸入:

:map!
當處於文本輸入方式時,輸入映射鍵處理指定的字符串。Ctrl-V 和 Esc 按鍵順序進入命令方式 ,回到當前單詞的開始(bbw),並啓動 cw(change-word)子命令。例如:


:map! % <Ctrl-V><Esc>bbwcw
當輸入文本時,如果意識到已經輸錯了一個單詞,可以通過按 %(百分號)鍵並重新輸入這個單詞。編輯器自動返回到插入方式。


注:
當選擇將用於 :map! 子命令的鍵時要特別當心。一旦鍵已映射,除非先發出 :unmap! 子命令,它們就不能再按文本輸入。
:ab 將鍵或按鍵順序映射到字符串以用於文本輸入方式。當輸入具有幾個重複的短句、名稱或標題時,:ab 子命令十分有用。
以下示例將 city 替換爲短句 Austin, Texas 78759,只要它是用文本輸入方式輸入並緊跟一個空格、句號或冒號:


:ab city Austin, Texas 78759
例如,如果在輸入文本時,輸入以下內容:


My current residence is city.
按 Tab 鍵擴展單詞 city 用於閱讀:


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

如果 :map! 子命令用於映射縮寫用於插入方式,則出現的所有縮寫都被擴展,而不管它出現在什麼位置。如果在前面的示例中使用 :map! 子命令(:map! city Austin, Texas 78759),那麼無論什麼時候輸入單詞 city,無論前面和後面是什麼,這個單詞將擴展爲 Austin, Texas 78759。因此,單詞 iscity 成爲 isAustin, Texas 78759。


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

設置縮寫
set 命令具有與 map! 命令類似的行爲,除了 set 命令僅當縮寫是單個單詞時以縮寫形式代替字符串。可以使用 vi 編輯器的 set 命令完成以下任務:

列出現有的縮寫
除去縮寫
設置(定義)縮寫
注:
用空編輯緩衝區啓動 vi 編輯器。不要用 vi 命令給 vi 文件命名或在 vi 編輯器啓動後輸入任何東西到緩衝區。按 Esc 鍵以確保處於命令方式。
要列出縮寫 輸入 :ab 命令來列出現有的縮寫。按 Enter 鍵返回到命令方式。
要除去縮寫 輸入 :anab Abbreviation 命令以除去縮寫,其中 Abbreviation 變量指定不再想縮寫的字符串。
要設置(定義)縮寫 輸入 :ab Abbreviation String 命令來設置縮寫,其中 Abbreviation 變量指定定義爲縮寫的字符串,而 String 變量指定被縮寫的字符串。 只有當縮寫是單獨的單詞時,縮寫可以替代字符串。
例如, 如果輸入 :ab kn upper 命令,然後當處於文本輸入方式時輸入 acknowledge,因爲單詞 acknowledge 中的 kn 字符串不是單獨的單詞,所以不啓動 set 命令 :ab abbreviation string 命令。

然而,如果輸入 :ab kn upper命令,然後當處於文本輸入方式時,輸入 make the kn line all kncase,結果是 make the upper line all uppercase。


標誌

-cSubcommand 在開始查看 vi 之前,執行 ex 編輯器子命令。光標移到被最近執行的命令影響的行。當輸入一個空操作數時,如 -c' ',vi 編輯器將光標置於文件的第一行。-c 標誌不能與 + 標誌兼容。不要同時指定這兩個標誌。
-l 用 LISP 方式進入 vi 編輯器。在這種方式中,vi 編輯器適當地爲 LISP 代碼創建縮排,(, ), {, }, [[ 和 ]] 子命令被修改以便正確地爲 LISP 進行操作。
-r[File] 在 vi 編輯器或系統故障之後恢復文件。如果不指定 File 變量, vi 編輯器顯示所有保存過的文件列表。
-R 設置只讀選項以保護文件使其不被覆蓋。
-tTag 編輯包含 Tag 變量的文件並將 vi 編輯器定位於它的定義。要使用該標誌,必須首先使用 ctags 命令創建一個函數名及它們位置的數據庫。
-v 用詳細方式進入 vi 編輯器。
-wNumber 將缺省窗口大小設置爲 Number 變量指定的值。當在低速線路上使用 vi 編輯器時,這個標誌十分有用。
-yNumber 用任何大於 1024 的值覆蓋 1,048,560 的最大行設置。由於 vi 編輯器爲緩衝區控制使用額外的行,請求的行數應該是需要的兩倍。
+[Subcommand] 在開始編輯之前,執行 ex 編輯器子命令。如果沒有指定 Subcommand 變量,光標將置於文件的首行。這個 + 標誌與 -c 標誌不兼容。不要同時指定這兩個標誌。

vi 常規子命令語法
使用以下常規語法來輸入子命令:

[Named_Buffer] [Operator] [Number] Object

注:
方括號標識任選項。
[Named_Buffer] 指定臨時文本存儲區域。
[Operator] 指定子命令或操作;指導 vi 編輯器。
[Number] 將操作範圍或行地址指定爲一個整數。
Object 指定操作對象,如文本對象(字符、單詞、句子、段落、節、字符串)或文本位置(一行、在當前行中的位置、屏幕位置)。

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

轉至由 Number 參數指定的行:
5G
10Z
轉至由 Number 參數指定的列。
25|
上下滾動由 Number 參數指定的行數:
10Ctrl-U
10Ctrl-D
vi 編輯器子命令
使用子命令執行以下種類的操作:

移動光標
編輯文本
控制文件
其它操作
移動光標
按以下方式使用子命令在文件內移動光標:

在行內移動
按字符位置在行內移動
移到單詞
按行位置移動
移到句、段落或節
通過重繪屏幕移動
翻頁和滾動
搜索模式
在文件中標記特殊位置並返回
在行內移動
在命令方式輸入以下命令。可以通過按 Esc 鍵取消不完整的命令。如果需要關於 vi 子命令格式的信息,請參閱“vi 常規子命令語法”。

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

按字符位置在行中移動
在命令方式輸入以下命令。可以通過按 Esc 鍵取消不完整的命令。如果需要關於 vi 子命令格式的信息,請參閱“vi 常規子命令語法”。

^ 將光標移到第一個非空字符。
0 將光標移到行的開始。
$ 將光移到行尾。
fx 將光標移到下一個 x 字符。
Fx 將光標移到最後一個 x 字符。
tx 將光標移到下一個 x 字符的前一列。
Tx 將光標移到下一個 x字符的後一列。
; 重複最近的 f、F、t 或 T 子命令。
, 以反方向重複最近的 f、F、t 或 T 子命令。
Number| 將光標移到指定列。

移到單詞
在命令方式輸入以下命令。如果需要關於 vi 子命令格式的信息,請參閱“vi 常規子命令語法”。

w 將光標移到下一個小字。
b 將光標移到前一個小字。
e 將光標移到小字的倒數第二個字母。
W 將光標移到下一個大字。
B 將光標移到前一個大字。
E 將光標移到大字的倒數第二個字母。

按行位置移動
在命令方式輸入以下命令。如果需要有關 vi 子命令的信息,請參閱“vi 常規子命令語法”。

H 將光標移到屏幕的頂行。
L 將光標移到屏幕的最後一行。
M 將光標移到屏幕的中間行。
+ 將光標移到它的第一個非空字符的下一行。
- 將光標移到它的第一個非空字符的前一行。
Enter 將光標移到它的第一個非空字符的下一行。

移到句、段落或節
在命令方式輸入以下命令。可以通過按 Esc 鍵取消不完整的子命令。如果需要關於 vi 子命令格式的信息,請參閱“vi 常規子命令語法”。

( 將光標置於前一句的開始,或前一個 s-表達式(如果處於 LISP 方式)。
) 將光標置於下一句的開始,或下一個 s-表達式(如果處於 LISP 方式)。
{ 將光標置於前一個段落的開始,或下一個列表(如果處於 LISP 方式)。
} 將光標置於下一個段落的開始,如果處於 C 方式,則置於下一節,或者如果處於 LISP 方式則置於下一列表。
]] 將光標置於下一節,或者函數(如果處於 LISP 方式)。
[[ 將光標置於前一節,或者函數(如果處於 LISP 方式)。

通過重繪屏幕移動
在命令方式輸入以下命令。可以通過按 Esc 鍵取消不完整的子命令。如果需要關於 vi 子命令格式的信息,請參閱“vi 常規子命令語法”。

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

翻頁和滾動
在命令方式輸入以下命令。可以通過按 Esc 鍵取消不完整的子命令。如果需要關於 vi 子命令格式的信息,請參閱“vi 常規子命令語法”。

Ctrl-U 向上滾動 1/2 屏幕。
Ctrl-D 向下滾動 1/2 屏幕。
Ctrl-F 向前滾動一個屏幕。
Ctrl-B 向後滾動一個屏幕。
Ctrl-E 將窗口向下滾動一行。
Ctrl-Y 將窗口向上滾動一行。
z+ 向上翻頁
z^ 向下翻頁

搜索模式
在命令方式輸入以下命令。可以通過按 Esc 鍵取消不完整的子命令。如果需要關於 vi 子命令格式的信息,請參閱“vi 常規子命令語法”。

[Number]G 將光標置於由 Number 參數指定的行號,或者最後一行(如果沒有指定 Number 參數)。
/Pattern 將光標置於包含由 Pattern 參數指定的字符串的下一行。
?Pattern 將光標置於包含由 Pattern 參數指定的字符串的上一行。
n 在同一方向重複上次對 Pattern 參數指定的文本的搜索。
N 在相反方向重複上次對 Pattern 參數指定的文本的搜索。
/Pattern/+Number 將光標置於在與 Pattern 參數指定字符串相匹配的行的後面指定的行數。
?Pattern?-Number 將光標置於在與 Pattern 參數指定字符串相匹配的行的前面指定的行數。
% 查找與當前光標位置的括號或大括號相匹配的括號或大括號。

編輯文本
用於編輯的子命令使您能執行以下任務:

在文件中標記具體位置並返回
添加文本到文件
當處於輸入方式時更改文本
從命令方式更改文本
複製和移動文本
恢復和重複更改
在文件中標記具體位置並返回
在命令方式輸入以下命令。可以通過按 Esc 鍵取消不完整的子命令。如果需要關於 vi 子命令格式的信息,請參閱“vi 常規子命令語法”。

" 將光標移到當前行的前一位置。
" 將光標移到包含當前行前一位置的行的開始。
mx 用 x 參數指定的字母標記當前位置。
`x 將光標移到由 x 參數指定的標記。
'x 將光標移到包含由 x 參數指定的標記的行的開始。

添加文本到文件(文本輸入方式)
在命令方式輸入以下命令,將 vi 編輯器更改爲文本輸入方式。如果需要有關 vi 子命令的信息,請參閱“vi 常規子命令語法”。

aText
在光標後面插入由 Text 參數指定的文本。按 Esc 鍵結束文本輸入方式。
AText
添加由 Text 參數指定的文本到行尾。按 Esc 鍵結束文本輸入方式。
iText
在光標前面插入由 Text 參數指定的文本。按 Esc 鍵結束文本輸入方式。
IText
在行中的第一個非空字符前插入由 Text 參數指定的文本。按 Esc 鍵結束文本輸入方式。
o
在當前行的下面添加一個空行。按 Esc 鍵結束文本輸入方式。
O
在當前行的上面添加一個空行。按 Esc 鍵結束文本輸入方式。

當處於輸入方式時更改文本
僅當處於文本輸入方式時使用以下子命令。這些命令在命令方式中有不同的意思。如果需要關於 vi 子命令格式的信息,請參閱“vi 常規子命令語法”。

Ctrl-D
回退到前一個自動縮排停止位。
^ Ctrl-D 只結束該行的自動縮排。
0Ctrl-D 將光標退回到左頁邊。
Esc 結束插入並返回到命令狀態。
Ctrl-H 擦除上個字符。
Ctrl-Q 如果 xon 禁用則輸入任意字符。
Ctrl-V 輸入任意字符
Ctrl-W 擦除上個的小字。
/ 引用擦除並殺死字符。
Ctrl-? 中斷和結束插入或 Ctrl-D 按鍵順序。

從命令方式更改文本
在命令方式使用以下命令。可以通過按 Esc 鍵取消不完整的子命令。如果需要關於 vi 子命令格式的信息,請參閱“vi 常規子命令語法”。

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

複製和移動文本
在命令方式使用以下命令。可以通過按 Esc 鍵取消不完整的子命令。如果需要關於 vi 子命令格式的信息,請參閱“vi 常規子命令語法”。

p 在光標之後將撤銷緩衝區中的文本還原。
P 在光標之前將緩衝區中的文本還原。
"xp 將 x 緩衝區中的文本還原
"xd 將文本刪除到 x 緩衝區。
y 將跟隨的對象(例如 word 爲w)放到撤銷緩衝區。
"xy 將跟隨的對象放到 x 緩衝區,其中 x 爲任意字母。
Y 將行放到撤銷緩衝區。

恢復和重複更改
在命令方式使用以下命令。可以通過按 Esc 鍵取消不完整的子命令。如果需要關於 vi 子命令格式的信息,請參閱“vi 常規子命令語法”。

u 撤銷最後一次更改。

注:
撤銷後,光標移到更新過的當前行的第一個非空字符。
U 如果最後一次更改以來光標還沒有離開行,則恢復當前行。
. 重複上次更改或增加 "np 命令。

注:
這條子命令將重複最後一次的更改,包括一條撤銷命令。因此,一次撤銷後,重複一次撤銷而不是最後一次更改。
這條子命令不是爲和宏一起使用設計的。輸入 @@ (兩個位於字符)以重複宏。

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

操作文件
用於操作文件的子命令允許執行在以下各節中概述的任務:

將更改保存至文件
編輯另一文件
編輯一系列文件
查找文件信息
將更改保存至文件
在命令方式使用以下命令。如果需要有關 vi 子命令的信息,請參閱“vi 常規子命令語法”。

:w 將編輯緩衝區內容寫到原始文件中。如果正在 ex 編輯器中使用這條子命令,不必輸入 :(冒號)。
:w File 將編輯緩衝區內容寫入由 File 參數指定的文件中。如果正在 ex 編輯器中使用這條子命令,不必輸入 :(冒號)。
:w! File 用緩衝區內容覆蓋由 File 參數指定的文件。如果正在 ex 編輯器中使用這條子命令,不必輸入 :(冒號)。

編輯另一文件
在命令方式輸入以下命令。如果需要有關 vi 子命令的信息,請參閱“vi 常規子命令語法”。

:e File 編輯指定文件。如果正在從 ex 編輯器使用這條子命令,不必輸入 :(冒號)。
:e! 重新編輯當前文件並廢棄所有更改。
:e + File 從最後開始編輯指定文件。
:e + Number File 從指定行號開始編輯指定文件。
:e # 編輯備用文件。在用 :e 命令訪問另一個文件之前,備用文件通常是以前的文件名。但是,如果當調用一個新文件時在當前文件中暫掛更改,那麼新文件成爲備用文件。這條子命令和 Ctrl-A 子命令相同。
:r File 通過在當前行下面添加新行,將文件讀取到編輯緩衝區。如果正在從 ex 編輯器使用這條子命令,不必輸入 :(冒號)。
:r !Command 通過在當前光標位置下面添加新行,運行指定命令並將它的輸出放到文件中。
:ta Tag 從標記位置開始,編輯包含 Tag 標記符的文件。要使用這條子命令,必須首先使用 ctags 命令創建一個函數名及它們位置的數據庫。如果正在從 ex 編輯器使用這條子命令,不必輸入 :(冒號)。
Ctrl-A 編輯備用文件。備用文件通常使用前個當前文件名。但是,如果當調用一個新文件時在當前文件中暫掛更改,那麼新文件成爲備用文件。這條子命令和 :e # 子命令相同。

編輯文件列表
在命令方式輸入以下命令。如果需要有關 vi 子命令的信息,請參閱“vi 常規子命令語法”。

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

查找文件信息
在命令方式輸入以下子命令。如果需要關於 vi 子命令格式的信息,請參閱“vi 常規子命令語法”。

Ctrl-G 顯示當前文件名、當前行號、文件中行數和光標定位於文件整體的百分比。

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

調整屏幕
輸入外殼程序命令
中斷和結束 vi 編輯器
調整屏幕
在命令方式輸入以下命令。可以通過按 Esc 鍵取消不完整的子命令。如果需要關於 vi 子命令格式的信息,請參閱“vi 常規子命令語法”。

Ctrl-L 清除和重繪屏幕。
Ctrl-R 重繪屏幕和消除標有 @ (位於符號)的空行。
zNumber 使窗口長度能顯示指定行數。

輸入外殼程序命令
以下子命令允許在 vi 編輯器內運行命令。在命令方式輸入以下命令。如果需要關於 vi 子命令格式的信息,請參閱“vi 常規子命令語法”。

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

注:
當後跟 :! 子命令時,#(備用文件)、%(當前文件)和 ! (前面的命令)特殊字符都會擴展。要避免這些字符中的任意字符被擴展,可使用 / (反斜槓)。
:!! 重複最近一次的 :!Command 子命令。
Number!!Command 運行指定的命令並用命令輸出替代由 Number 指定的行。如果沒有指定數目,則缺省值是 1。如果命令需要標準輸入,則指定的行用作輸入。
!Object Command 運行指定命令,並用命令輸出替代由 Object 參數指定的對象。如果命令需要標準輸入,則指定的對象用作輸入。

中斷和結束 vi 編輯器
在命令方式輸入以下命令。如果需要有關 vi 子命令的信息,請參閱“vi 常規子命令語法”。

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

出口狀態
vi 命令返回以下出口值:

0 指示成功完成。
>0 指示發生錯誤。

輸入文件
輸入文件必須是文本文件或和文本文件相似的文件,除了長度不超過 LINE_MAX -1 字節並且包含非空字符的不完整的最近行。

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

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

作者Blog:http://blog.csdn.net/NETOCOOL/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章