如何在vim中搜索包含2个特定单词的行?

时间:2009-07-23 19:17:40

标签: vim

我想找到一个既有'foo'又有'bar'的行,但不一定要彼此相邻。

我尝试了以下操作并且无效:

/foo.*bar

3 个答案:

答案 0 :(得分:15)

使用:

:set magic
/foo.*bar

'magic'设置决定了VIM如何处理正则表达式中的特殊字符。当它关闭时,VIM会逐字处理所有字符,这意味着您编写的表达式foo.*bar将实际搜索该字符串。然而,当'魔术'开启时,特殊的正则表达式字符会得到它们的特殊含义,它的效果更像你期望的。建议始终使用:set magic,除非处理非常旧的Vi脚本,因此只需将其添加到vimrc即可设置。

答案 1 :(得分:10)

适合我:

/text.*text2

答案 2 :(得分:1)

h: search-pattern

1。模式是一个或多个分支,以“\ |”分隔。它匹配与其中一个分支匹配的任何内容。

示例:foo\|beep匹配“foo”并匹配“beep”。如果多个分支匹配,则使用第一个分支。

2。分支是一个或多个concats,由\&分隔。它匹配最后一个concat,但前提是所有前面的concats在同一位置匹配。

示例:
        foobeep\&...匹配“foobeep”中的“foo”         .*Peter\&.*Bob匹配包含“Peter”和“Bob”

的行