1. 前言
在AS中者铜,我們經(jīng)常使用 Ctrl+Shift+F
的 File in Path
去搜索內(nèi)容有滑,但是總是會搜索出很多非項目的或者包含Build下的文件結(jié)果涣脚,現(xiàn)在就來解決一下這個問題拌禾。
2. File in Path 的 Scope
Scope提供了自定義搜索范圍功能太援,可以添加設置自己想要的搜索范圍幅骄。
2.1 進入Scope設置
Ctrl+Shift+F
打開 File in Path
2.2 Scope設置介紹
2.3 Scope設置操作
3. 定制想要的搜索范圍
操作的時候劫窒,使用左邊目錄選擇,加右邊操作拆座,可以快速定制主巍。但是一般還需要通過手動調(diào)整 Pattern
來達到更精準效果。
3.1 默認搜索范圍
File in Path
默認搜索范圍包含三大塊挪凑,選擇 Package
方式查看孕索,分別是 Libs Classes
,Production Classes
岖赋,Test Classes
檬果。值得注意的是,使用 Project
只能看到 項目目錄唐断,但是搜索時的范圍选脊,還是包含前面提到的三大塊。在包含文件數(shù)目中脸甘,可以看到寫明【未顯示非項目目錄】
-
Libs Classes
:項目中所有使用到的類庫恳啥,除了引入的三方類庫如Okhttp
,還包含android sdk本身類庫 -
Production Classes
:項目文件丹诀。一般會分兩個目錄钝的。一個源碼目錄翁垂,一個非源碼目錄(包含build生成文件,未在settting中include的模塊等)硝桩。 -
Test Classes
:單元測試文件沿猜。
3.2 定制操作
- 定制過程,根據(jù)Package和Project相結(jié)合查看碗脊,當前Scope的搜索目錄范圍啼肩。
- 然后可以使用右側(cè)功能進行操作,或者直接修改過濾條件
Pattern
衙伶。建議熟悉語法后使用Pattern
祈坠,因為最終都是靠Pattern
生效的,而且右側(cè)功能局限太大矢劲,不夠靈活赦拘。 - 調(diào)整范圍后,邊上的搜索文件數(shù)目會實時更新芬沉,可以得知自己的語法有沒有生效躺同,是否過濾掉了一些非目標范圍。
- 切換
Package
和Project
查看目錄范圍丸逸,確認無誤后笋籽,保存。 - 最終實際使用椭员,查看搜索結(jié)果是否符合目的了。若未達到目標笛园,看看結(jié)果中還有哪些目錄未過濾掉隘击,然后再調(diào)整過濾條件重新嘗試。
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,后面//*
的一個 /
屬于轉(zhuǎn)意素征,放在 *
集嵌。
運算符
-
&&
:與 -
||
:或 -
!
:非
3.4 最終效果
下面以搜索 項目文件(包含未include模塊源碼)
為目的萝挤,給出最終結(jié)果,并解釋各項根欧。
file[*]:*/&&!file:*build//*&&!file[*]:*libs//*&&!test:*..*&&!file:*.iml&&!file:*.aar&&!file:mapping.txt&&!file:.gitignore&&!file:.idea//*&&!file:gradle//*
file[*]:*/
:指定范圍怜珍,項目下所有模塊的所有文件。這樣可以排除項目外的路徑凤粗,如Android庫等酥泛。!file:*build//*
:排除所有build文件夾及其內(nèi)容!file[*]:*libs//*
:排除所有模塊下libs文件夾及其內(nèi)容!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語法介紹