Vim 科普之用 text objects 高效編輯[視頻]

Vim 科普之用 text objects 高效編輯[視頻]

來自專欄玩轉 vim 與 Terminal (視頻)44 人贊了文章

今天講下 vim 的文本對象(text object), 這個是其他很多編輯所不具備的,通過文本對象我們可以更快速和精確地編輯文本。(為了蹭個熱點,我也加了『科普』兩個字??)

很多編輯器都是基於字元來修改的,這樣的缺點是效率非常低,比如我想要快速修改一個單詞或者括弧里的內容,你需要按很多次刪除鍵刪除內容,然後再鍵入新內容。

在 vim 里我們可以大大提升這種修改操作的效率。 先看點文字來了解下如何使用 text object,之後我會在視頻里進行演示,光用文本解釋有時候比較抽象。

我建議你在自己的 vim 里真正實操一把,學習 vim 編輯器需要你用手指肌肉而不是大腦去記憶,當你熟練形成條件反射以後,你的操作效率就會大大提升。

什麼是 text object ?

Text-Object:可以指一個單詞,一整句文本,抑或一對括弧內的文本,甚至是html或xml標籤內的文本,都可以抽象成Text-Object。

通過插件,還可以把一段代碼、一個函數、一個 class 等都抽象為文本對象,比如 vim-go 和 python-mode 插件都可以基於 go 和 python 的單個函數進行操作。

其命令結構如下:

[number]<command>[text object or motion]

  • number: 指作用在幾個幾個文本對象上
  • command: 執行的具體命令, 最常見如刪除用 d, 修改用 c, 選中用 v
  • text object or motion: 指的是需要操作的文本對象,比如單詞、句子、段落等

如何使用 text object ?

初學的同學也不要害怕,這裡涉及到的命令不多,同樣是遵循 2/8 原則,我們只需要了解最基本的命令就能完成大部分操作。

文本對象操作涉及到範圍和操作,範圍主要是主要是 i(inner ) 和 a(around),文本對象有 w (word), s (sentence), p (paragraph), 和各種 引號和括弧。當然通過插件還能增強 text object 的功能,感興趣的可以自行搜索。

舉幾個例子:

  • iw: inner word, 鍵入 viw 首先 v 鍵入選擇模式,然後 iw 選中當前單詞。
  • aw: a word, 它會選中當前單詞,同時包含當前單詞之後的空格。比如 daw 可以刪除當前單詞和空格。

如果省略了範圍,是從當前游標刪除到下一個單詞開頭。

這裡有個表格,紅色部分表示作用範圍(來自 yyq123.blogspot.com/201

https://www.zhihu.com/video/999263463629103104

參考

Vim Text Objects: The Definitive Guide

VIM學習筆記 文本對象(Text Objects)

推薦閱讀:

vim 使用宏實現批量騷操作[視頻]
代碼編輯器系列 #1 架構與解耦

TAG:Vim | Vim插件 | 代碼編輯器 |