0%

vim文本对象

文本对象

vim-grammar

  • aw:一个词
  • as:一句。
  • ap:一段。
  • ab:一块(包含在圆括号中的)。

y, d, c, v都可以跟文本对象。

操作符

所谓文本对象,简单来说就是以一定标准分隔符来标识一段文本,比如一个单词,一句话,一段话。

使用文本对象后你会发现你在vim中的移动和操作速度提升了不是一点半点。

在vim中编辑命令的结构如下:

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

可以看到文本对象和motion的操作是完全一致的,第一个是数字,比如3w,就向前移动三个单词。

文本对象大致有以下几种:

w  s  p '' ""  <>  []  ()  {} <tag>

其中w表示word,s表示句子,p表示段落,其他的就是包围符号,标签用t表示。

文本对象的操作范围有两种:

  • 一种用i表示,是inner的意思,即不包括单词边上的空格符,亦或是<包围符号本身。
  • 一种用a表示,是arround的意思,和i相反,使用a就包括了空格符或者包围符号本身。

文本对象的编辑命令就是vim中的几个常用编辑命令,分别是

`y:复制`,`d:删除`,`c:替换`,`v:选中`

来几个例子相信大家就立刻理解了。(例子中*都是光标所在位置)

例一

比如:

<*h2>Sample Title</h2>

按下cit,文本变为:

<h2>*</h2>

例二

再比如:

console.log(“stay hungry,” + “stay *foolish”)

按下da”,文本变为:

console.log("stay hungry," +*)

再按下di),文本变为:

console.log()

比如

Hello Worl*d

例三

按下diw,文本变为:

Hello

插件

  • argtextobj
  • vim-surround

Ref

  1. Vim Text Objects: The Definitive Guide
  2. 文本对象
  3. 快速选择文本对象wildfile.vim