linux/unix vi 編輯器用法詳解

來源:互聯網
上載者:User

   vi命令是unix下常用而重要命令,可在全螢幕方式下編輯一個或多個檔案。若在vi執行時沒有指定一個檔案,那麼vi命令會自動產生一個無名的空的工作檔案。若指定的檔案不存在,那麼就按指定的檔案名稱建立一個新的檔案。若對檔案的修改不儲存的話,v i命令並不改變原來檔案的內容。

  注意:vi命令並不鎖住所編輯的檔案,因此多個使用者可能在同時編輯一個檔案,那麼最後儲存的檔案版本將被保留。

  下面是vi命令使用的一些選項及含義:

  -c sub-command 在對指定的檔案編輯前,先執行指定的命令 sub-command .

  -r filename 恢複指定的檔案filename .

  -R 將指定的檔案以唯讀方式放入編輯器中,這樣不會儲存對檔案的任何修 改。

  -y number 將編輯視窗的大小設為number行。

  下面是vi編輯所處的三種模式:

  .命令模式 進入vi時所處的模式。在此模式下使用者可輸入各種子命令對進行*作,如刪除行、粘貼行、移向下一個字、移向不同行等。

  .文本輸入模式 在此模式下可以修改一行的內容並增添新行。在命令模式下鍵入a 、i 或c鍵可進入文本輸入模式,按Escape鍵可返回命令模式。

  .命令項模式 在此模式下,可以通過子命令輸入更多的參數。如:w子命令要求輸入一檔案名稱,“/”子命令要求輸入一個尋找項。使用者使用Escape鍵返回命令模式。

  下面是自命令模式下執行的,在同一行上移動的自命令:

  h 將游標左移一格。

  l 將游標右移一格。

  j 將游標下移一格。

  k 將游標上移一格。

  w 將游標移到下一個小字的前面。

  W 將游標移到下一個大字的前面。

  b 將游標移到前一個小字的前面。

  B 將游標移到前一個大字的前面。

  e 將游標移到下一個小字的後面。

  E 將游標移到前一個大字的後面。

  fc 把游標移到同一行的下一個c字元處。

  Fc 把游標移到同一行的前一個c字元處。

  tc 把游標移到同一行的下一個字元c的前一格。

  Tc 把游標移到同一行的前一個字元c的後一格。

  number| 把游標移到遞number列上。

  下面是命令模式下在行間移動的子命令:

  +或Enter 把游標移至下一行第一個非空白字元。

  - 把游標移至上一行第一個非空白字元。

  0 把游標移到當前行的第一個字元處。

  $ 把游標移到當前行的最後一個字元處。

  H 把游標移到螢幕最頂端一行。

  L 把游標移到螢幕最底端一行。

  M 把游標移到螢幕中間。

  下面是命令模式下改變螢幕顯示的子命令:

  z- 把當前行作為螢幕的最後一行,並重新顯示螢幕。

  z. 把當前行作為螢幕的中間一行,並重新顯示螢幕。

  Ctrl+l 重新顯示螢幕當前內容。

  /pattern/z- 尋找pattern的下一個位置,並把所在行設為螢幕的最後一行。

  下面是在命令模式下用來顯示頁面的子命令:

  Ctrl + f向後滾一頁。

  Ctrl + d向後滾半頁。

  Ctrl + b向前滾一頁。

  Ctrl + u向前滾半頁。

  Ctrl + e螢幕向下滾一行。

  Ctrl + y螢幕項上滾一行。

  下面是在命令模式下用來尋找字串所使用的子命令:

  /pattern 向後尋找指定的pattern ,若遇到檔案尾,則從頭再開始。

  ?pattern 向前尋找指定的pattern ,若遇到檔案頭,則從尾再開始。

  n 在上次指定的方向上,再次執行上次定義的尋找。

  N 在上次指定的方向的相反方向上,再次執行上次定義的尋找。

  /pattern/+number 將游標停在包含pattern的行後面第number行上。

  /pattern/-number 將游標停在包含pattern的行前面第number行上。

  % 移到匹配的“()”或“{}”上。

  下面是在文本輸入模式下用來輸入文本的子命令(使用者可在任何時候按Escape返回到命令模式):

  a 在游標之後開始輸入文本。

  A在行尾開始輸入文本。

  i在游標之前開始輸入文本。

  I在行首第一個非空白字元前輸入文本。

  o在游標所在行後插入一空行。

  O在游標所在行前插入一空行。

  下面是在命令模式下改變文本所使用的子命令(使用者可在任何的時候按Escape鍵返回到命令模式):

  cc或S 修改一整行。

  C 改變一行游標位置以後的部分。

  cw 改變游標所在單詞。

  dd刪除當前行。

  D 刪除游標所在行游標後面的內容。

  dw刪除游標所在的單詞。

  J 把下一行內容加到本行行尾。

  rc把光符所在字元替換成c .

  R 覆蓋本行內容。

  u恢複上一次的修改。

  x刪除游標所在的字元。

  ~ 改變游標所在出字元的大小寫。

  . 重複上一個*作。

  <<把當前行移到左邊。

  >>把當前行移到右邊。

  下面是用於檔案中拷貝文本的字命令:

  p 將緩衝區內容取到游標所在行的下面一行。

  P 將緩衝區內容取到游標所在行的上面一行。

  “bd 將文本刪除至有名緩衝區b .

  “bp 張貼有名緩衝區b中內容。

  yy把當前行放入緩衝區。

  Y 把當前行放入緩衝區。

  Yw把游標所在的單詞放入緩衝區。

  :g//d, 刪除匹配的所有行

  下面是用於儲存檔案的子命令:

  :w 回寫修改後的檔案。

  :w filename 當filename不存在時,把修改後的檔案存為檔案filename ,當檔案filename存在時,報錯。

  !w filename 如果檔案filename存在時,把修改後的檔案儲存為檔案filename .

  下面列出了在vi編輯的多個檔案之間切換所用的子命令:

  :n開始編輯vi啟用的檔案清單中的下一個檔案。

  :n filenames 指定將被編輯的新的檔案清單。

  下面列出了用於在當前檔案和另外一個檔案間切換的子命令:

  :e filename 使用filename啟用vi (在vi中裝入另一個檔案filename)。

  e!重新裝入當前檔案,若當前檔案有改動,則丟棄以前的改動。

  :e+filename 使用filename啟用vi ,並從檔案尾部開始編輯。

  :e+number filename 使用filename啟用vi ,並在第number行開始編輯。

  :e# 開始編輯另外一個檔案。

  下面是在本檔案中加入其他檔案代碼所使用的子命令:

  :r filename讀取filename檔案,並將其內容加到當前檔案後。

  :r ! command執行command檔案,並將其輸出加到當前檔案後。

  下面是vi中其他的子命令:

  ctrl+g 取得正在編輯檔案的有關資訊。

  :sh啟動sh ,從sh中返回可用exit或ctrl+d .

  :! Command 執行命令command .

  !!重新執行上次的:! Command子命令。

  :q退出vi ,若使用者對編輯的檔案有所修改,系統不會讓使用者使用q命令退出。

  :q!退出vi而不管是否對檔案有改動。

  ZZ或:wq 儲存對檔案的修改並退出vi .

  使用者可在一個特殊的檔案.exrc中定義特殊的vi命令。在vi中使用這些命令時,必須在該命令前加上一個冒號( :)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.