在VS代码中搜索多个术语

时间:2018-04-20 14:59:59

标签: search visual-studio-code

假设我在VS Code上搜索术语' word1 word2'。然后它找到所有出现的' word1'之后是' word2'。实际上我想找到word1和word2出现的所有文件,但它们不必连续。我该怎么办?

6 个答案:

答案 0 :(得分:10)

使用正则表达式标记并搜索(word1[\s\S\n]*word2)|(word2[\s\S\n]*word1)

答案 1 :(得分:6)

这也是满足简单需求的一种简单方法-将其用作正则表达式

(word1)|(word2)|(word3)  

它可能无法涵盖某些情况,但对我来说运行良好,并且容易记住键入。

答案 2 :(得分:1)

对于你们来说,

如果要在一个文件中一次搜索多个单词(两个以上),并且所有单词必须在文件中至少出现一次(逻辑AND),则可以使用以下正则表达式来利用前瞻性断言:

^(?=[\s\S\n]*(word1))(?=[\s\S\n]*(word2))(?=[\s\S\n]*(word3))(?=[\s\S\n]*(word4))[\s\S\n]*$

以这种模式进行的全局搜索将仅返回包含word1word2word3word4的任意顺序的所有文件(例如word4可能会出现在文件的开头和/或word2可能会出现在文件的结尾)。

我还写了一个小小的Python CLI帮助程序,它根据给定的AND模式自动为您创建了正则表达式(尽管手工创建正则表达式非常简单)。

复制以下代码,将其粘贴到新文件中,然后将其保存在计算机上的某个位置(我将其称为regex_and_lookahead.py)。然后使用chmod +x ./regex_and_lookahead.py使文件可执行(重要的是,我使用Python 3.6,原义前缀f-> f'(?=[\s\S\\n]*({arg}))'在以前的版本中无效):

#!/usr/bin/env python
from sys import argv

args = argv[1:]
regex = '^'
for arg in args:
    regex += f'(?=[\s\S\\n]*({arg}))'
regex += '[\s\S\\n]*$'

print(regex)

用法:

./regex_and_lookahead.py word1 word2 word3 word4

将生成上面的正则表达式。您还可以使用它来生成更复杂的正则表达式,因为每个参数中都可以包含正则表达式字符!

例如:

./regex_and_lookahead.py "pattern with space" "option1|option2" "\bword3\b" "(repeated pattern\.){6}"

将生成以下正则表达式:

^(?=[\s\S\n]*(pattern with space))(?=[\s\S\n]*(option1|option2))(?=[\s\S\n]*(\bword3\b))(?=[\s\S\n]*((repeated pattern\.){6}))[\s\S\n]*$

仅当以下条件所有为真时,才会匹配文件:

  • 至少出现一次字符串pattern with space;
  • option1option2至少出现一次;
  • 至少有一个单词word3被单词边界断言分隔;
  • 字符串repeated pattern.至少出现一次重复6次(即:repeated pattern.repeated pattern.repeated pattern.repeated pattern.repeated pattern.repeated pattern.)。

如您所见,天空是唯一的极限。玩得开心!

答案 3 :(得分:1)

现在支持了,您可以搜索该词然后在编辑器中打开并使用 ctrl + f 搜索搜索结果 感谢 @pushkin

答案 4 :(得分:0)

VSCode有一个open issue来支持多次搜索。你可能想要去那里推他们一点。

答案 5 :(得分:0)

尝试Open new Search Editor command,通过命令面板,您可以在键绑定编辑器中将其映射到您想要的任何键绑定。我映射到 cmd+shift+i

enter image description here

这对我很有帮助!

还有一种方法,在搜索编辑器中使用 up/ down 箭头键,让我们在搜索历史中移动,即使这很有用< /strong>,

<块引用>

接受它等同于拥有多个搜索编辑器(IntelliJ 等提供的)但没有持久性需要一点心思!