给出一个常见的html位,如
<div>
<p>
Mary had a <b>little</b> lamb.
</p>
</div>
我希望在其他地方剪切整个(不仅仅是内部)div
。我知道有其他方法可以做到这一点,比如切割一系列线条等,但作为VIM的新用户,我非常需要在我的前端工作流程中移动标签,而我还没有看到很好的方法这个。
答案 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
进行粘贴。
答案 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