在VIM中剪切或抽出整个标签

时间:2014-05-16 15:02:19

标签: html vim frontend

给出一个常见的html位,如

<div>
  <p>
    Mary had a <b>little</b> lamb.
  </p>
</div>

我希望在其他地方剪切整个(不仅仅是内部)div。我知道有其他方法可以做到这一点,比如切割一系列线条等,但作为VIM的新用户,我非常需要在我的前端工作流程中移动标签,而我还没有看到很好的方法这个。

4 个答案:

答案 0 :(得分:14)

将你的cusor放在外部div标签上: d a t

d elete a 回合 t ag

然后将 p 粘贴到您需要的位置。

答案 1 :(得分:5)

使用at文本对象作用于整个标记,it文本对象作用于标记内容。

要对当前文本对象执行操作,您的命令应如下所示:

operator + text-object

您可以在文本对象之前添加count,以便对count级别的周围文本对象进行操作:

operator + count + text-object

因此,光标位于第1行和第5行,您可以使用以下命令来抽取整个<div>

yat

当光标位于第2,3或4行时,命令变为:

y2at

光标位于<b>内,命令变为:

y3at

那就是说,我建议你使用视觉模式而不是计算:它更直观,更安全,可能更快。只需重复文本对象即可扩展您的选择:

vatat

然后:

y

请参阅:help motion.txt

答案 2 :(得分:2)

vatyp应该这样做。

vat以视觉方式选择光标所在的标记

y将它拉出来

粘贴{p> p。转到要粘贴的位置,然后使用p进行粘贴。

答案 3 :(得分:1)

xml插件http://github.com/othree/xml.vim非常便于编辑xml。

使用此插件,当光标在<div>上时,按<leader>D,将删除<div> till </div>包含该内容。

如果您按<leader>d,则只会移除<div> and </div>标记,将您的文字更改为:

  <p>
    Mary had a <b>little</b> lamb.
  </p>

还有更多功能,您可能需要检查。如果没有xml插件,您可以按dat