在vim中进行非贪婪多行搜索

15

我正在尝试查找 Ruby 文件并找到所有方法(稍后自动替换它们之前)。 在 Vim 中,我使用以下正则表达式:

/\vdef.*(\n.*){-}end

然而,尽管我使用 "{-}",它仍选择整个文件的内容。


1
我不明白你想匹配什么。如果函数内部有一个 if ... end 条件,怎么样? - Birei
1
是的,我稍后会相应地修改正则表达式(比如添加另一个定义的正向预查或类似的内容)。我现在需要的是以非贪婪方式搜索它的方法。 - Pavel K.
3个回答

14

使用 \_. 将换行符加入常见的 . 中。

/\vdef\_.{-}end

9
在我的Vim版本中,你需要转义{,并像其他答案所说的那样使用\_.
/def\_.\{-}end

5

尝试使用以下正则表达式。

/\vdef(\n|.){-}end

.*在你的情况下是罪魁祸首。


你可以在 def 后面省略 .*\vdef(\n|.){-}end 也同样有效。 - iruvar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接