我想找到一个既有'foo'又有'bar'的行,但不一定要彼此相邻。
我尝试了以下操作并且无效:
/foo.*bar
答案 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”