Vim文本对象

文本对象(text object),在Vim中并没有给出明确的定义。不过当我们知道文本对象该如何使用时,自然就明白什么是文本对象。

Vim把文本对象分为了两类 ,一类是块文本对象,另一类是非块文本对象。

非块文本对象

什么是非块文本对象呢?Vim没有给出明确定义,但是划分了哪些命令属性非块文本对象。命令如下

非块文本对象说明
aw当前单词及单词前面或者后面的空格
iw当前单词
aW当前字串及字串前面或者后面的空格
iW当前字串
as当前句子及句子前面或后面的空格
is当前句子
ap当前段落及段落前面或后面的空行
ip当前段落

w表示word(单词),W表示WORD(字串),s表示sentence(句子),p表示paragraph(段落)。

单词和字串的区别,我在 Vim移动命令(2)基于单词/字串的移动命令 这篇文章中讲过,至于句子和段落的定义,语言老师教过的。

文本对象都是以a或者i开头,它们的区别在于是否包含空格或者空行。我们可以把a理解为around,把i理解为inner。

那么文本对象怎么用呢?它们只能用在可视模式中或者操作符之后。我以awiw为例,分为在可视模式,操作符之后,来使用文本对象。
text object
从这个gif图中就可以看到iw和aw的区别。

aw是包含一个空格的,据我猜测,如果单词后面有空格,那么aw包含的就是后面的空格,否则包含的是前面的空格。而iw是不包含空格的。

块文本对象

什么是块文本对象呢?Vim中没有给出明确的定义,但是我总结了下,块文本对象就是被成对的符号分隔的文本对象。

例如"Hello World!",就是一个块文本对象,文本被一对双引号包含,同理<h1>标题</h1>也就一个块文本对象,它被一对标签所包围。

成对的分隔符包括 小、中、大括号,双引号,单引号,反引号,以及HTML中的标签。

HTML标签比较特殊,举个例子
块文本对象

如果块文本对象命令以a开头,那么包括成对的分隔符,如果以i开头,则不包含。

删除一个单词

删除一个单词,我们可能把光标移动到单词的开头,然后使用dw删除。这要求光标必须先移动到单词的开头。

如果使用daw删除一个单词呢,只要光标在单词上任意位置或者在单词前面的空格上,就能使用daw删除一个单词。

心得

如果你不懂Vim,哪怕在代码中做一点点小小的修改,你可能会使用文本编辑器进行修改,这让我觉得太浪费时间了,在我学会了Vim之后 ,在工作中,有时候让我觉得那效率真让我爽。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值