【问题标题】:Vim - How to search and reaplace based on search [duplicate]Vim - 如何根据搜索进行搜索和替换
【发布时间】:2015-02-15 23:30:45
【问题描述】:

我想做什么:

每次我找到基于s[w|l].*[0-9]\.\* 的内容时,将字符串\search .* 的结尾替换为%s/\.\*/\\\\\.\.\*/g

已尝试使用标准搜索和替换,但无法做到。

谢谢

【问题讨论】:

  • 我不关注。请澄清并举例说明(文本和预期替换)。
  • 我想用 \\.* 替换这个搜索到的 srting "slcassdsap01.*" 的结尾
  • 那么,把slcassdsap01FOO变成slcassdsap01\FOO?!
  • 把 slcsdtp01.* 变成 slcsdtp01\\.* 请提醒我是通过搜索找到的 /s[w|l].*[0-9].*
  • 这不适合你吗? s/\v(blahblah\d+)(.*)/\1\\\\\2/ 在你的问题中更好地给出详细的要求,你的文字应该是什么样子,之前和之后。

标签: search vim macros replace let


【解决方案1】:

只需将您的搜索模式括在转义括号 \(\) 中,并在替换字符串中使用反向引用 \1

:%s/\(s[w|l].*[0-9]\)\.\*/\1\\\\.*/g

您可以在搜索字符串中包含多个 \(\) 子表达式,并且可以在搜索字符串本身和替换字符串中使用它们(通过 \1\2、...)。子表达式仅按搜索字符串中出现的顺序编号。

【讨论】:

    猜你喜欢
    • 2011-11-02
    • 1970-01-01
    • 2011-06-15
    • 2016-07-12
    • 2017-01-05
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 2019-06-21
    相关资源
    最近更新 更多