1. 程式人生 > >Vi編輯器入門

Vi編輯器入門

工作模式 搜索命令 turn sina 功能 保留 前一行 光標位置 指定位置

Vi編輯器入門

一、vi的工作模式

vi有兩種基本的工作模式:命令(編輯)模式和文本輸入模式。

命令模式:vi初始啟動時進入命令模式。它不顯示用戶輸入,只會被解釋執行。

文本輸入模式:它就顯示用戶的輸入,只是作為文本寫入到用戶的文件中。

狀態行:屏幕底部的一行,通常為第24行,vi在該行上反饋編輯操作的結果。錯誤信息或其他一些信息會在狀態行上顯示出來,vi還會在第24行上顯示那些以冒號、斜杠或問號開頭的命令。

二、命令模式

註意:

1,如果想使用光標移動鍵,就必須使vi處於命令模式。

2,當vi編輯器處於命令模式時,大部分命令在按下鍵時就會啟動,因此不需要使用回車鍵來指明命令行的結束。

vi的光標移動鍵鍵 功能

    h或[←] 將光標向左移動一位

    j 或[↓] 將光標向下移動一位

    k或[↑] 將光標向上移動一位

    l 或[→] 將光標向右移動一位

    $ 將光標移到當前行的行尾

    w 將光標向右移動一個字

    b 將光標向左移動一個字

    e 將光標移到字尾

    0(零) 將光標移到當前行的行首

    [Reuturn]鍵 將光標移到下一行的行首

    [Spacebar]鍵 將光標向右移動一位

    [Backspace]鍵 將光標向左移動一位

  命令模式下vi編輯器的文本修改鍵

    鍵 功能

    x 刪除光標位置指定的字符

    dd 刪除光標所在的行

    u 撤銷最近的修改

    U 撤銷對當前行做的所有修改

    r 替換光標位置上的一個字符

    R 替換從光標位置開始的字符,同時改變vi到文本輸入模式

    .(點) 重復上一次的修改

三、文本輸入模式

  切換到文本輸入模式的命令鍵

    命令鍵 功能

    i 在光標左側輸入正文

    I 在光標所在行的開頭輸入正文

    a 在光標右側輸入正文

    A 在光標的所在行的未尾輸入正文

    o 在光標所在行的下一行增添新行,並且光標位於新行的開頭

    O 在光標所在行的上一行增添新行,並且光標位於新行的開頭

  關閉文件

    ● 按[Esc]鍵,確保vi處於命令模式。

    ● 輸入 : 將提示符放到屏幕底部的狀態行上。

    ● 輸入q![Return],該命令不保存改變並退出vi。按[!]鍵表示確認放棄修改。

  當vi處於文本編輯器模式時[Return]的使用:

    ● 如果光標在行尾,光標的右邊沒有文本按[Return]鍵將會在當前行的下面添加一個空行

    ● 如果光標正好在當前行的第一個字符上,按[Return]鍵將會在當前行的上面添加一空行

    ● 如果光標在本行的其他位置,並且它的右邊有文本,按[Return]鍵會把該行分成兩行

  編輯多個文件

    ● 編輯另一個文件:vi 可能同時打開多個文件,另一種方法是用:e(edit)

    ● 讀另一個文件 :在vi編輯器命令模式下,輸入:r,後面跟文件名,並按[Return]鍵,:r命令將指定文件的副本放到緩沖區中光標位置之後。指定的文件成為當前文件的一部分。

    ● 寫入另一個文件:vi編輯器允許用戶將當前編輯文件的一部分寫(保存)到另一個文件中。首先,用戶需要指出希望保存的行的範圍,然後用重排文本

  vi編輯器的剪切和粘貼鍵

    鍵 功能

    d 刪除指定位置的文本,並保存到臨時緩沖區中。

    y 復制指定位置的文本到臨時緩沖區。

    P 將指定緩沖區的內容放到當前光標位置之上

    p 將指定緩沖區的內容放到當前光標位置之下

    c 刪除文件並使vi進入文本輸入模式,這是刪除和插入命令的組合

  vi操作符的域

    部分vi域控制鍵

    域 功能

    $ 標識域為從光標位置開始到當前行尾

    0(零) 標識域為從光標位置前到當前行首

    e或w 標識域為從光標位置開始到當前字尾

    b 標識域為從光標位置前到當前字首

四、命令的組合使用

  在unix中許多的命令是可以組合使用的,這樣就顯出了 unix的強大之處。下面就列一些常用基本的文本處理的組合命令

  ◎使用刪除操作符和域控制鍵

    ★實例1:刪除從光標位置開始到當前行尾的文本,按d$

    ★實例2:刪除從光標位置之前到當前行首的文本,按d0

    ★實例3:刪除從光標位置後的一個字,按dw

    ★實例4:刪除光標位置後的多個字(例如,3個字),按3dw

    ★實例5:刪除到字尾,按de

    ★實例6:刪除到前一個字的字首,按db

  ◎使用移出操作符和域控制鍵

    ★實例1:復制從當前光標位置開始到當前行尾的文本,按y$

    ★實例2:復制從當前光標位置開始到當前行首的文本,按y0

  ◎使用修改操作符和域控制鍵

    修改操作符c可以同時刪除和移出操作符一樣使用域控制鍵。c操作符與其他操作符不同的是它將vi從命令模式轉換到文本輸入模式。

    Vi編輯器的某些版本用一個標誌來標記將被刪除的最後一個字符。這個標誌通常是美元符($),它覆蓋將被刪除的最後一個字符。

    ★ 實例:使用修改操作符和域控制鍵來修改一個字,按cw.

五、在vi中使用緩沖區

  ● 數字編號緩沖區:vi編輯器使用9個臨時緩沖區,編號從1到9。每次刪除或復制的文本都放在這些緩沖區中,用戶指定緩沖區號就可以訪問任何一個緩沖區。每次新刪除或復制的文本替換緩沖區以前的內容。這意味著緩沖區1總是保留最近被修改的內容。

  用put操作符,並在它前面加上緩沖區號就可以找回數字編號緩沖區的內容。指定緩沖區的格式可以表示為:

  雙引號+n(其中,n是緩沖區號,取1到9)+(p或P)

  ● 字母編號緩沖區:vi編輯器還使用26個命名緩沖區,這些緩沖區用小寫字母a到z來命名。用戶通過指定緩沖區我名字引用它們。這些緩沖區同數字緩沖區類似,不同之處在於,每次用戶在文件中刪除或移出文本時,vi編輯器不自動改變緩沖區的內容。用戶可以將刪除或復制的文本存到指定的緩沖區,然後用put操作符將指定緩沖區的文本復制到文件的其他地方。

  實例:完成下列操作,練習使用命令對指定的緩沖區進行操作。

    □ 輸入”wdd,刪除當前行,將它的副本保存到緩沖區w”。

    □ 輸入”wp,將緩沖區w的內容復制到光標位置”。

    □ 輸入”z7yy,復制7行到緩沖區z”。

    □ 輸入”zp,將緩沖區z的內容(7行)復制到光標位置”。

註意:1.這些命令不會顯示在屏幕上。

   2.字母編號緩沖區用小寫字母a到z命名

   3.使用這些命令不需要按[Return]鍵。

六、光標定位鍵

  vi的翻頁鍵

    鍵           功能 

    [Ctrl-d] 將光標向下移動到文件尾,通常每次移動12行

    [Ctrl-u] 將光標向上移動到文件頭,通常每次移動12行

    [Ctrl-f] 將光標向下移動到文件尾,通常每次移動24行

    [Ctrl-b] 將光標向上移動到文件頭,通常每次移動24行

  定位光標:使用的G命令,前面加上希望光標將位於的行號。

    實例:完成下列操作,使第1000行成為當前行。

    □ 輸入1000G,將光標移到第1000行上。

    □ 輸入1G,將光標移到第1行上。

    □ 輸入G,將光標移到文件尾。

  另一種有用的命令是[Ctrl-g],它告訴用戶當前行號。例如,在命令模式下按[Ctrl-g]鍵,vi編輯器顯示類似於以下的信息:

  “myfirst”line 30 of 90 – 30%

七、設置vi的環境

  部分vi環境選項

  選項      縮寫    功能

  autoindent ai 將新行與前一行的行首對齊

  ignorecase ic 在搜索選項中忽略大小寫

  magic 允許在搜索時使用特殊字符

  number nu 顯示行號

  report 通知用戶上一個命令影響的行號

  scroll 設定[Ctrl-d]命令翻動的行數

  shiftwidth sw 設置縮進的空格數,與autoindent選項一起使用

  showmode smd 在屏幕的右角顯示vi編輯器的模式

  terse 縮短錯誤信息

  wrapmargin wm 設置右邊界為指定的字符數

八、行長和行回繞

   用戶的終端通常有80列。當輸入文本到達行尾時,開始一個新行。

   wrapmargin選項:當用戶輸入文本到達距右邊界指定的字符數時,wrapmargin選項使vi編輯器斷開輸入的文本。例如,要設置wrapmargin為10(其中10為距離屏幕右邊界的字符數),輸入:set wrapmargin=10並按[Return]鍵。則輸入到達70列時,vi編輯器開始新行。就如同用戶按了[Return]鍵一樣了。

   wrapmargin選項的默認值是0(零)。要關閉wrapmargin選項,輸入:set wrapmargin=0並按[Return]鍵

九、縮寫和宏

  vi編輯器為用戶提供一些捷徑使輸入更簡單,:ab和:map兩個命令就起這個作用。

   ● 編寫操作符:ab(abbreviateion)命令可以給任何字符指定縮寫。

    例如,要縮寫經常在本書中使用的UNIX Operating System為uno,輸入:ab uno UNIX Operating System.如果uno是另一字的一部分,如unofficial,,則不會發生擴展。

    要取消縮寫,使用unab(unabbreviate)操作符。例如,要取消uno縮寫,輸入:unab uno並按[Return]鍵。

   ● 宏操作符(map)可以指定單個鍵代表鍵序列,

    例如,要指定命令5dd(刪除5行)為q,輸入: map q 5dd並按[Return]鍵。

    用戶也可以在map命令中指定終端的功能鍵。在這種情況下,輸入#n作為鍵名,其中n指功能鍵號。例如,將5dd指定給[F2]鍵,vi刪除5行文本。

十、最後的vi命令――1運行shell命令

  用戶可以在vi命令行中運行UNIX的shell命令。這一方便的特性允許用戶暫時將vi編輯器放在一邊,轉而執行shell命令。!(驚嘆號)提示vi下一個命令是UNIX的shell命令。如果需要,用戶也可以查看shell命令的執行結果並將其加入到文本中。使用: r(read)命令後面跟!,可將命令的結果插入到編輯文件中。

  實例:下面的命令序列顯示!的使用方式。

    □ 輸入: ! ls

    □ 輸入: ! who

    □ 輸入: !date

    □ 輸入: !pwd

    □ 輸入: r ! date

    □ 輸入:r ! cal 1 2005

    □ 輸入:r ! vi mylast

  2行連接

  使用J命令連接兩行。J命令將當前行下面的一行連接到當前行上,放到光標位置之後。如果兩行連接產生一個長行,vi將其按屏幕進行折行。

  實例:完成下列操作即可連接兩行。

    □ 使用光標移動鍵將光標放在第一行行尾。

    □ 按J鍵,vi將當前行下面的一行連到當前行上。

  3搜索和替換

   vi的搜索命令(/和?)

  實例:下面的命令序列演示vi的搜索和替換功能

    □ 輸入:/UNIX並按[Return]鍵,向下搜索找到第一個UNIX。

    □ 輸入cwunix並按[Return]鍵,將UNIX替換為unix/

    □ 輸入n,找到下一個UNIX。

  4文件恢復選項

    用-r選項啟動vi編輯器崩潰時正在編輯的文件。例如,下面的命令可以恢復myfirst

    $ vi –r myfirst [Return]…………………………………啟動vi的恢復選項

    如果不提供文件名進行編輯,或不記得當時編輯的文件名,可輸入vi –r命令

    $ vi –r [Return]

vi 有三種模式:命令模式;插入模式;末行模式。
  打開編輯器默認就是命令模式,可以通過輸入命令進入插入模式,從插入模式返回命令模式要按Esc鍵,在命令模式下輸入 :(冒號)切換到末行模式。

插入相關命令:
  ? a //在光標後插入文本
  ? i //在光標前插入文本
  ? o //在當前行下面插入一行
  ? O //在當前行上面插入一行
  ? I //在當前行開頭插入文本
  ? A //在當前行末尾插入文本


光標移動相關命令:
  ? Home //移動到光標所在行的最前面
  ? End //移動到光標所在列的最後面
  ? b //移動到下個字的第一個字母
  ? w //移動到上個字的第一個字母
  ? H //移動到屏幕的第一列
  ? M //移動到屏幕的中間列
  ? L //移動到屏幕的最後列
  ? fx //向右移動到x字符上
  ? Fx //向左移動到x字符
  ? Pageup //向上翻頁
  ? Pagedown //向下翻頁
  ? shift+g // 跳到文件尾
  ? ddp //和下一行交換


刪除相關命令:
  ? x //刪除光標所在處的一個字符
  ? dw //刪除光標所在處向後的一個單詞
  ? D //刪除光標處至行尾的所有字符
  ? dd //刪除光標所在行,可以加數字表示要刪除的行數


替換命令:
  ? r //替換光標所在處的一個字符
  ? R //向右連續替換
  ? cw //替換光標向右的一個單詞


查找命令:
  ? /ac //向光標下文查找ac,按n向下查找下一個按N回到上一個
  ? ?ac //向光標上文查找ac,按n向上查找下一個按N回到上一個


復制與粘貼相關命令:
  ? yw //將光標向右一個單詞拷入剪貼板
  ? y$ //將光標至行尾的字符拷入剪貼板
  ? yy //將當前行拷入剪貼板
  ? p // 將剪貼板中的內容粘貼在光標後


文件保存及退出相關命令:
  ? :q // 不保存退出
  ? :q! // 不保存強制性退出
  ? :w //保存編輯不退出
  ? :wq //保存並退出
  ? :wq! //強制保存退出

本文來自:

Stone.Wang的博客

http://blog.sina.com.cn/stonestore

Vi編輯器入門