Android Studio - File in Path 搜索你想要的

1. 前言

在AS中,我们经常使用 Ctrl+Shift+FFile in Path 去搜索内容,但是总是会搜索出很多非项目的或者包含Build下的文件结果,现在就来解决一下这个问题。

搜索结果中包含Build目录下文件结果

2. File in Path 的 Scope

Scope提供了自定义搜索范围功能,可以添加设置自己想要的搜索范围。

2.1 进入Scope设置

Ctrl+Shift+F 打开 File in Path

打开Scopes设置

2.2 Scope设置介绍

填写名称
Scope设置介绍

2.3 Scope设置操作

Scope设置操作

3. 定制想要的搜索范围

操作的时候,使用左边目录选择,加右边操作,可以快速定制。但是一般还需要通过手动调整 Pattern 来达到更精准效果。

3.1 默认搜索范围

File in Path 默认搜索范围包含三大块,选择 Package 方式查看,分别是 Libs ClassesProduction ClassesTest Classes值得注意的是,使用 Project 只能看到 项目目录,但是搜索时的范围,还是包含前面提到的三大块。在包含文件数目中,可以看到写明【未显示非项目目录】

  • Libs Classes:项目中所有使用到的类库,除了引入的三方类库如 Okhttp还包含android sdk本身类库
  • Production Classes:项目文件。一般会分两个目录。一个源码目录,一个非源码目录(包含build生成文件,未在settting中include的模块等)。
  • Test Classes:单元测试文件。

3.2 定制操作

定制操作
  • 定制过程,根据Package和Project相结合查看,当前Scope的搜索目录范围。
  • 然后可以使用右侧功能进行操作,或者直接修改过滤条件 Pattern。建议熟悉语法后使用 Pattern,因为最终都是靠 Pattern 生效的,而且右侧功能局限太大,不够灵活。
  • 调整范围后,边上的搜索文件数目会实时更新,可以得知自己的语法有没有生效,是否过滤掉了一些非目标范围。
  • 切换 PackageProject 查看目录范围,确认无误后,保存。
  • 最终实际使用,查看搜索结果是否符合目的了。若未达到目标,看看结果中还有哪些目录未过滤掉,然后再调整过滤条件重新尝试。

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语法介绍

你可能感兴趣的:(Android Studio - File in Path 搜索你想要的)