如何在 Visual Studio Code 中搜索包含一个单词但不包含另一个单词的文件?

如何在 Visual Studio Code 中搜索包含一个单词但不包含另一个单词的文件?

我正在寻找一种在 VSCode 中执行复杂文本搜索的快捷方法。

一些例子:

  • 多个关键字(文件包含appleorange文本文件中的任何位置)
  • 否定关键字(文件包含apple但不在cherry文本文档的任何地方)

VSCode 在提供快速结果方面表现出色,但只允许使用单个关键字。正则表达式无法解决问题,因为关键字的顺序任意。

在主机上,当您执行搜索(全局查找)时,它会显示与您的关键字结果匹配的文件列表。然后,您可以执行另一次搜索,仅搜索来自先前搜索结果的文件。使用技术,您可以将多个关键字搜索堆叠在一起。

答案1

特工搜捕https://www.mythicsoft.com/agentransack/将会这样做。

有一个免费版本和一个付费版本 - 我认为免费版本可以满足您的需要。

您必须学习如何使用正则表达式(谷歌一下)。

答案2

Ctrl您可以使用 Visual Studio Code PowerShell 终端执行此操作。使用+ Shift+打开终端`

和(长写) appleorange

get-childitem -recurse | where-object {$_ | select-string 'apple'} | where-object {$_ | select-string 'orange'} | select fullname

或者简单来说(简写):

ls -r | ?{$_ | sls 'apple'} | ?{$_ | sls 'orange'} | select fullname

apple但不是cherry(简写):

ls -r | ?{$_ | sls 'apple'} | ?{-not($_ | sls 'cherry')} | select fullname

结果应该看起来像这样。你可以使用Ctrl+Left mouse button C:\temp\apple.txt打开文件

FullName
--------
C:\Temp\apple.txt

答案3

这通常只需使用正则表达式即可实现。例如查找或者您可以使用任何支持现代正则表达式引擎的工具:

\A(?!.*\bcherry\b).*\bapple\b

它基本上从整个字符串的开头开始匹配(\A),然后cherry使用负向前瞻确保在字符串结尾之前没有单词,然后它就会apple按照要求匹配。检查这个答案以便进行全面解释。

不幸的是,由于 ,Visual Studio Code 目前在 ++ 搜索中Ctrl使用此正则表达式时会抛出错误。我将其报告为问题ShiftF\A这里

在 VSCode 中,没有任何 shell 帮助的唯一替代方案似乎是使用反向搜索扩展,但据我所知,它仅支持非匹配搜索,无法将其与常规搜索相结合。

相关内容