Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Search Vim中的高级搜索_Search_Vim_Vi - Fatal编程技术网

Search Vim中的高级搜索

Search Vim中的高级搜索,search,vim,vi,Search,Vim,Vi,有没有办法在Vim中同时搜索多个字符串?我记得在某个地方读到过这样的文章,说这是可能的,但不知怎么的,我忘记了技术 例如,我有一个文本文件,我想同时搜索“foo”和“bar”(不一定是单个字符串,可以在不同的行中) 如何实现这一点?Vim通过在命令模式下以“/”开头来支持正则表达式 /(foo|bar) 因此,使用“/(foo\| bar)”(如前所述)可以解决问题。很高兴知道为什么会这样以及你在使用什么(正则表达式)。事实上,我在发布这篇文章后很快就找到了答案(是的,我之前用谷歌搜索过,但找

有没有办法在Vim中同时搜索多个字符串?我记得在某个地方读到过这样的文章,说这是可能的,但不知怎么的,我忘记了技术

例如,我有一个文本文件,我想同时搜索“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