使用任何编辑器重新编号 yaml 文件中的列

renumber a column in a yaml file using any editor at all

我有一个 yaml 文件,其中有一长串带编号的字段。

 1:first
    .
    .     
22: this
23: that
24: somethingelse
22: this2
23: that2
24: somethingelse2
etc

我正在努力

 1: first
     .
     .
     .
22: this
23: that
24: somethingelse
25: this2
26: that2
27: somethingelse2

我需要做的是从定义的数字开始重新编号这些字段,最多约 400(每个文件多次)。

必须有一种方法可以在 vim、atom 或 sublime 中执行此操作,但我正在努力寻找一种方法。

增加数字似乎在 vim 中使用 ^X 但我真的需要在我重新编号的列上方获取数字并向其添加一个并将文本替换为 : 用那个数字。正确选择可能是正则表达式问题,宏是使其工作,但我无法解决。

详情请看这里:

像这样的东西应该可以工作:

:let @a=1 | %s/^\s*\zs\d\{1,3}\ze:/\=(@a+setreg('a',@a+1))/g

您当然可以根据自己的需要调整@a。如您所见,您的 \d\{1,3} 仍在使用。但是为了确保只匹配正确的部分,它会查找行的开头。此外,它不会替换 : 而是检查它。这可以通过 \zs\ze 实现。有关详细信息,请参阅 :h \ze