如何删除vim中括号内的重复行?

时间:2016-06-13 17:30:45

标签: vim

我的json文件有重复值,我希望使用vim删除。这是一个例子:

{
  { "greetings" : [
      "hello",
      "hello",
      "hola",
      "hola"
    ]
  }, ...
}

{
  { "greetings" : [
      "hello",
      "hola"
    ]
  }, ...
}

到目前为止,我能够成功删除所有重复的行,期望最后的那些。有一个额外的','打破我的匹配,我最终

{
  { "greetings" : [
      "hello",
      "hola",
      "hola"
    ]
  }, ...
}

1 个答案:

答案 0 :(得分:0)

由于重复的行彼此相邻,您可以使用\1再次匹配字符串,并使用,\?使逗号可选:

:%s/^\(.\+\),\?\n\1\n/\1\r/gc

如果您需要限制搜索并替换为某些块,可以先使用g/../匹配该块:

:g/[\[^[\]*]/%s/^\(.\+\),\?\n\1\n/\1\r/g