我有多个需要每天编辑的 XML 文件。我无法控制读取这些文件的源,也无法控制 XML 的格式。
问题是每个元素在每个块中都需要自己的序号。有时每个块中可能有超过 200 个元素。当我需要在现有的长块中尽早插入命令时,我必须手动重新编号每个后续元素,这很乏味且容易出错。
此外,名称/值对与所需的顺序编号无关。下面的值“origcmd1”可能是“foobar98765”。它们只是为了说明我的问题。
例子:
从此开始:
<block1>
<cmd1 name="origcmd1"></cmd1>
<cmd2 name="origcmd2">someCmdsTakeParams,param2</cmd2>
<cmd3 name="origcmd3"></cmd3>
</block1>
<block3> <c>no guarantee blocks are sequential #</c>
<cmd1 name="cmd1"></cmd1>
<cmd2 name="cmd2"></cmd2>
<cmd3 name="cmd3"></cmd3>
</block3>
如果我需要尽早添加命令,请在 origcmd1 和 origcmd2 之间说:
<block1>
<cmd1 name="origcmd1"></cmd1>
<cmd2 name="NEWcmd1"></cmd2> <c>cmd2 & cmd3 inserted</c>
<cmd3 name="NEWcmd1"></cmd3>
<cmd4 name="origcmd2">someCmdsTakeParams,param2</cmd4>
<cmd5 name="origcmd3"></cmd5>
</block1>
<block3> <c>no guarantee blocks are sequential #</c>
<cmd1 name="cmd1"></cmd1>
<cmd2 name="cmd2"></cmd2>
<cmd3 name="cmd3"></cmd3>
</block3>
我现在必须检查并手动重新编号现在的 cmd4 和 cmd5。当有数百个命令时,这会变得非常令人沮丧。
迄今为止的解决方案包括尝试编写一个宏以从第一行重新编号,并假设它始终正确编号为 1。然后我将使用一系列删除/粘贴和 Ctrl-a 来增加每个进行中的行号。不幸的是,我永远无法让宏正常工作。
我还查看了 vim.org 上的 vim 插件,但没有发现任何我认为可以解决的问题。
Vim 对我来说是新的,但我喜欢它,这似乎是它非常适合解决的问题类型。任何关于我错过的快速技术或插件的想法都值得赞赏。