【问题标题】:Cut or yank an entire tag in VIM在 VIM 中剪切或拉出整个标签
【发布时间】:2014-07-05 02:23:58
【问题描述】:

给定一个常见的html有点像

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

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

【问题讨论】:

  • @JonathanLandrum 我猜这是因为他在 div 之前的同一行上有其他标签/文本。
  • 在这里找到了一个关于 yanking 和 paste 的有用答案:stackoverflow.com/questions/1218390/…
  • @JonathanLandrum 有时标签非常大,我看不到它实际结束的行号。其次,我不喜欢计算超过 7 或 8 的点赞数。也许随着时间的推移,我会发展出更好的估计意识,但现在我真的需要像这么多积木一样在标签周围移动,而不是在精神上切换到计数。如果这有意义的话。

标签: html vim frontend


【解决方案1】:

将光标放在外部 div 标签上:dat

d 删除 at ag

然后用 p 将它粘贴到你需要的地方。

【讨论】:

  • 这对我有用,谢谢!我看到有很多方法可以做到这一点,包括进入可视模式(我尽量避免)但这对我的用例来说非常直接。
【解决方案2】:

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

要作用于当前的文本对象,您的命令应如下所示:

operator + text-object

您可以在文本对象前添加count 以作用于周围文本对象的count 级别:

operator + count + text-object

因此,将光标放在第 1 行和第 5 行,您可以使用以下命令拉出整个 &lt;div&gt;

yat

将光标放在第 2、3 或 4 行,命令变为:

y2at

光标在&lt;b&gt;内,命令变为:

y3at

也就是说,我建议您使用视觉模式而不是计数:它更直观、更安全并且可能更快。只需重复文本对象即可扩大您的选择范围:

vatat

然后:

y

:help motion.txt

【讨论】:

    【解决方案3】:

    vatyp 应该这样做。

    vat 以可视方式选择光标所在的标签

    y 拉拽它

    p 粘贴。到你要粘贴的位置,使用p粘贴。

    【讨论】:

      【解决方案4】:

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

      使用此插件,当您的光标在&lt;div&gt; 上时,按&lt;leader&gt;D,将删除&lt;div&gt; till &lt;/div&gt; 包括在内。

      如果你按&lt;leader&gt;d,只会删除&lt;div&gt; and &lt;/div&gt;标签,把你的文字改成:

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

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

      【讨论】:

        猜你喜欢
        • 2012-11-06
        • 2016-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-11
        相关资源
        最近更新 更多