?
一、
Unix
編輯器概述
?????
編輯器是使用計算機的重要工具之中的一個,在各種操作系統中,編輯器都是不可缺少的部件。
Unix
及其類似的
ix
操作系統系列中,為方便各種用戶在各個不同的環境中使用,提供了一系列的
ex
編輯器,包含
ex, edit,ed
和
vi.
當中
ex,edit,ed
都是行編輯器,如今已非常少有人使用,
Unix
提供他們的原因是考慮到滿足各種用戶特別
是某些終端用戶的須要。
值得慶幸的是,
Unix
提供了全屏幕的
Vi
編輯器,這使我們的工作輕松不少。不少
DOS
用戶抱怨
Vi
編輯器不象
DOS
下的編輯器如
edit
那么好用,這是由于
Vi
考慮到各種用戶的須要,沒有使用某些通用的編輯鍵(在各個
不同的終端機上他們的定義是不同的,在某些終端機上甚至沒有這些鍵)。而是採用狀態切換的方法,但這
僅僅是習慣的問題,一旦你熟練的使用上了
vi
你就會認為它事實上也非常好用。
?????
盡管
Vi
採用了狀態切換的方法,但電腦的硬件及操作系統多種多樣,某些電腦的鍵盤上沒有特定的幾個功能鍵!那麼不就有某些功能不能用了?這個問題在
Unix
系統上也一樣,差點兒各大電腦廠商都有自己的
Unix
系統,而
vi
的操作方法也會隨之有點出入。這里我們採用
PC
的鍵盤來說明
vi
的操作,但在具體的環境中還要參考對應的資料,這一點是值得注意的。
二、 Vi 入門
(一)、進入 vi
????? 在系統提示字符 ( 如 $ 、 #) 下敲入 vi <檔案名稱>, vi 能夠自己主動幫你加載所要編輯的文件或是開啟一個新 文件(假設該文件不存在或缺少文件名稱)。進入 vi 后螢幕左方會出現波浪符號,凡是列首有該符號就代表此列眼下是空的。
( 二)、兩種模式
?????? 如上所述, vi 存在兩種模式:指令模式和輸入模式。在指令模式下輸入的按鍵將做為指令來處理:如輸入 a , vi 即覺得是在當前位置插入字符。而在輸入模式下, vi 則把輸入的按鍵當作插入的字符來處理。指令模式切換到輸入模式僅僅需鍵入對應的輸入命令就可以(如 a,A ),而要從輸入模式切換到指令模式,則需在輸入模式下鍵入 ESC 鍵,假設不曉得如今是處於什麼模式,能夠多按幾次 [ESC] ,系統如發出嗶嗶聲就表示已處于指令模式下了。
付:在指令模式進入輸入模式的指令:
新增 (append)
a :從光標所在位置後面開始新增資料,光標後的資料隨新增資料向後移動。
A : 從光標所在列最後面的地方開始新增資料。
插入 (insert)
i : 從光標所在位置前面開始插入資料,光標後的資料隨新增資料向後移動。
I :從光標所在列的第一個非空白字元前面開始插入資料。
開始 (open)
o :在光標所在列下新增一列并進入輸入模式。
O: 在光標所在列上方新增一列并進入輸入模式。
(三)、退出 vi
????? 在指令模式下鍵入 :q,:q!,:wq 或 :x( 注意 : 號),就會退出 vi 。當中 :wq 和 :x 是存盤退出,而 :q 是直接退出,假設文件已有新的變化, vi 會提示你保存文件而 :q 命令也會失效,這時你能夠用 :w 命令保存文件后再用 :q 退出,或用 :wq 或 :x 命令退出,假設你不想保存改變后的文件,你就須要用 :q! 命令,這個命令將不保存文件而直接退出 vi 。
(四)、基本編輯
?????? 配合一般鍵盤上的功能鍵,像是方向鍵、 [Insert] 、 [Delete] 等等,如今你應該已經能夠利用 vi 來編輯文件了。當然 vi 還提供其它許很多多功能讓文字的處理更為方便。
????? 何謂編輯?一般覺得是文字的新增、改動以及刪除,甚至包含文字區塊的搬移、復制等等。先這里介紹 vi 的怎樣做刪除與改動。(注意:在 vi 的原始觀念里,輸入跟編輯是兩碼子事。編輯是在指令模式下操作 的,先利用指令移動光標來定位要進行編輯的地方,然後才下指令做編輯。)
刪除與改動文件的命令:
x : 刪除光標所在字符。
dd :刪除光標所在的列。
r :改動光標所在字元, r 後接著要修正的字符。
R : 進入取替換狀態,新增文字會覆蓋原先文字,直到按 [ESC] 回到指令模式下為止。
s : 刪除光標所在字元,并進入輸入模式。
S : 刪除光標所在的列,并進入輸入模式。
????? 事實上呢,在 PC 上根本沒有這麼麻煩!輸入跟編輯都能夠在輸入模式下完畢。比如要刪除字元,直接按 [Delete] 不就得了。而插入狀態與代替狀態能夠直接用 [Insert] 切換,犯不著用什麼指令模式的編 輯指令。只是就如前面所提到的,這些指令差點兒是每臺終端機都能用,而不是僅僅在 PC 上。 在指令模式下移動光標的基本指令是 h, j, k, l 。想來各位如今也應該能猜到僅僅要直接用 PC 的方向鍵就能夠了,并且不管在指令模式或輸入模式下都能夠。多easy不是。當然 PC 鍵盤也有不足之處。有個非常好用的指令 u 能夠恢復被刪除的文字,而 U 指令則能夠恢復光標所在列的全部改變。這與某些電腦上的 [Undo] 按鍵功能同樣。
三、附件: vi 具體指令表
進入 vi 的命令
二、 Vi 入門
(一)、進入 vi
????? 在系統提示字符 ( 如 $ 、 #) 下敲入 vi <檔案名稱>, vi 能夠自己主動幫你加載所要編輯的文件或是開啟一個新 文件(假設該文件不存在或缺少文件名稱)。進入 vi 后螢幕左方會出現波浪符號,凡是列首有該符號就代表此列眼下是空的。
( 二)、兩種模式
?????? 如上所述, vi 存在兩種模式:指令模式和輸入模式。在指令模式下輸入的按鍵將做為指令來處理:如輸入 a , vi 即覺得是在當前位置插入字符。而在輸入模式下, vi 則把輸入的按鍵當作插入的字符來處理。指令模式切換到輸入模式僅僅需鍵入對應的輸入命令就可以(如 a,A ),而要從輸入模式切換到指令模式,則需在輸入模式下鍵入 ESC 鍵,假設不曉得如今是處於什麼模式,能夠多按幾次 [ESC] ,系統如發出嗶嗶聲就表示已處于指令模式下了。
付:在指令模式進入輸入模式的指令:
新增 (append)
a :從光標所在位置後面開始新增資料,光標後的資料隨新增資料向後移動。
A : 從光標所在列最後面的地方開始新增資料。
插入 (insert)
i : 從光標所在位置前面開始插入資料,光標後的資料隨新增資料向後移動。
I :從光標所在列的第一個非空白字元前面開始插入資料。
開始 (open)
o :在光標所在列下新增一列并進入輸入模式。
O: 在光標所在列上方新增一列并進入輸入模式。
(三)、退出 vi
????? 在指令模式下鍵入 :q,:q!,:wq 或 :x( 注意 : 號),就會退出 vi 。當中 :wq 和 :x 是存盤退出,而 :q 是直接退出,假設文件已有新的變化, vi 會提示你保存文件而 :q 命令也會失效,這時你能夠用 :w 命令保存文件后再用 :q 退出,或用 :wq 或 :x 命令退出,假設你不想保存改變后的文件,你就須要用 :q! 命令,這個命令將不保存文件而直接退出 vi 。
(四)、基本編輯
?????? 配合一般鍵盤上的功能鍵,像是方向鍵、 [Insert] 、 [Delete] 等等,如今你應該已經能夠利用 vi 來編輯文件了。當然 vi 還提供其它許很多多功能讓文字的處理更為方便。
????? 何謂編輯?一般覺得是文字的新增、改動以及刪除,甚至包含文字區塊的搬移、復制等等。先這里介紹 vi 的怎樣做刪除與改動。(注意:在 vi 的原始觀念里,輸入跟編輯是兩碼子事。編輯是在指令模式下操作 的,先利用指令移動光標來定位要進行編輯的地方,然後才下指令做編輯。)
刪除與改動文件的命令:
x : 刪除光標所在字符。
dd :刪除光標所在的列。
r :改動光標所在字元, r 後接著要修正的字符。
R : 進入取替換狀態,新增文字會覆蓋原先文字,直到按 [ESC] 回到指令模式下為止。
s : 刪除光標所在字元,并進入輸入模式。
S : 刪除光標所在的列,并進入輸入模式。
????? 事實上呢,在 PC 上根本沒有這麼麻煩!輸入跟編輯都能夠在輸入模式下完畢。比如要刪除字元,直接按 [Delete] 不就得了。而插入狀態與代替狀態能夠直接用 [Insert] 切換,犯不著用什麼指令模式的編 輯指令。只是就如前面所提到的,這些指令差點兒是每臺終端機都能用,而不是僅僅在 PC 上。 在指令模式下移動光標的基本指令是 h, j, k, l 。想來各位如今也應該能猜到僅僅要直接用 PC 的方向鍵就能夠了,并且不管在指令模式或輸入模式下都能夠。多easy不是。當然 PC 鍵盤也有不足之處。有個非常好用的指令 u 能夠恢復被刪除的文字,而 U 指令則能夠恢復光標所在列的全部改變。這與某些電腦上的 [Undo] 按鍵功能同樣。
三、附件: vi 具體指令表
進入 vi 的命令
vi filename:
打開或新建文件,并將光標置于第一行首
vi +n filename: 打開文件,并將光標置于第 n 行首
vi + filename: 打開文件,并將光標置于最后一行首
vi +/pattern filename: 打開文件,并將光標置于第一個與 pattern 匹配的串處
vi -r filename: 在上次正用 vi 編輯時發生系統崩潰,恢復 filename
vi filename....filename: 打開多個文件,依次進行編輯
移動光標類命令
h: 光標左移一個字符
l: 光標右移一個字符
space: 光標右移一個字符
Backspace: 光標左移一個字符
k 或 Ctrl+p: 光標上移一行
j 或 Ctrl+n: 光標下移一行
Enter: 光標下移一行
w 或 W?: 光標右移一個字至字首
b 或 B?: 光標左移一個字至字首
e 或 E?: 光標右移一個字至字尾
): 光標移至句尾
?(: 光標移至句首
}: 光標移至段落開頭
{: 光標移至段落結尾
nG: 光標移至第 n 行首
n+: 光標下移 n 行
n-: 光標上移 n 行
n$: 光標移至第 n 行尾
H: 光標移至屏幕頂行
M: 光標移至屏幕中間行
L: 光標移至屏幕最后行
0: 光標移至當前行首
$: 光標移至當前行尾
屏幕翻滾類命令
Ctrl+u: 向文件首翻半屏
Ctrl+d: 向文件尾翻半屏
Ctrl+f: 向文件尾翻一屏
Ctrl + b: 向文件首翻一屏
nz: 將第 n 行滾至屏幕頂部,不指定 n 時將當前行滾至屏幕頂部。
插入文本類命令
i: 在光標前
I: 在當前行首
a: 光標后
A: 在當前行尾
o: 在當前行之下新開一行
O: 在當前行之上新開一行
r: 替換當前字符
R: 替換當前字符及其后的字符,直至按 ESC 鍵
s: 從當前光標位置處開始,以輸入的文本替代指定數目的字符
S: 刪除指定數目的行,并以所輸入文本取代之
ncw 或 nCW: 改動指定數目的字
nCC: 改動指定數目的行
刪除命令
vi +n filename: 打開文件,并將光標置于第 n 行首
vi + filename: 打開文件,并將光標置于最后一行首
vi +/pattern filename: 打開文件,并將光標置于第一個與 pattern 匹配的串處
vi -r filename: 在上次正用 vi 編輯時發生系統崩潰,恢復 filename
vi filename....filename: 打開多個文件,依次進行編輯
移動光標類命令
h: 光標左移一個字符
l: 光標右移一個字符
space: 光標右移一個字符
Backspace: 光標左移一個字符
k 或 Ctrl+p: 光標上移一行
j 或 Ctrl+n: 光標下移一行
Enter: 光標下移一行
w 或 W?: 光標右移一個字至字首
b 或 B?: 光標左移一個字至字首
e 或 E?: 光標右移一個字至字尾
): 光標移至句尾
?(: 光標移至句首
}: 光標移至段落開頭
{: 光標移至段落結尾
nG: 光標移至第 n 行首
n+: 光標下移 n 行
n-: 光標上移 n 行
n$: 光標移至第 n 行尾
H: 光標移至屏幕頂行
M: 光標移至屏幕中間行
L: 光標移至屏幕最后行
0: 光標移至當前行首
$: 光標移至當前行尾
屏幕翻滾類命令
Ctrl+u: 向文件首翻半屏
Ctrl+d: 向文件尾翻半屏
Ctrl+f: 向文件尾翻一屏
Ctrl + b: 向文件首翻一屏
nz: 將第 n 行滾至屏幕頂部,不指定 n 時將當前行滾至屏幕頂部。
插入文本類命令
i: 在光標前
I: 在當前行首
a: 光標后
A: 在當前行尾
o: 在當前行之下新開一行
O: 在當前行之上新開一行
r: 替換當前字符
R: 替換當前字符及其后的字符,直至按 ESC 鍵
s: 從當前光標位置處開始,以輸入的文本替代指定數目的字符
S: 刪除指定數目的行,并以所輸入文本取代之
ncw 或 nCW: 改動指定數目的字
nCC: 改動指定數目的行
刪除命令
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 替換
選項設置
all :列出全部選項設置情況
term :設置終端類型
ignorance :在搜索中忽略大寫和小寫
list :顯示制表位 (ctrl+i) 和行尾標志( $)
number :顯示行號
report :顯示由面向行的命令改動過的數目
terse :顯示簡短的警告信息
warn :在轉到別的文件時若沒保存當前文件則顯示 no write 信息
nomagic :同意在搜索模式中,使用前面不帶 “/” 的特殊字符
nowrapscan :禁止 vi 在搜索到達文件兩端時,又從還有一端開始
mesg :同意 vi 顯示其它用戶用 write 寫到自己終端上的信息
最后行方式命令
: n1,n2 co n3 :將 n1 行到 n2 行之間的內容復制到第 n3 行下
: n1,n2 m n3 :將 n1 行到 n2 行之間的內容移至到第 n3 行下
: n1,n2 d :將 n1 行到 n2 行之間的內容刪除
: w :保存當前文件
: e filename :打開文件 filename 進行編輯
: x :保存當前文件并退出
: q :退出 vi
: q! :不保存文件并退出 vi
: !command :運行 shell 命令 command
: n1,n2 w!command :將文件里 n1 行至 n2 行的內容作為 command 的輸入并運行之,若不指定 n1 , n2 ,則表示將整個文件內容作為 command 的輸入
: r!command :將命令 command 的輸出結果放到當前行
寄存器操作
"?nyy :將當前行及其下 n 行的內容保存到寄存器?中,當中 ? 為一個字母, n 為一個數字
"?nyw :將當前行及其下 n 個字保存到寄存器?中,當中 ? 為一個字母, n 為一個數字
"?nyl :將當前行及其下 n 個字符保存到寄存器?中,當中 ? 為一個字母, n 為一個數字
"?p :取出寄存器?中的內容并將其放到光標位置處。這里?能夠是一個字母,也能夠是一個數字
ndd :將當前行及其下共 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 替換
選項設置
all :列出全部選項設置情況
term :設置終端類型
ignorance :在搜索中忽略大寫和小寫
list :顯示制表位 (ctrl+i) 和行尾標志( $)
number :顯示行號
report :顯示由面向行的命令改動過的數目
terse :顯示簡短的警告信息
warn :在轉到別的文件時若沒保存當前文件則顯示 no write 信息
nomagic :同意在搜索模式中,使用前面不帶 “/” 的特殊字符
nowrapscan :禁止 vi 在搜索到達文件兩端時,又從還有一端開始
mesg :同意 vi 顯示其它用戶用 write 寫到自己終端上的信息
最后行方式命令
: n1,n2 co n3 :將 n1 行到 n2 行之間的內容復制到第 n3 行下
: n1,n2 m n3 :將 n1 行到 n2 行之間的內容移至到第 n3 行下
: n1,n2 d :將 n1 行到 n2 行之間的內容刪除
: w :保存當前文件
: e filename :打開文件 filename 進行編輯
: x :保存當前文件并退出
: q :退出 vi
: q! :不保存文件并退出 vi
: !command :運行 shell 命令 command
: n1,n2 w!command :將文件里 n1 行至 n2 行的內容作為 command 的輸入并運行之,若不指定 n1 , n2 ,則表示將整個文件內容作為 command 的輸入
: r!command :將命令 command 的輸出結果放到當前行
寄存器操作
"?nyy :將當前行及其下 n 行的內容保存到寄存器?中,當中 ? 為一個字母, n 為一個數字
"?nyw :將當前行及其下 n 個字保存到寄存器?中,當中 ? 為一個字母, n 為一個數字
"?nyl :將當前行及其下 n 個字符保存到寄存器?中,當中 ? 為一個字母, n 為一個數字
"?p :取出寄存器?中的內容并將其放到光標位置處。這里?能夠是一個字母,也能夠是一個數字
ndd :將當前行及其下共 n 行文本刪除,并將所刪內容放到 1 號刪除寄存器中。 ?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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