【问题标题】:How to recall search pattern when writing replace regex pattern in Vim?在 Vim 中编写替换正则表达式模式时如何调用搜索模式?
【发布时间】:2011-02-25 12:04:38
【问题描述】:

场景如下:我有一个大文件,里面装满了各种不拘一格的垃圾,我想对其进行正则表达式。我通过使用 / 命令并查看它突出显示的内容来摆弄并想出一个完美的搜索模式。

现在我想用那个模式来代替。所以,我开始输入 :%s/ 并且我不记得模式是什么。是否有一些神奇的键盘命令可以在这里引入我最后的搜索模式?如果我正在编写一个特别复杂的正则表达式,我什至打开了一个新的 MacVim 窗口,将正则表达式从第一个窗口输入到那里的缓冲区中,然后在编写替换模式时将其输入回 Vim 窗口中。必须有更好的方法来做到这一点。

【问题讨论】:

    标签: regex vim


    【解决方案1】:

    在写完问题后找到了我自己的答案:Vim 提示将其列为substitute last search,可以通过以下两种方式之一完成。

    1. 使用空搜索:

      :%s//替换/g

    2. 按 Ctrl + r 然后按 / 从搜索缓冲区(/ - 您可以使用任何其他命名的缓冲区,方法是用 / 代替代表该缓冲区的字母。

    【讨论】:

    • 抱歉,各位,自我回答。我确实很难找到答案,所以觉得值得提出。 Meta 说可以回答你自己的问题 - meta.stackexchange.com/questions/12513/…
    • 如果您最终需要使用多个神秘的正则表达式来筛选不拘一格的垃圾,将它们保存在变量中可能很有用,使用:let b:tires_sifter = @/ 处理一种类型的垃圾,@987654324 @ 稍后在您弄清楚如何定位该实体的实例之后,一个人永远不会拥有太多。通过将它们分配回@/、构建exec 行来使用它们或使用search()(IIRC..也许matchadd)函数来将它们拉出来。
    【解决方案2】:

    有一个包含当前搜索模式的/ 寄存器,因此您可以使用<CTRL-R>/ 将搜索模式插入到您正在输入的任何内容中(无论是在插入模式下还是在命令行中)

    【讨论】:

      【解决方案3】:

      另一种选择:用<CTRL-R>/ 输入模式后,用<CTRL-F> 编辑命令行。

      :帮助cmdwin

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-12
        • 2010-10-05
        • 2015-02-16
        • 1970-01-01
        • 2010-11-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多