3.1 vi 簡介
vi 是 UNIX 世界里使用非常普遍的全屏幕文本編輯器,幾乎任何一種UNIX系統都會提供這套軟件。AIX當然也支持這種編輯器。熟悉DOS下的文本處理后,用戶在開始接觸vi時也許會感到它并不好用,然而一旦用戶熟悉、掌握了vi ,就會發現它實在是一種功能強大、使用靈活方便的編輯器。
UNIX 提供一系列的ex編輯器,包括ex,edit和vi。相對于全屏幕編輯器,現在可能很難想像如何使用ex,edit這種行列編輯器。 vi 的原意是“Visual”,它是一個立即反應的編輯程式,也就是說可以立刻看到操作結果。vi 必須控制整個終端屏幕的顯示輸出,而終端的種類有許多種,特性又不盡相同,所以 vi 有必要知道現在所使用的是哪一種終端。這是通過 TERM 這個環境變量來設定的。
在命令行鍵入vi就可以進入vi的編輯環境。vi 有三種模式:命令模式、文本輸入模式以及命令項模式。執行vi以后,會先進入命令模式,此時用戶可輸入各種子命令對行進行編輯,如刪除行、拷貝行等。在文本輸入模式下,用戶可以修改一行的內容并添加新行。在命令模式下鍵入 i、I、a 、A或o等即可進入文本輸入模式,鍵入ESC鍵即可返回命令模式。在命令項模式下,用戶可以通過子命令輸入更多的參數,如“/”子命令要求輸入下一個查找項。用戶使用ESC鍵返回命令模式。
3.2 vi的進入與離開
vi可以在全屏幕方式下編輯一個或多個文件。如果在執行vi時沒有指定文件名,則vi 命令會自動產生一個無名的空文件。如果指定的文件不存在,則vi將按指定的文件名創建一個新的文件。進入 vi 后屏幕左方會出現波浪符號,凡是列首有該符號就代表此列目前是空的。要離開 vi 可以在命令模式下鍵入 :q , :wq 命令則是存檔后再離開(注意冒號)。注意vi并不鎖住所編輯的文件,因此多個用戶可能同時編輯一個文件,那么最后保存的文件版本將被保留。
以下是vi 命令使用的一些選項及說明:
-c command :在對文件進行編輯前,先執行command命令;
-r filename :恢復文件filename;
-R :以只讀方式編輯文件;
-y number :每屏只編輯number 行文本。
3.3 vi 的文本輸入模式
使用以下幾種命令可以進入文本輸入模式(用戶在任何時候都可以按ESC鍵返回命令模式):
新增 (append) :
a :從光標所在位置之后開始輸入文本
A :從光標所在行尾開始輸入文本
插入 (insert) :
i :從光標所在位置之前開始輸入文本
I :從光標所在行的第一個非空白字符前面開始輸入文本
開始 (open) :
o :在光標所在行后插入一新行。
O :在光標所在行前插入一新行。
3.4 vi 基本編輯命令
在 vi 里,輸入跟編輯是兩碼事。編輯是在命令模式下操作的,先利用命令移動光標來定位要進行編輯的地方,然后才下命令做編輯。
命令
說明
備注
cc 或S
修改一整行的文本
C
改變一行中光標所在位置之后的部分
dd
刪除光標所在的列
D
刪除一行中光標所在位置之后的部分
dw
刪除光標所在的單詞
J
將下一行文本內容合并到本行行尾
r
修改光標所在字符,r 后接要修正的字符
R
修改本行內容
s
修改光標所在字符
u
恢復上一次所做的修改
x
刪除光標所在字符
X
刪除光標左側字符
~
改變光標所在字符的大小寫
.
重復上一次的操作
<<
將當前行移到左邊
>>
將當前行移到右邊
p
將緩沖區的內容拷貝到光標所在行的下一行
P
將緩沖區的內容拷貝到光標所在行的上一行
“ad
將文本刪除至緩沖區a
“ap
粘貼緩沖區a中的內容
yy或Y
將當前行存入緩沖區
yw
將光標所在的單詞存入緩沖區
0
移動到光標所在列的最前面
=[Home]
$
移動到光標所在列的最后面
=[End]
[CTRL+d]
向下半頁
=[PageDown]
[CTRL+f]
向下一頁
[CTRL+u]
向上半頁
[CTRL+b]
向上一頁
=[PageUp]
[CTRL+e]
下滾一行
[CTRL+y]
上滾一行
H
移動到屏幕的第一行
M
移動到屏幕的中間
L
移動到屏幕的最后一行
b
移動到上個小字的第一個字母
B
移動到上個大字的第一個字母
w
移動到下個小字的第一個字母
W
移動到下個大字的第一個字母
e
移動到下個小字的最后一個字母
E
移動到下個大字的最后一個字母
^
移動到光標所在列的第一個非空白字符
n-
減號移動到上一行的第一個非空白字符,前面加上數字可以指定移動到以上 n 行
n+
加號移動到下一行的第一個非空白字符,前面加上數字可以指定移動到以下 n 行
nG
直接用數字 n 加上 G 移動到第 n 行
fx
往右移動到 x 字符上
Fx
往左移動到 x 字符上
tx
往右移動到 x 字符前
Tx
往左移動到 x 字符前
;
配合 f&t 使用,重復一次
,
配合 f&t 使用,反方向重復一次
/string
往右移動到有 string 的地方
?string
往左移動到有 string 的地方
n
配合 /&? 使用,重復一次
N
配合 /&? 使用,反方向重復一次
%
移到匹配的”()”或”{}”上
n(
左括號移動到句子的最前面,前面加上數字可以指定往前移動 n 個句子
句子是以! . ? 三種符號來界定
n)
右括號移動到下個句子的最前面,前面加上數字可以指定往后移動 n 個句子
段落是以段落間的空白列界定
n{
左括弧移動到段落的最前面,前面加上數字可以指定往前移動 n 個段落
n}
右括弧移動到下個段落的最前面,前面加上數字可以指定往后移動 n 個段落
這些編輯命令非常有彈性,基本上可以說是由命令與范圍所構成。例如 dw 是由刪除指令d 與范圍 w 所組成,代表刪除一個字 d (elete) w (ord) 。命令列表如下:
d 刪除(delete)
y 復制(yank)
p 放置(put)
c 修改(change)
范圍可以是下列幾個:
e 光標所在位置到該字的最后一個字母
w 光標所在位置到下個字的第一個字母
b 光標所在位置到上個字的第一個字母
$ 光標所在位置到該行的最后一個字母
0 光標所在位置到該行的第一個字母
) 光標所在位置到下個句子的第一個字母
( 光標所在位置到該句子的第一個字母
} 光標所在位置到該段落的最后一個字母
{ 光標所在位置到該段落的第一個字母
3.5 文件處理子命令
:q 結束編輯(quit)
如果不想存檔而要放棄編輯過的檔案則用 :q! 強制離開。
:w 存檔(write)
其后可加所要存檔的檔名。 可以將檔案命令合在一起,例如 :wq 即存檔后離開。
zz 功能與 :wq 相同。
:n 開始編輯vi激活的文件列表中的下一個文件。
:n filename 指定被編輯的新的文件。
:e filename 在vi中編輯另一個文件filename。
:e # 開始編輯另一個文件。
:e ! 重新裝入當前文件,如果當前文件有改動,則丟棄以前的改動。
:r filename 將文件filename合并至當前文件的文件尾。
另外值得一提的是 vi 的部份存檔功能。可以用 :n,m w filename 將第 n 行到第 m 行 的文字存放的所指定的 filename 里
原文:http://winco304.blog.163.com/blog/static/9428389120093118121500/
文章列表