高效使用Vim編輯器--Vim編輯器常用命令學習筆記

li27z發表於2016-10-30

熟練掌握Vim編輯器的常用命令能大大提高我們文字編輯的效率。

基本操作

我們最初接觸Vim編輯器時,首先學到的不乏以下一些操作:

剛進入Vim編輯器時,我們處於普通模式,在鍵盤上按下i,我們便進入插入模式。在插入模式下,如果按下Esc,則又回到普通模式。
這裡寫圖片描述

在插入模式下,我們可以鍵入文字。

在普通模式下,我們則可以利用一些命令來快捷操作我們的文字,如:

x : 刪除當前游標所在的一個字元

:wq : 儲存並退出 (:w 儲存,:q 退出,且以:開始的命令需要輸入回車)

dd : 刪除當前行,並把刪除的行儲存到剪貼簿裡

p : 貼上剪貼簿裡的內容

h(向左)、j(向下)、k(向上)、l(向右)移動游標,當然,我們還可以利用↑、↓、←、→來移動

這裡寫圖片描述

更進一步

在瞭解了Vim編輯器的基本操作後,我們需要學習更多的命令來更進一步。

1.不同的插入模式

i : 在游標所在位置插入

a : 在游標所在位置後插入

o : 在當前行後插入一行新行

O : 在當前行前插入一行新行

cw : 把游標所在位置到下一個單詞之前的內容刪掉,並進入插入模式

示例:cw命令

游標當前位置
這裡寫圖片描述

使用cw命令後
這裡寫圖片描述

2.快速移動游標
想要快速移動游標提高效率,我們移動游標的操作應不僅限於h、j、k、l / ↑、↓、←、→。

0(數字零) : 移動到行頭

^ : 移動到本行第一個不是blank字元的位置

$ : 移動到本行行尾

g_ : 移動到本行最後一個不是blank字元的位置。

/要查詢的字串 : 查詢字串(如果搜尋出多個匹配,可按n鍵移動到下一個)

示例:查詢字串

在開啟的文字中查詢 Thread 字串,命令為 /Thread
這裡寫圖片描述

查詢到的結果會高亮顯示,我們可以按n鍵移動到下一個匹配(:nohl命令取消高亮顯示)
這裡寫圖片描述

3.複製/貼上

p/P : 貼上(p與P的區別在於,p是貼上到當前位置之後,P是貼上到當前位置之前)

yy : 複製當前行的內容

4.撤銷/恢復

u : undo,撤銷之前的操作

Ctrl+r : redo,恢復之前的操作

5.檔案的開啟/儲存/退出

:e filename : 在 Vim 編輯器裡開啟一個檔案

:saveas filename : 另存為

:x,ZZ 或 :wq : 儲存並退出 (ZZ不需要輸入冒號並回車)
:x和:wq的區別在於:wq會強制性寫入檔案並退出,即使檔案沒有被修改也強制寫入,並更新檔案的修改時間

:q! : 退出不儲存 
:qa! : 強行退出所有的正在編輯的檔案,就算別的檔案有更改

:bn 和:bp : 當Vim同時開啟很多檔案時,可以使用這兩個命令來切換到下一個或上一個檔案

示例:開啟多個檔案

首先在命令列使用命令 vim Thread.cc 在Vim編輯器開啟檔案Thread.cc
這裡寫圖片描述

在Vim普通模式下,輸入:e ./Atomic.h,就開啟了當前目錄下的檔案Atomic.h
這裡寫圖片描述

這裡寫圖片描述

提高效率

1.重複操作
有些情況下,我們需要對某一操作重複執行多次,譬如刪除多行、多次輸入同一文字行……那麼Vim是怎樣重複操作的呢?

一種方式是按下.,就會重複上次的命令;
另一種方式是 n+command ,在執行某命令之前輸入想執行的次數n,該命令便會執行n次。

示例:
2dd : 刪除2行

4p : 貼上文字4次

10ilove<Esc> : 會寫入“lovelovelovelovelovelovelovelovelovelove”(命令中的i是指切換到插入模式)
這時按下 . ,會再寫入10次“love”

2.更快地移動游標
除了上面我們介紹的一些快速移動游標的命令外,還有一些更快速、移動範圍更大的游標移動命令值得我們瞭解。

gg : 移動到文字開頭

G : 移動到文字末尾

n+G:n :移動到第n行

w : 按單詞移動,移動到下一個單詞的開頭

e : 按單詞移動,移動到下一個單詞的末尾

我們要著重介紹的是下面兩個游標移動命令:

% : 匹配括號移動,包括 (, {, [. (使用前你需要把游標先移到括號上)

* 和 # : 匹配游標當前所在的單詞,移動游標到下一個(或上一個)匹配的位置(*是下一個,#是上一個)

示例:使用 % 來匹配括號移動
首先將游標移動到某一括號上
這裡寫圖片描述

按下 % ,可以看到游標移動到該括號匹配的括號處
這裡寫圖片描述

示例:使用 * 來匹配單詞並在單詞間移動
使用前,我們需要將游標移動到某一單詞上,我們移動到 Thread 上
這裡寫圖片描述

然後按下 * ,可以看到 Thread 所有的匹配都高亮顯示了,我們可以繼續按下 * 移動到下一個匹配
這裡寫圖片描述

3.命令的組合使用
我們可以利用學到的游標移動命令,與其他命令組合使用,從而實現高效的編輯,例如下面游標移動與複製命令的組合使用:

(1)0y$ 命令意味著:

0 → 先到行頭
y → 從這裡開始拷貝
$ → 拷貝到本行最後一個字元

(2)ye 命令則意味著從當前位置拷貝到本單詞的最後一個字元

(3)還可以輸入 y2/foo 來拷貝2個 “foo” 之間的字串

示例:在開啟的文字里使用命令 y2/Thread
紅框標識了游標的當前位置和鄰近的兩個“Thread”字串的位置
這裡寫圖片描述

執行命令 y2/Thread
這裡寫圖片描述

將游標移到空白行,按下貼上操作 p ,看看複製了什麼內容
這裡寫圖片描述

4.自動補全
例如:我們想輸入 Thread ,當我們鍵入單詞的開頭,再按下Ctrl+p或者Ctrl+n,就能進入自動補全的選擇了。
這裡寫圖片描述

5.視覺化選擇
普通模式下按下 v、V或者Ctrl+v會進入可視模式。在可視模式下,隨著游標的移動,可以選中行、塊、區域。
這裡寫圖片描述

一旦選好了,我們就可以執行一些操作了,例如之前介紹的y複製、d刪除,另外還有下面介紹的一些操作

J : 把所有選中的行連線起來(變成一行)

< 或 > : 向左或右縮排

= : 自動縮排

gu : 變小寫

gU : 變大寫

示例:選中幾行內容,將其都變為大寫
進入可視行,選中內容
這裡寫圖片描述

執行命令 gU
這裡寫圖片描述


參考資料:
酷殼-簡明 Vim 練級攻略:http://coolshell.cn/articles/5426.html

相關文章