【轉】一起來說 Vim 語

作爲一款古老而具有持久生命力的編輯器,Vim 自有它的強大之處。很多人覺得 Vim 的學習曲線太陡峭了,爲了能夠把 Vim 用得風生水起,不得不記憶大量的命令。如果你是 Vim 新手,剛入門就開始面對着浩如煙海的命令逐條學習,我相信你一定會逐漸失去對它的興趣。其實,Vim 以一種近乎自然語言的方式幫助你完成文本的編輯工作。只需要熟悉幾條簡單的語法,你就會坐在旋轉座椅上前後打轉,感慨美妙的生活又回來了。

我們假設你已經瞭解了 Vim 的幾種常用的工作模式(正常模式、插入模式、命令模式等),如果你還不瞭解,請先閱讀 這裏。現在就讓我們一起來學習一下 Vim 語吧。


動詞

動詞代表了我們打算對文本進行什麼樣的操作。例如:

  • d 表示刪除(delete)
  • r 表示替換(replace)
  • c 表示修改(change)
  • y 表示複製(yank)
  • v 表示選取(visual select)

名詞

名詞代表了我們即將處理的文本。Vim 中有一個專門的術語叫做文本對象(text object),下面是一些文本對象的示例:

  • w 表示一個單詞(word)
  • s 表示一個句子(sentence)
  • p 表示一個段落(paragraph)
  • t 表示一個 HTML 標籤(tag
引號或者各種括號所包含的文本稱作一個文本塊。

介詞

介詞界定了待編輯文本的範圍或者位置。例如:

  • i 表示“在...之內”(inside)
  • a 表示“環繞...”(around)
  • t 表示“到...位置前”(to)
  • f 表示“到...位置上”(forward)

下面是幾個有關範圍的示意圖,你們感受一下:

https://dn-linuxcn.qbox.me/data/attachment/album/201511/19/234935avgyfghvtfyheshz.png

組詞爲句

有了這些基本的語言元素,我們就可以着手構造一些簡單的命令了。文本編輯命令的基本語法如下:

  1. 動詞 介詞 名詞

下面是一些例子(如果熟悉了上面的概念,你將會看到這些例子非常容易理解),請親自在 Vim 中試驗一番。

  1. # 刪除一個段落: delete inside paragraph
  2. dip
  3. # 選取一個句子: visual select inside sentence
  4. vis
  5. # 修改一個單詞: change inside word
  6. ciw
  7. # 修改一個單詞: change around word
  8. caw
  9. # 刪除文本直到字符“x”(不包括字符“x”): delete to x
  10. dtx
  11. # 刪除文本直到字符“x”(包括字符“x”): delete forward x
  12. dfx

數詞

數詞指定了待編輯文本對象的數量,從這個角度而言,數詞也可以看作是一種介詞。引入數詞之後,文本編輯命令的語法就升級成了下面這樣:

  1. 動詞 介詞/數詞 名詞

下面是幾個例子:

  1. # 修改三個單詞:change three words
  2. c3w
  3. # 刪除兩個單詞:delete two words
  4. d2w

另外,數詞也可以修飾動詞,表示將操作執行 n 次。於是,我們又有了下面的語法:

  1. 數詞 動詞 名詞

請看示例:

  1. # 兩次刪除單詞(等價於刪除兩個單詞): twice delete word
  2. 2dw
  3. # 三次刪除字符(等價於刪除三個字符):three times delete character
  4. 3x

怎麼樣,是不是很容易理解?

來源:簡書    原文:http://www.jianshu.com/p/a361ce8c97bc            作者: song4
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章