在HTML文档中说我有这个:
<p>
fdhjfkdj hfkjdfhkjdfhkjdh dfhdkf kjdh kjdhkjdhk
fhkdj hdjfhjkdh kjdh kjdf jkdhf d
jfdfhkdjfhkjdf
fjdj fhkd fdhfkjd hfkjdfhkjdf kdhfd
fdhjkfjk dhjdfhkjdf kjdfhdk fhdk
</p>
如果我在vim中执行正常的vit
命令,那么如果我把它拉出来就会选择里面的文字,但如果我尝试执行任何操作,例如tab over或run gq
它会影响整个<p>
。例如,执行vit
然后gq
最终会看起来像
<p> fdhjfkdj hfkjdfhkjdfhkjdh dfhdkf kjdh kjdhkjdhk lkd sldj lks jlkdf
jlsdkf jlsdf jdl dlsjl fhkdj hdjfhjkdh kjdh kjdf jkdhf d jfdfhkdjfhkjdf fjdj
fhkd fdhfkjd hfkjdfhkjdf kdhfd fdhjkfjk dhjdfhkjdf kjdfhdk fhdk </p>
缩进它不会缩进文本,而是整个标记。我如何真正选择内部文本,以便我可以像上面那样运行命令?
答案 0 :(得分:3)
这是因为段落的内部HTML在开始<p>
标记之后立即开始,所以它包含紧跟在它之后的换行符(你也会在{{1}之后看到) })。正如您所知,重新格式化和缩进是基于行的,因此单个字符很重要。
要使文本对象按您的方式工作,您需要移动到选择的开头(vit
),然后将其缩小到下一行(最简单的o
;对于缩进和无论如何,格式化,确切的起始列并不重要。所以重新格式化的顺序是:
j
如果你想要更快的东西,你需要编写自己的文本对象。看看我的CountJump plugin或textobj-user plugin;他们可以帮助定义一个。