如何在反向搜索和替换vim

时间:2015-10-13 17:52:35

标签: vim

我有一个0的大型文件,如: 000000000 00000000

如何在反方向上实现搜索和替换?如果我想用0011替换0000,那么操作的输出应该是: 000110011 00110011

2 个答案:

答案 0 :(得分:2)

你无法反向替换。这样做的一个技巧(在你的情况下)是给出一个搜索四个零的模式,结束而不用其他零。

我确定有更好的,但以下有关此技巧的处理:

:%s/\v\zs0000\ze(0000)*([^0]|$)/0011/g

它匹配四个零(\zs0000\ze),后跟一个n * 4个零((0000)*)的选项序列,后跟除零之外的任何零({{1 }::character,或eol)

答案 1 :(得分:0)

您使用的是Linux吗?在这种情况下,这是一个方便的解决方案:

  • 反转每一行(使用rev外部命令)
  • 应用你的模式(在颠倒之后)
  • 为每行恢复正确的订单

你应该一步一步地尝试:

:%!rev
:%s/0000/1100/g
:%!rev

希望它可以提供帮助。