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編輯器有兩種模式:
- 普通模式
- 插入模式
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會在文字中查詢要查詢的文字。
通常會出現三種迴應:
- 如果要查詢的文字出現在游標當前位置之後,則游標會跳轉到該文字出現的第一個位置。
- 如果要查詢的文字未在游標當前位置之後出現,而且在之前出現,則游標會染過檔案末尾,出現在該文字所在的第一個位置(並用一條訊息指明)
- 輸出一條錯誤訊息,說明在檔案中沒有找到要查詢的文字。
如果要繼續查詢同一個單詞,按下斜線,然後按回車,揮著使用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,但在每次出現時提示。