搜索并附加到模式而不影响Vim中的任何其他内容

时间:2014-05-02 20:30:45

标签: vim replace vi

我有很多这样的行:

pointer->[some Random Number Of Alphabets](),

我想搜索此模式,并在.value()之后将()完全附加到pointer->[some Random Number Of Alphabets]().value(),,因此它变为","但会发生什么呢?它会覆盖%s/\(\<pointer->.*()\), \>/\1.value()/和空格之后,我打算不受影响。我正在使用的命令是:

{{1}}

我在这里做错了什么?

2 个答案:

答案 0 :(得分:1)

我喜欢在这些情况下使用\ze

:%s/\<pointer->.*()\ze, /&.value()/
  • \ze标志着比赛的结束
  • &相当于\0
  • 删除\>,因为我觉得这是一次意外。请参阅:h /\>
  • 可能想要使用非贪婪的限定符,例如\{-}而不是*,更好的是[^(]*
  • 可能希望将\zs用于匹配的开头标记,并且无需&。请参阅@ Pak的评论

如需更多帮助,请参阅:

:h /\ze
:h s/\&
:h /\>
:h /\{-

答案 1 :(得分:0)

这应该有效:

:%s/\v(pointer.*\(\))/\1.value()/