做爲一款古老而具備持久生命力的編輯器,Vim 自有它的強大之處。不少人以爲 Vim 的學習曲線太陡峭了,爲了可以把 Vim 用得風生水起,不得不記憶大量的命令。若是你是 Vim 新手,剛入門就開始面對着浩如煙海的命令逐條學習,我相信你必定會逐漸失去對它的興趣。其實,Vim 以一種近乎天然語言的方式幫助你完成文本的編輯工做。只須要熟悉幾條簡單的語法,你就會坐在旋轉座椅上先後打轉,感慨美妙的生活又回來了。html
咱們假設你已經瞭解了 Vim 的幾種經常使用的工做模式(正常模式、插入模式、命令模式等),若是你還不瞭解,請先閱讀這裏。如今就讓咱們一塊兒來學習一下 Vim 語吧。vim
動詞表明瞭咱們打算對文本進行什麼樣的操做。例如:編輯器
d
表示刪除(delete)ide
r
表示替換(replace)學習
c
表示修改(change)spa
y
表示複製(yank).net
v
表示選取(visual select)code
名詞表明瞭咱們即將處理的文本。Vim 中有一個專門的術語叫作文本對象(text object),下面是一些文本對象的示例:htm
w
表示一個單詞(word)對象
s
表示一個句子(sentence)
p
表示一個段落(paragraph)
t
表示一個 HTML 標籤(tag)
引號或者各類括號所包含的文本稱做一個文本塊。
介詞界定了待編輯文本的範圍或者位置。例如:
i
表示「在...以內」(inside)
a
表示「環繞...」(around)
t
表示「到...位置前」(to)
f
表示「到...位置上」(forward)
下面是幾個有關範圍的示意圖,大家感覺一下:
有了這些基本的語言元素,咱們就能夠着手構造一些簡單的命令了。文本編輯命令的基本語法以下:
動詞 介詞 名詞
下面是一些例子(若是熟悉了上面的概念,你將會看到這些例子很是容易理解),請親自在 Vim 中試驗一番。
# 刪除一個段落: delete inside paragraph dip # 選取一個句子: visual select inside sentence vis # 修改一個單詞: change inside word ciw # 修改一個單詞: change around word caw # 刪除文本直到字符「x」(不包括字符「x」): delete to x dtx # 刪除文本直到字符「x」(包括字符「x」): delete forward x dfx
數詞指定了待編輯文本對象的數量,從這個角度而言,數詞也能夠看做是一種介詞。引入數詞以後,文本編輯命令的語法就升級成了下面這樣:
動詞 介詞/數詞 名詞
下面是幾個例子:
# 修改三個單詞:change three words c3w # 刪除兩個單詞:delete two words d2w
另外,數詞也能夠修飾動詞,表示將操做執行 n 次。因而,咱們又有了下面的語法:
數詞 動詞 名詞
請看示例:
# 兩次刪除單詞(等價於刪除兩個單詞): twice delete word 2dw # 三次刪除字符(等價於刪除三個字符):three times delete character 3x
怎麼樣,是否是很容易理解?