在vim中选择几个连续的XML标签

时间:2017-01-04 09:09:22

标签: xml vim

我有以下XML文件:

<outer>
  <middle>
    <inner>1</inner>
  </middle>
  <middle>
    <inner>2</inner>
  </middle>
  <middle>
    <inner>3</inner>
  </middle>
  <middle>
    <inner>4</inner>
  </middle>
</outer>

我会在middle选择整个2 vat标记。

现在有办法扩展此选择以包含下一个middle标记(3)和一些组合键吗?

我只对标记这样做感兴趣,也就是说,如果有一个组合总是可以独立于下一个标记的结构使用。

2 个答案:

答案 0 :(得分:0)

installEventFilter()选择第一个标记块后按 CTRL + V J vat)这将包括下一个<c-v>jinner

修改:

对于您的新示例,您可以在3之后按4$以获取下面的标记块。

修改

我写了一个脚本vat,它允许通过按 F4 扩展相同标记块 1

ExpandTagBlock

以下是 Demo

enter image description here

<子> 1 相同标记块的扩展仅在此时向下完成。该脚本非常有资格进行改进或修改。

答案 1 :(得分:0)

Meninx对vanilla vim的回答确实是正确的。以下假设您选择这些标签是因为您想要对它们进行操作。如果vim有文本对象的附加定义,你可能根本不需要选择它们。

如果您定期编辑XML(或HTML等),您可能需要查看Tim Pope的插件,为“括号,括号,引号,XML标记添加动作”,和更多。”这是基于vim的编辑风格基于“文本对象”的想法,即单词,句子,段落和标签。

例如在vanilla vim中,caw将“改变单词”。使用下面提到的插件,您将能够执行cs'<q>之类的操作,这会“使用标记<q>...</q>更改周围的单引号”。

vim-surround 为“环境”添加了一般用途,这是我见过的所有vim dotfiles中最常用的插件之一:

您还可以查看 vim-ragtag ,它增加了对XML,HTML,PHP等标签的扩展支持,并增强了vim-surround。我自己不使用它,但它是一组映射到C-X的快捷方式,即C-X-<CR>将“foo”包装成:

<foo>
^
</foo>

另一个竞争者是machakann的vim-sandwich。在这里查看:

如果您没有vim插件管理器,我建议您使用junegunn's vim-plug

vim-plug为set up后,安装前两个插件就像在.vimrc中添加以下行一样简单:

Plug 'tpope/vim-surround'
Plug 'tpope/vim-ragtag'