Vim %
操作符可以跳转到匹配的括号、注释结尾和其他一些东西。然而,据我所知,它并不匹配 XML 标记(或任何其他标记)。
在 Vim 中,如何最好地跳转到匹配的 XML 标记?
注意: 我真正想做的是在 XML 文件中复制某个部分,而不是手动查找匹配的标记。
Vim %
操作符可以跳转到匹配的括号、注释结尾和其他一些东西。然而,据我所知,它并不匹配 XML 标记(或任何其他标记)。
在 Vim 中,如何最好地跳转到匹配的 XML 标记?
注意: 我真正想做的是在 XML 文件中复制某个部分,而不是手动查找匹配的标记。
: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|
...
a+t
代表什么意思?就像c
代表复制,y
代表粘贴一样。当你理解特定组合的含义时,记忆起来会更容易。 - Geekcit
更改标记内部 - 仅更改内容。 cat
更改整个标记 - 包括内容和标记本身,即开头和结尾。 - Edward有一个叫做matchit.vim的vim插件。你可以在这里找到它:http://www.vim.org/scripts/script.php?script_id=39。它的创建目的与你描述的几乎完全相同。
安装这个插件后,把光标放在标签的内容上(而不是<>,否则会匹配这些字符),按%键即可跳转到另一个标签。请查看脚本页面以了解它还可以匹配哪些内容。
runtime macros/matchit.vim
可以启用它,并且允许%
匹配XML标签。 - Svendpackadd! matchit
添加到.vimrc
中以启用它。更多信息请阅读:help matchit
。 - ruutermatchit
在大型HTML源代码中失败了。
https://github.com/andymass/vim-matchup在该源代码中成功。 - 2.7182818yat<motion>p
轻松完成此操作,它会复制包括匹配标记在内的文本,然后粘贴它。yit<motion>p
几乎相同,但不包括外部标记。:help y
)a
或i
进行对象选择。 a
或i
后面的符号指定应选择什么。此处使用的对象类型t
表示SGML标记。(:help object-select
)。<motion>
只是意味着通过您选择的方式移动到某个位置,p
将复制的文本放置在那个位置。i
代表“内部”(或“内部的”)。a
代表“一个”? - nilona
代表“全部”。 - Codie CodeMonkeya
代表 around。这对我来说更有意义。 - Kit Johnson这是我使用“yank”、“对象选择”(标记选择)和“跳转到最后复制的文本”的技巧。
yit`]
跳转到关闭标签前
和
yit
跳转到标签后
注意:这将更改默认寄存器的内容。