代码之家  ›  专栏  ›  技术社区  ›  Sasha

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

vim
  •  9
  • Sasha  · 技术社区  · 15 年前

    我想找到一条同时有“foo”和“bar”的线,按这个顺序排列,但不一定是相邻的。

    我试过以下方法,但没用:

    /foo.*bar
    
    3 回复  |  直到 6 年前
        1
  •  14
  •   drrlvn    15 年前

    用途:

    :set magic
    /foo.*bar
    

    “magic”设置确定vim如何处理正则表达式中的特殊字符。当它关闭时,Vim会逐字地处理所有字符,这意味着你写的表达式 foo.*bar 将实际搜索该字符串。然而,当“魔力”开启时,特殊的regex字符会有它们特殊的含义,而且它的工作方式更像您期望的那样。建议始终使用 :set magic 除非处理非常老的vi脚本,所以只要将其添加到vimrc中,就可以设置。

        2
  •  9
  •   Chris K    15 年前

    为我工作:

    /text.*text2
    
        3
  •  1
  •   Mario G.    6 年前

    h: search-pattern

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

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

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

    实例:
    foobeep\&... 匹配“foobep”中的“foo”。
    .*Peter\&.*Bob 在包含“peter”和“bob”的行中匹配