跳转到匹配Vim中的XML标签

Vim %运算符跳转到匹配的圆括号,注释结束和其他一些事情。 但是,它并不匹配XML标签(或任何其他标签,据我所知)。

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

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

有一个叫做matchit.vim的vim插件。 你可以在这里find它: http : //www.vim.org/scripts/script.php?script_id=39 。 它的创build非常符合你描述的确切目的。

安装,将光标放在标签的主体上(不是<>,否则会匹配这些标签),然后按%跳转到另一个标签。 看脚本的页面找出它匹配的东西。

你可以做到这一点,没有额外的插件:

  • 将光标放在标签上
  • v a t – 将select(外部)标签并将光标置于最后
  • 一旦你有了你的select,你可以切换顶部和底部( 基于迈克尔格鲁伯的笔记更新
  • c – 更改或者y – 复制或者退出视觉模式

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

更新(感谢@elrado)例如: v 将使您能够select标签的内部内容,并将光标定位在所选文本的开头。

参考: 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| ... 

OP表示,他真正想做的是复制一段XML而不必find匹配的标签。 这在yat<motion>p正常模式下很容易完成,它将内部的文本和包含匹配的标签,然后粘贴。 yit<motion>p几乎相同,但不包含外部标签。

string中的“y”当然是正常模式的“抽取”命令。 ( :help y

ai可以用于在诸如y的操作符之后或在视觉select之内的对象select。 ai之后的符号指定应该select的内容。 这里使用的对象typest表示一个SGML标签。 ( :help object-select )。

当然, <motion>就是通过你select的方式移动到某个地方,然后把被抽出的文本放到那个位置。

只是我使用“猛击”,“对象select”(标签select)和“跳转到上一个被抽出的文本”的技巧。

 yit`] 

在结束标记之前跳到右边

 yit 

打开标签后跳到右侧

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