跳转到匹配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
)
a
或i
可以用于在诸如y
的操作符之后或在视觉select之内的对象select。 a
或i
之后的符号指定应该select的内容。 这里使用的对象typest
表示一个SGML标签。 ( :help object-select
)。
当然, <motion>
就是通过你select的方式移动到某个地方,然后把被抽出的文本放到那个位置。
只是我使用“猛击”,“对象select”(标签select)和“跳转到上一个被抽出的文本”的技巧。
yit`]
在结束标记之前跳到右边
和
yit
打开标签后跳到右侧
注意:这会改变默认寄存器的内容