引言
今天来分享2个很多idea老手都不知道的小技巧,旨在提升在 IntelliJ IDEA 系列 IDE 中的开发效率。🚀
该技巧可轻松扩展到任何语言的项目中,也同样适用于goland,pycharm。
看看你是否对下面的截图有同感!🙊
如果你在 Flutter 项目(尤其是大型项目 ☕️)中使用 IntelliJ IDEA 进行开发,并且项目中包含来自不同包的生成文件,如果有比较大的重复的内容,那么一般的搜索技巧很可能就会失效。
你可能已经经历过,使用“在文件中查找”功能时,在非生成文件中滚动查找类、变量或其他内容时的痛苦。
而IDEA也想到了这个问题,所以推出了一个file mask技巧:通过特定模式来筛选、匹配或隐藏数据的技术。其核心思想是“用规则过滤目标”,常见于文件搜索、网络配置、图像处理等场景。
如何创建高效的文件掩码?⚡️
好消息是,有一个解决方案!技巧在于简单地编辑文件掩码,如下所示:
从默认的:
*.dart
改为:
!.g.dart,!.freezed.dart,*.dart
这里涉及到了几个常用的通配符,
你可以清楚地看到差异,匹配结果从 28 个减少到 19 个。
你会发现这更舒适,因为这意味着在这种情况下,你的下拉窗口中移除了超过 9 个结果。
这意味着更少的滚动!!!😍
它是如何工作的?🧐
掩码: !*.g.dart,!*.freezed.dart,*.dart
操作符
,表示匹配正则表达式之间的分隔符。!表示否定(排除)。
表达式解析
- 匹配 1:
!*.g.dart
不匹配以.g.dart结尾的文件。 - 匹配 2:
!*.freezed.dart
不匹配以.freezed.dart结尾的文件。 - 匹配 3:
*.dart
默认匹配所有 Dart 文件。
因此,IDE 将仅在 Dart 文件中匹配表达式,并跳过 Freezed 或 Riverpod 生成的文件的匹配。
通过扩展,你可以轻松地添加或删除任何文件匹配,只需将其添加到掩码中即可:
,!*.new_file_mask_i_want_to_skip.ext,*.new_file_i_want_to_match.ext
file mask的缺点是无法排除一整个路径下的文件,这种情况就可以使用scopes功能。
JetBrains 作用域(Scope)是一组文件的集合,用于在特定操作(如代码搜索、重构、导航等)中临时包含或排除这些文件。通过创建作用域,您可以定制搜索范围,使其仅聚焦于项目的特定部分,从而过滤掉无关的匹配项和干扰信息。
配置自己的scopes
比如你用python Django开发的时候,很多时候只想搜索model的位置,就可以向这样配置一个自己的scope
file:*/models.py||file:*/models/*.py
接着就可以在搜索的实现选择scopes了
