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

1. 前言

在AS中,我們經(jīng)常使用 Ctrl+Shift+FFile in Path 去搜索內(nèi)容,但是總是會搜索出很多非項目的或者包含Build下的文件結(jié)果,現(xiàn)在就來解決一下這個問題。

搜索結(jié)果中包含Build目錄下文件結(jié)果

2. File in Path 的 Scope

Scope提供了自定義搜索范圍功能,可以添加設(shè)置自己想要的搜索范圍。

2.1 進入Scope設(shè)置

Ctrl+Shift+F 打開 File in Path

打開Scopes設(shè)置

2.2 Scope設(shè)置介紹

填寫名稱
Scope設(shè)置介紹

2.3 Scope設(shè)置操作

Scope設(shè)置操作

3. 定制想要的搜索范圍

操作的時候,使用左邊目錄選擇,加右邊操作,可以快速定制。但是一般還需要通過手動調(diào)整 Pattern 來達到更精準(zhǔn)效果。

3.1 默認搜索范圍

File in Path 默認搜索范圍包含三大塊,選擇 Package 方式查看,分別是 Libs Classes,Production ClassesTest Classes。值得注意的是,使用 Project 只能看到 項目目錄,但是搜索時的范圍,還是包含前面提到的三大塊。在包含文件數(shù)目中,可以看到寫明【未顯示非項目目錄】

  • Libs Classes:項目中所有使用到的類庫,除了引入的三方類庫如 Okhttp還包含android sdk本身類庫
  • Production Classes:項目文件。一般會分兩個目錄。一個源碼目錄,一個非源碼目錄(包含build生成文件,未在settting中include的模塊等)。
  • Test Classes:單元測試文件。

3.2 定制操作

定制操作
  • 定制過程,根據(jù)Package和Project相結(jié)合查看,當(dāng)前Scope的搜索目錄范圍。
  • 然后可以使用右側(cè)功能進行操作,或者直接修改過濾條件 Pattern。建議熟悉語法后使用 Pattern,因為最終都是靠 Pattern 生效的,而且右側(cè)功能局限太大,不夠靈活。
  • 調(diào)整范圍后,邊上的搜索文件數(shù)目會實時更新,可以得知自己的語法有沒有生效,是否過濾掉了一些非目標(biāo)范圍。
  • 切換 PackageProject 查看目錄范圍,確認無誤后,保存。
  • 最終實際使用,查看搜索結(jié)果是否符合目的了。若未達到目標(biāo),看看結(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語法介紹

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容