文本对象命令只能在可视模式或操作符后使用。这些命令或以 "a" 打头,代表选择一个 ("a"n) 包含空白的对象;或以 "i" 带头,代表选择内含 ("i"nner) 对象: 它们不包含空白。另外,空白本身也是内含对象。这样,"内含" 对象总比 "一个" 对象选择较少的文本。
一、简介
文本对象就是符合某一标准的在某两个界定符内的一串文本,比如一个单词,一个句子,一个字符串等。文本对象有二个优点,一是无论光标处于该文本对象的哪个字符中,你可以对整个文本对象进行操作;二是有些情况下你想要进行的操作正好就是一个文本对象的全部内容。
二、使用方法
操作+对象范围+文本对象界定符
单词和句子的界定符用 w
和 s
来表示,其它的用两个界定符中的任何一个都可以表示。如 daw
表示删除一个单词,yis
表示复制一个句子。yi(
表示复制一个括号中的内容。
① 操作有三种:v、y、d,分别为,选中、复制、删除;
② 文本对象共有两个范围,一是a,其实它就是英语单词a,表示一个文件对象,对该文本对象的操作会包括文件对象的界定符,如双引号字符串的双引号,括号,尖括号等。第二个是i,是英语单词inner的缩写,所以这表示操作范围在一个对象之内,不包括界定符。
三、类型
文本对象共有七种:w s "" <> [] () {}
前三个文本对象有一个共同点:如果使用a来表示范围,操作内容会包括文本对象后面的所有空白符(空格和制表符),如果文本对象后面没有空白符则包括前面的空白符。
这里要特殊说明的是双引号字符串,光标在双引号字符串的前面时也能对它进行操作,但在后面不行。不知道为什么双引号字符串与其它的不一样,可能是它用的比其它的要多吧。还有就是因为双引号字符串的界定符是一样的,所以如果有两个字符串的话Vim就无法正确判断文本对象了,只要光标前后各有一个双引号,Vim就认为光标就在一个字符串中间。
四、常用文本对象
文本对象 | 选择区域 |
---|---|
a)或ab | 一对圆括号 |
i)或ib | 圆括号内部 |
a}或aB | 一对花括号 |
i}或iB | 花括号内部 |
at | 一对XML标签 |
it | XML标签内部 |
aw | 当前单词及一个空格 |
iw | 当前单词 |
aW | 当前字串及一个空格 |
iW | 当前字串 |
as | 当前句子及一个空格 |
is | 当前句子 |
ap | 当前段落及一个空行 |
ip | 当前段落 |
