跳转到Vim中匹配的XML标记

跳转到Vim中匹配的XML标记,xml,vim,Xml,Vim,Vim%操作符跳转到匹配的括号、注释结尾和其他一些内容。但是,据我所知,它与XML标记(或任何其他标记)不匹配 使用Vim跳转到匹配的XML标记的最佳方式是什么 注意:我真正想做的是在XML文件中复制一个节,而不手动查找匹配的标记。有一个名为matchit.vim的vim插件。你可以在这里找到它:。它的创建与您描述的目的几乎完全相同 安装后,将光标放在标记体上(不是,否则它将匹配这些标记),然后按%跳转到另一个标记。查看脚本的页面,找出与之匹配的其他内容。OP表示,他真正想做的是复制XML的一部

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

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


注意:我真正想做的是在XML文件中复制一个节,而不手动查找匹配的标记。

有一个名为matchit.vim的vim插件。你可以在这里找到它:。它的创建与您描述的目的几乎完全相同


安装后,将光标放在标记体上(不是,否则它将匹配这些标记),然后按%跳转到另一个标记。查看脚本的页面,找出与之匹配的其他内容。

OP表示,他真正想做的是复制XML的一部分,而不必找到匹配的标记。在正常模式下,使用
yatp
可以轻松完成此操作,它将文本拉入其中,包括匹配的标记,然后粘贴
yitp
几乎相同,但不包括外部标记

字符串中的“y”当然是正常模式的“yank”命令。(
:帮助y

a
i
可用于在诸如
y
之类的操作符之后或在视觉选择内部进行对象选择。
a
i
后面的符号指定应选择的内容。此处使用的对象类型
t
表示SGML标记。(
:帮助对象选择


当然,
只是指通过您选择的方式移动到某个地方,并且
p
将被拖动的文本放在该位置。

您可以在不使用其他插件的情况下执行此操作:

  • 将光标放在标记上
  • vat-将选择(外部)标记并将光标放在末端
  • 完成选择后,您可以使用o在顶部和底部之间切换(根据Michael Gruber的注释进行更新)
  • c-更改或,y-复制或,退出视觉模式的转义
另一个有用的操作是:vit-将选择标记的内容(内部)

更新(感谢@elrado)示例:vito将允许您选择标记的内部内容,并将光标定位在所选文本的开头

参考:

Vim参考(感谢@Geek指出这一点):

您将获得:

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|
    ...
4。在可视区域上操作*可视操作符*
可以使用的对象包括:
...
在一个区块(带标签)| v|u在|
it内部模块| v|it|
...
这就是我使用“猛拉”、“对象选择”(标记选择)和“跳到最后猛拉的文本”的技巧

在关闭标记之前向右跳转

打开标记后跳到右侧


注意:这将更改默认寄存器的内容。一直放在我的硬盘上。有一些版本的matchit,Vim已经附带了。顺便说一句,
运行时宏/matchit.Vim
应该启用它,并允许
%
匹配XML标记。mtchit.Vim在NeoVim中默认为启用。可能您已经有matchit,但默认情况下未启用。添加
packadd!将它与
匹配以启用它。阅读更多
:帮助matchit
matchit
在大型html源代码中失败。在源代码中成功。我要跳转到标记,而不是“选择”包含的内容。如果我可以用1或2个按键来完成,为什么每次我要选择一个标签时都要按5个键呢?(事实上,这种情况经常发生)很好,有一种内置的方式,尽管很复杂,可以跳转到结束标记。通过视觉模式绕道是唯一的方法吗?天哪,莫莉,你总是通过Vim学习新东西!有很多东西要学,这对我帮助很大,谢谢!只需注意:一旦你有了你的选择,你可以用'o'@Geek'在顶部和底部之间切换,'t'代表'tag'。要理解“a”,你必须先理解“i”<代码>cit
更改标签的内部-仅更改内容
cat
更改所有标签-内容以及标签本身,包括开始和结束。在回答原始问题(澄清注释之前:)时,似乎将您置于视觉选择的底部。另一面似乎是视觉模式中的“o”命令,它将您带到当前选择的另一端。这不仅在XML文档中是一个有效的技巧,在编辑PHP/HTML时也是一个有效的技巧(就像我自己的情况一样)
a
代表“a”?@nilon
a
代表“all”。我使用的助记符是
a
代表大约。这对我来说更有意义。
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|
    ...
yit`] 
yit