Vim 科普之用 text objects 高效編輯[視頻]
08-18
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 可以刪除當前單詞和空格。
如果省略了範圍,是從當前游標刪除到下一個單詞開頭。
這裡有個表格,紅色部分表示作用範圍(來自 http://yyq123.blogspot.com/2016/12/vim-text-objects.html)
https://www.zhihu.com/video/999263463629103104參考
Vim Text Objects: The Definitive Guide
VIM學習筆記 文本對象(Text Objects)
推薦閱讀: