Vim %
运算符跳转到匹配的括号,注释结尾和其他一些内容。但是,据我所知,它与XML标签(或任何其他标签)不匹配。
使用Vim跳转到匹配的XML标记的最佳方法是什么?
注意: 我真正想做的是在XML文件中复制一个部分,而无需手动寻找匹配的标签。
Vim %
运算符跳转到匹配的括号,注释结尾和其他一些内容。但是,据我所知,它与XML标签(或任何其他标签)不匹配。
使用Vim跳转到匹配的XML标记的最佳方法是什么?
注意: 我真正想做的是在XML文件中复制一个部分,而无需手动寻找匹配的标签。
Answers:
有一个名为matchit.vim的vim插件。您可以在这里找到它:http : //www.vim.org/scripts/script.php?script_id=39。它的创建几乎就是您描述的确切目的。
安装后,将光标放在标签的主体上(不是<>,否则将与之匹配),然后按%跳到另一个标签。请参阅脚本页面,以查找其他匹配内容。
runtime macros/matchit.vim
应该启用它,并允许%
匹配XML标签。
packadd! matchit
到.vimrc
启用它。阅读更多:help matchit
您可以在没有其他插件的情况下执行此操作:
另一个有用的操作是:vit-将选择标签的内容(内部)。
更新(由于@elrado)示例:vito将使您能够选择标签的内部内容,并将光标定位在所选文本的开头。
参考: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|
...
cit
改变了我的标签nterior -只是内容。cat
改变一个变量的LL -内容和一个 LSO标签本身,无论是打开和关闭。
OP表示,他真正想做的是复制XML部分,而不必找到匹配的标签。使用,可以轻松地在普通模式下完成此操作yat<motion>p
,该操作会拉动其中的文本并包含匹配的标签,然后将其粘贴。 yit<motion>p
几乎相同,但不包含外部标签。
字符串中的“ y”当然是正常模式的“ yank”命令。(:help y
)
a
或i
可以在操作员(例如y
视觉选择)之内或之后用于对象选择。a
或之后的符号i
指定应选择的内容。t
此处使用的对象类型表示SGML标签。(:help object-select
)。
当然,<motion>
这只是意味着您可以选择p
将其移动到某个地方,然后将选中的文本放在该位置。
i
代表“内部”(或“内部”)。a
代表“一个”?
a
代表“全部”。
a
代表周围。这对我来说更有意义。