【问题标题】:Vim search replace to end of code blockVim 搜索替换到代码块末尾
【发布时间】:2024-01-18 06:02:01
【问题描述】:

我想搜索并替换到我所在的代码块的末尾。

基本上我想搜索运动]}

我试过了

:]}s/=/+=/gc

它没有工作。 “解析错误”

我正在 Visual Studio 中使用 VsVIM,如果这会有所不同的话。

【问题讨论】:

    标签: search vim replace


    【解决方案1】:

    : 范围不采用运动参数。您可以通过可视模式执行此操作:

    v]}:s/=/+=/gc

    请注意,当您在可视模式下点击 : 时,它会为您嵌入范围。

    【讨论】:

    • 正是我在最少的击键中寻找的东西。谢谢。我忘了用视觉模式来做。
    【解决方案2】:

    您可以选择块 { Shift-v }

    然后制作:

    :s/src/dst/g
    

    【讨论】:

    • 这实际上选择了一个段落(这意味着它从一个空行到一个空行)而不是仅仅到代码块的末尾,但它仍然很有用。
    【解决方案3】:

    我不确定这是否适用于 VsVim,但您可以在 Vim 中执行类似的操作:

    [{v]}:s/=/+=/gc
    

    请注意,您也可以使用数字范围:

    :56,75s/=/+=/gc
    

    【讨论】:

    • 既有用又非常接近我的目标。
    【解决方案4】:

    正如 hepta 所说,您可以先进行视觉模式,然后再进行替换。

    你也可以:.,.5s/old/new/gc

    :.,/}/-1s/old/new/gc

    vim.wikia.com/wiki/Ranges

    【讨论】:

    • 第一种方法有效,第二种方法在 VsVIM 中无效。我在 VIM 中尝试过,它确实......可能是错误