我正在寻找一种在 VSCode 中执行复杂文本搜索的快捷方法。
一些例子:
- 多个关键字(文件包含
apple
和orange
文本文件中的任何位置) - 否定关键字(文件包含
apple
但不在cherry
文本文档的任何地方)
VSCode 在提供快速结果方面表现出色,但只允许使用单个关键字。正则表达式无法解决问题,因为关键字的顺序任意。
在主机上,当您执行搜索(全局查找)时,它会显示与您的关键字结果匹配的文件列表。然后,您可以执行另一次搜索,仅搜索来自先前搜索结果的文件。使用技术,您可以将多个关键字搜索堆叠在一起。
答案1
特工搜捕https://www.mythicsoft.com/agentransack/将会这样做。
有一个免费版本和一个付费版本 - 我认为免费版本可以满足您的需要。
您必须学习如何使用正则表达式(谷歌一下)。
答案2
Ctrl您可以使用 Visual Studio Code PowerShell 终端执行此操作。使用+ Shift+打开终端`。
和(长写) apple
:orange
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 帮助的唯一替代方案似乎是使用反向搜索扩展,但据我所知,它仅支持非匹配搜索,无法将其与常规搜索相结合。