跳转到Vim中匹配的XML标记

时间:2009-02-01 15:22:31

标签: xml vim

Vim %运算符会跳转到匹配的括号,注释结尾和其他一些内容。但是,它并不符合XML标记(或任何其他标记,据我所知)。

使用Vim跳转到匹配的XML标记的最佳方法是什么?

注意: 想要做的是复制XML文件中的一个部分,而无需手动查找匹配的标记。

4 个答案:

答案 0 :(得分:228)

您可以在没有其他插件的情况下执行此操作:

  • 将光标放在标签上
  • v a t - 将选择(外部)标记并将光标放在末尾
  • 一旦你有了你的选择,你可以用 o 根据Michael Gruber的笔记更新)在顶部和底部之间切换。
  • c - 更改或, y - 复制或转义为离开视觉模式......

另一个有用的操作是: v i t - 将选择标签的内容(内部)。

更新(感谢@elrado)示例: v i t o 将允许您选择标签的内部内容并将光标定位在所选文本的开头。

参考:https://superuser.com/questions/182355/how-can-i-select-an-html-tags-content-in-vim

Vim参考(感谢@Geek注意到这一点):

:help visual-operators

你会得到:

4. Operating on the Visual area             *visual-operators*

The objects that can be used are:
    ...
    at  a <tag> </tag> block (with tags)        |v_at|
    it  inner <tag> </tag> block            |v_it|
    ...

答案 1 :(得分:72)

有一个名为matchit.vim的vim插件。你可以在这里找到它:http://www.vim.org/scripts/script.php?script_id=39。它的创建几乎就是你描述的目的。

安装它,将光标放在标签的主体上(不是&lt;&gt;,否则它将匹配那些),然后按%跳转到另一个标签。请参阅脚本页面以了解其匹配的内容。

答案 2 :(得分:36)

OP表示他真正想做的是复制XML的一部分,而不必找到匹配的标签。这可以在yat<motion>p的正常模式下轻松完成,它会将文本拉入内部并包含匹配的标记,然后粘贴它。 yit<motion>p几乎相同,但不包含外部标记。

字符串中的'y'当然是普通模式“yank”命令。 (:help y

ai可用于y之类的运算符之后或视觉选择内的对象选择。 ai后面的符号指定应选择的内容。此处使用的对象类型t表示SGML标记。 (:help object-select)。

当然<motion>只是意味着通过您选择的方式移动到某处,p将拉出的文本放在该位置。

答案 3 :(得分:5)

只是我使用“yank”,“object-select”(标签选择)和“跳到最后一个被拉动的文本”的技巧。

yit`] 

在关闭标记之前跳转到右边

yit

打开标签后跳到右边

注意:这将改变默认寄存器的内容