Vi命令大全

1、 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 的操做,但在具體的環境中還要參考相應的資料,這一點是值得注意的。

2、Vi入門

(一)、進入vi 
      在系統提示字符($#)下敲入vi <檔案名稱>vi 能夠自動幫你載入所要編輯的文件或是開啓一個新文件(若是該文件不存在或缺乏文件名)。進入 vi 後螢幕左方會出現波浪符號,凡是列首有該符號就表明此列目前是空的。

(二)、兩種模式
       如上所述,vi存在兩種模式:指令模式和輸入模式。在指令模式下輸入的按鍵將作爲指令來處理:如輸入 avi即認爲是在當前位置插入字符。而在輸入模式下,vi則把輸入的按鍵看成插入的字符來處理。指令模式切換到輸入模式只需鍵入相應的輸入命令便可(如a,A),而要從輸入模式切換到指令模式,則需在輸入模式下鍵入ESC鍵,若是不曉得如今是處於什麼模式,能夠多按幾回 [ESC],系統如發出嗶嗶聲就表示已處於指令模式下了。
付:在指令模式進入輸入模式的指令:
新增 (append) 
:從光標所在位置後面開始新增資料,光標後的資料隨新增資料向後移動。
A從光標所在列最後面的地方開始新增資料。

插入 (insert) 
i從光標所在位置前面開始插入資料,光標後的資料隨新增資料向後移動。
:從光標所在列的第一個非空白字元前面開始插入資料。

開始 (open) 
:在光標所在列下新增一列並進入輸入模式。
O: 在光標所在列上方新增一列並進入輸入模式。

(三)、退出vi
      在指令模式下鍵入:q,:q!,:wq:x(注意:號),就會退出vi。其中:wq:x是存盤退出,而:q是直接退出,若是文件已有新的變化,vi會提示你保存文件而:q命令也會失效,這時你能夠用:w命令保存文件後再用:q 退出,或用:wq:x命令退出,若是你不想保存改變後的文件,你就須要用:q!命令,這個命令將不保存文件而直接退出vi shell

┌───────────┬───────────────┐ 
│命令         │描述             │ 
├───────────┼───────────────┤ 
│zz          │保存並退出          │ 
├───────────┼───────────────┤ 
│:w filename      │寫入文件            │ 
├───────────┼───────────────┤ 
│:W          │寫入文件           │ 
├───────────┼───────────────┤ 
│:x          │保存(若是當前文件修改過)並退出│ 
├───────────┼───────────────┤ 
│:q!          │不保存文件,直接退出      │ 
├───────────┼───────────────┤ 
│:q          │退出vi            │ 
app



(四)、基本編輯

        配合通常鍵盤上的功能鍵,像是方向鍵、 [Insert]  [Delete]  等等,如今你應該已經能夠利用  vi  來編輯文件了。固然  vi  還提供其餘許許多多功能讓文字的處理更爲方便。
       何謂編輯?通常認爲是文字的新增、修改以及刪除,甚至包括文字區塊的搬移、複製等等。先這裏介紹  vi  的如何作刪除與修改。(注意:在  vi  的原始觀念裏,輸入跟編輯是兩碼子事。編輯是在指令模式下操做 的,先利用指令移動光標來定位要進行編輯的地方,然後才下指令作編輯。)

刪除與修改文件的命令:
x 刪除光標所在字符。
dd  :刪除光標所在的列。
:修改光標所在字元, 後接著要修正的字符。
R 進入取替換狀態,新增文字會覆蓋原先文字,直到按  [ESC]  回到指令模式下爲止。
s 刪除光標所在字元,並進入輸入模式。
S 刪除光標所在的列,並進入輸入模式。

       其實呢,在 PC 上根本沒有這麼麻煩!輸入跟編輯均可以在輸入模式下完成。例如要刪除字元,直接按  [Delete]  不就得了。而插入狀態與取代狀態能夠直接用  [Insert]  切換,犯不著用什麼指令模式的編 輯指令。不過就如前面所提到的,這些指令幾乎是每臺終端機都能用,而不是僅僅在  PC  上。 在指令模式下移動光標的基本指令是  h, j, k, l  。想來各位如今也應該能猜到只要直接用  PC  的方向鍵就能夠了,並且不管在指令模式或輸入模式下均可以。多容易不是。固然  PC  鍵盤也有不足之處。有個很好用的指令  u  能夠恢復被刪除的文字,而  U  指令則能夠恢復光標所在列的全部改變。這與某些電腦上的  [Undo]  按鍵功能相同。

3、附件: 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: 
修改指定數目的行  

刪除命令
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 行之間的內容刪除
:保存當前文件
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 號刪除寄存器中。 
相關文章
相關標籤/搜索