1. 前言
在AS中,我们经常使用 Ctrl+Shift+F
的 File in Path
去搜索内容,但是总是会搜索出很多非项目的或者包含Build下的文件结果,现在就来解决一下这个问题。
2. File in Path 的 Scope
Scope提供了自定义搜索范围功能,可以添加设置自己想要的搜索范围。
2.1 进入Scope设置
Ctrl+Shift+F
打开 File in Path
2.2 Scope设置介绍
2.3 Scope设置操作
3. 定制想要的搜索范围
操作的时候,使用左边目录选择,加右边操作,可以快速定制。但是一般还需要通过手动调整 Pattern
来达到更精准效果。
3.1 默认搜索范围
File in Path
默认搜索范围包含三大块,选择 Package
方式查看,分别是 Libs Classes
,Production Classes
,Test Classes
。值得注意的是,使用 Project
只能看到 项目目录,但是搜索时的范围,还是包含前面提到的三大块。在包含文件数目中,可以看到写明【未显示非项目目录】
-
Libs Classes
:项目中所有使用到的类库,除了引入的三方类库如Okhttp
,还包含android sdk本身类库 -
Production Classes
:项目文件。一般会分两个目录。一个源码目录,一个非源码目录(包含build生成文件,未在settting中include的模块等)。 -
Test Classes
:单元测试文件。
3.2 定制操作
- 定制过程,根据Package和Project相结合查看,当前Scope的搜索目录范围。
- 然后可以使用右侧功能进行操作,或者直接修改过滤条件
Pattern
。建议熟悉语法后使用Pattern
,因为最终都是靠Pattern
生效的,而且右侧功能局限太大,不够灵活。 - 调整范围后,边上的搜索文件数目会实时更新,可以得知自己的语法有没有生效,是否过滤掉了一些非目标范围。
- 切换
Package
和Project
查看目录范围,确认无误后,保存。 - 最终实际使用,查看搜索结果是否符合目的了。若未达到目标,看看结果中还有哪些目录未过滤掉,然后再调整过滤条件重新尝试。
3.3 语法简介
语法格式
-
[header][model_name]:path
:model_name不一定需要。例:file[Example.app]:src/main/myDir/*
。
头部
-
file
:指定文件 -
src
:项目src目录文件 -
lib
:引用到的库文件,包括第三方及android sdk的。 -
test
:测试用例文件
指定模块
-
[heard][module name]
:例如file[app]
,或file[Demo.app]
。
尾部
路径,可以用 *
代表作为通配符,指任意。例如:file:*/build//*
,指任意build目录,匹配xxx/build/xxxxx,后面//*
的一个 /
属于转意,放在 *
。
运算符
-
&&
:与 -
||
:或 -
!
:非
3.4 最终效果
下面以搜索 项目文件(包含未include模块源码)
为目的,给出最终结果,并解释各项。
file[*]:*/&&!file:*build//*&&!file[*]:*libs//*&&!test:*..*&&!file:*.iml&&!file:*.aar&&!file:mapping.txt&&!file:.gitignore&&!file:.idea//*&&!file:gradle//*
file[*]:*/
:指定范围,项目下所有模块的所有文件。这样可以排除项目外的路径,如Android库等。!file:*build//*
:排除所有build文件夹及其内容!file[*]:*libs//*
:排除所有模块下libs文件夹及其内容!test:*..*
:排除所有test用例!file:*.iml
:排除iml类型文件!file:*.aar
:排除aar类型文件!file:mapping.txt
:排除mapping.txt文件!file:.gitignore
:排除gitignore文件!file:.idea//*
:排除idea目录!file:gradle//*
:排除gradle目录
4. Scope组合使用
除了直接使用一条完整的Scope过滤代码,也可以把他们拆开,使用 &&
、||
、!
进行自由组合。记得先保存,引用才能生效。
4. 参考
StackOverflow:
Android Studio : Exclude files in build folder from search result
IntelliJ IDEA - JetBrains:
Scopes—IntelliJ IDEA - JetBrains
Scopes语法介绍