1. 程式人生 > >vim編輯器的使用詳解

vim編輯器的使用詳解

在Linux江湖,最常用到的編輯器非vim莫屬,vim的功能很強大。

1.   vim簡介

在Linux世界中,最長用到的而且功能比較強大的是Vim編輯器。Vim編輯器是在記憶體緩衝區中處理資料。

vim 檔名 or vi 檔名

都可以通過vim開啟檔案

一般vim開啟檔案功能更多一些,特別是對於shell指令碼這種文字,會有不同字元的高亮顯示。

 

如果啟動vim時未指定檔名,或者指定的檔名不存在,vim會開闢一段新的緩衝區域來編輯。

vim /etc/passwd

 

 

vim tt 

 

 

2   vim模式介紹

vim編輯器有兩種模式:

  1. 普通模式
  2. 插入模式

2.1   普通模式

當剛開啟要編輯的檔案或新建一個檔案時,vim首先進入的是普通模式。在普通模式中,vim會將案件解釋程命令。

在普通模式下,可以用方向鍵在文字區域移動游標。vim有用來移動游標的命令:

h:左移一個字元

j:下移一行(文字的下一行)

k:上移一行(文字的上一行)

l:右移一個字元

 

PageDown(或Ctrl+F):下翻一屏

PageUp(或Ctrl+B):上翻一屏

G:移動到緩衝區的最後一行

num G:移動到緩衝區的第num行

gg:移動到緩衝區的第一行

2.2   普通模式的命令列模式

Vim編輯器在普通模式下有個特特別的功能叫命令列模式。命令列模式提供了一個互動式命令列,可以輸入額外的命令來控制vim的行為。要進入命令列模式,在普通模式下按下冒號鍵”:”,游標會移動到訊息航,然後出現冒號,等待輸入命令。

在命令列模式下有幾個命令時可以退出緩衝區:

:q  如果未修改緩衝區資料,退出。

:q! 取消所有對緩衝區資料的修改並退出。

:w filename 將檔案儲存到另一個檔案中。

:wq 將緩衝區資料儲存到檔案中並退出

 

3   編輯資料

在普通模式,輸入i,就會進入到插入模式,然後就可以編輯和資料的插入。如圖:

 

 

在普通模式下,vim提供了一些命令來編輯緩衝區中的資料。

命令

描述

x

刪除當前游標所在位置的字元

dd

刪除游標所在的行

dw

刪除當前游標所在的單詞

d$

刪除當前游標所在位置至行尾的內容

J

刪除當前游標所在行行尾的換行符(拼接符)

u

撤銷前一編輯命令

a

在當前游標後追加資料

A

在當前游標所在行尾追加資料

r char

用char替換當前游標所在位置的單個字元

R text

用text覆蓋當前游標所在位置的資料,知道按下ESC鍵

 

4   複製和貼上

vim在刪除資料時,實際上會將資料儲存在單獨的一個暫存器中。可以用p命令取回資料。而複製操作在vim中是y(代表yank),可以在y後面使用和d命令相同的第二字元(yw代表複製一個單詞,y$代表複製到行尾)。複製文字後,把游標移動到希望放置文字的地方,輸入p命令,複製的檔案就會出現在該位置。

複製的過程你無法知道自己到底複製了多少內容,知道粘貼後才明白複製的內容是什麼,可視模式可以解決這個問題,可視模式會在你移動游標時就高亮顯示需要複製的文字的內容。要進入可視模式,將游標移動到開始複製的位置,然後按下v鍵,你會注意到游標所在位置的文字已經被高亮顯示。下一步,移動游標來覆蓋希望複製的文字,高亮顯示會覆蓋所有你移動的行文字,然後按下y鍵進行復制,暫存器中已經有了要複製的文字,將游標移動到希望放置文字的位置,使用p鍵來貼上,這樣就完成了複製貼上操作。

 

 

 選中後輸入 y複製,然後選擇需要貼上的地方,輸入p貼上

如圖:

 

 然後就複製成功貼上了!

5   查詢和替換

5.1   查詢

   在vim中可以通過按下斜線(/)鍵。游標會跑到訊息航,然後vim會顯示出斜線,然後輸入需要查詢的關鍵字元,按下回車鍵,vim會在文字中查詢要查詢的文字。

通常會出現三種迴應:

  1. 如果要查詢的文字出現在游標當前位置之後,則游標會跳轉到該文字出現的第一個位置。
  2. 如果要查詢的文字未在游標當前位置之後出現,而且在之前出現,則游標會染過檔案末尾,出現在該文字所在的第一個位置(並用一條訊息指明)
  3. 輸出一條錯誤訊息,說明在檔案中沒有找到要查詢的文字。

如果要繼續查詢同一個單詞,按下斜線,然後按回車,揮著使用n鍵,表示下一個(next).

 

 

5.2   替換

替換命令允許你快速的用一個單詞來替換文字中的另一個單詞。必須進入命令模式才能使用替換命令。替換命令的格式:

:s/old/new

Vim會跳到old第一次出現的地方,並用new來替換。

對這個命令進行一些修改可以替換多處文字:

:s/old/new/g    可以替換掉第一行出現的所有old,替換成new.

:n,ms/old/new/g  替換行號n和m之間的所有old

:%s/old/new/g   替換整個檔案中的所有old   最常用到

:%s/old/new/gc  替換整個檔案中的所有old,但在每次出現時提示。