Search Vim中的高级搜索
有没有办法在Vim中同时搜索多个字符串?我记得在某个地方读到过这样的文章,说这是可能的,但不知怎么的,我忘记了技术 例如,我有一个文本文件,我想同时搜索“foo”和“bar”(不一定是单个字符串,可以在不同的行中)Search Vim中的高级搜索,search,vim,vi,Search,Vim,Vi,有没有办法在Vim中同时搜索多个字符串?我记得在某个地方读到过这样的文章,说这是可能的,但不知怎么的,我忘记了技术 例如,我有一个文本文件,我想同时搜索“foo”和“bar”(不一定是单个字符串,可以在不同的行中) 如何实现这一点?Vim通过在命令模式下以“/”开头来支持正则表达式 /(foo|bar) 因此,使用“/(foo\| bar)”(如前所述)可以解决问题。很高兴知道为什么会这样以及你在使用什么(正则表达式)。事实上,我在发布这篇文章后很快就找到了答案(是的,我之前用谷歌搜索过,但找
如何实现这一点?Vim通过在命令模式下以“/”开头来支持正则表达式
/(foo|bar)
因此,使用“/(foo\| bar)”(如前所述)可以解决问题。很高兴知道为什么会这样以及你在使用什么(正则表达式)。事实上,我在发布这篇文章后很快就找到了答案(是的,我之前用谷歌搜索过,但找不到它。可能只是搜索错了) 正确的解决办法是 /(富吧)
@Paul Betts:管道必须进行转义默认情况下,您需要转义条和括号:/\(foo\ | bar\),但无论如何,在这种情况下都不需要对它们进行分组/foo\| barI认为某些RegExp方言需要逃离管道,而其他方言则不需要。是的。。。我同意在vi中是需要的,但是字符的转义是非常不一致的,试图直接将该片段复制到另一个实现中必须小心。是的,它是不一致的。我必须检查一下,但我不认为Vi遵循PCRE(perl兼容的正则表达式),我们不需要这样做。您也需要避开paren(在Vi(m)中)。还有很多很多不同的正则表达式。Vim是从vi派生的,而vi又是从ex派生的。关于特殊字符,这是非常不一致的,但是您可以使用\v或\v来改变行为。是的,正如@Zathrus所说。有关更多信息,请参见
:help magic
,包括启用各种设置时需要转义的内容和不需要转义的内容\v
是“非常神奇的”。这同样有效。这比我在下面给出的偏执的答案要简单得多,只要我早点发现这个…:(
/^joe.*fred.*bill/ : find joe AND fred AND Bill (Joe at start of line)
/fred\|joe : Search for FRED OR JOE