从搜索中排除文件夹但不从项目列表中排除

137
我有几个不同的项目,但它们有相同的“核心”。 我只需要将所有非当前项目标记为“排除”,以避免在其中搜索(简单搜索、shift+cmd+n等)。 换句话说,我希望从“核心”+“当前项目”中获得搜索结果。 是否有办法关闭某些项目但仍然在“项目列表”中使其可用,并且像关闭前一样容易地打开?或者也许您有其他经验? 输入图像说明

9
排除在普通文本搜索之外--容易--只需定义自定义范围(首选项|范围),并在“查找/替换路径”和类似的对话框中使用它。但是这对于“导航|文件/类/符号”无效,因为它始终与整个项目一起使用。因此,最好重新组织您的文件夹结构(“将此文件夹隐藏,因为我正在使用另一个文件夹”不是正确的方法)。 - LazyOne
是的,我想要实现的一种方法是为每个文件夹创建单独的项目,并创建到“core”文件夹的符号链接。但我正在寻找其他方法。 - Vitalii Petrychuk
1
不必使用符号链接(虽然我也在使用 -- 对我来说工作得很好)。您可以将其附加为附加内容根目录(首选项 | 目录)的方式。 - LazyOne
太好了!请将您的回复发布为答案,我会接受它。 - Vitalii Petrychuk
4个回答

95

要应用自定义搜索,请使用 Scopes。在“设置/首选项”>“外观和行为”>“Scopes” 中使用它来进行“查找路径”或“替换路径”。
我建议您重新组织文件夹,以避免在项目目录中留下不必要的文件。此外,您可以通过转到“设置”>“项目设置”>“目录”并添加其他目录来指定源根。


5
您可以使用以下代码创建作用域: !file[*]:.idea/*&&!file[*]:.idea//*&&!file[*]:app/cache//*&&!file[*]:app/logs//* 该代码意为:选择除了.idea文件夹、app/cache和app/logs文件夹外的所有文件。 - Roukmoute
16
Mac用户请注意,PhpStorm > Preferences > Appearance & Behavior > Scopes是对应的路径。请将其输入到文件路径中以快速访问。 - Wesley Smith
3
在 CE 2016.3 版本中,它位于“设置”>“外观和行为”>“范围”下。 - tex
有没有办法进行搜索而不排除标记为排除的来源(用于罕见搜索)? - SuperUberDuper
@SuperUberDuper 我认为应该有自定义搜索范围来实现这个功能。 - Justinas
显示剩余3条评论

91

这是从搜索结果中排除目录的最佳方法。我在一个包含许多不想出现在搜索结果中的目录的大型Magento项目上工作,这解决了我的问题。如果您的项目包含/vendor目录,则此方法将有助于加快PHPStorm中的索引速度,因为它会被忽略。

右键单击任何文件夹以显示以下选项。

从搜索中排除


也适用于Laravel包开发。建议的方法是在项目根目录中创建packages文件夹。这样它将使用与您的主项目相同的类,因此您最终会得到大量重复的类存在错误。右键单击并执行此操作,就像魔法一样工作。作用域方法对我不起作用! - Juha Vehnia
轻松享受的解决方案 - CodeToLife

41

2016.3版本开始,可以在设置 > 外观和行为 > 作用域下找到此设置。

或者无论版本如何,只需进入设置并在顶部的搜索框中输入“scopes”即可。

然后只需单击+符号以添加作用域,选择要排除的文件夹,单击递归排除并应用。

然后使用CTRL + SHIFT + F进行搜索时,在选项> 作用域下选择“自定义”并选择刚创建的作用域(感谢评论者)。


4
如果你正在使用类似于cmd+shift+F的FIND命令,想要补充一下,在选项选项卡中,你可以选择自定义,然后选择省略号,它会打开作用域工具,你可以选择或创建一个范围以排除你需要的内容。 - daveferrara1
4
在我创建自定义范围后,我的搜索 Ctrl+Shift+F 仍然在全局范围内搜索,直到我明确选择了“Custom”并选择了@daveferrara1建议的我的范围。这会自动排除此文件夹的内容不被搜索...... - Dimitry K
1
2020年:在点击+后,“Local”与“Shared”选项意味着排除是否进入VCS。然后,您必须给它命名。接下来,在@DimitryK的步骤之后(现在称为Scope标签),您必须在下拉菜单中选择相同的名称。(Jetbrains UX的修改是否让其他人变成了抱怨的老头?) - Bob Stein

2
像@Justinas和评论者所说的那样:您可以创建一个自定义作用域,并在使用“查找路径”(以及类似工具)时每次选择该自定义作用域,因为PhpStorm默认不使用该自定义作用域。排除node_modules目录会破坏自动完成和其他代码辅助功能。您不想这样做。
但是,我发现了一种骇客方法,它不需要排除node_modules或自定义作用域:
1.关闭PhpStorm。确保它没有运行。 2.使用您喜欢的文本编辑器(只要不是PhpStorm),在项目目录中的.idea目录中打开name_of_your_project.iml。 3.删除一行。 4.保存。 5.重新开始愉快的生活。
我认为JetBrains将JavaScript/TypeScript的依赖项存储目录(如node_modules)和PHP的vendor默认包含在内,这是业余的。几乎没有任何用例将这些目录包含在查找和替换功能中,更不用说重构功能了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接