Glob 模式參考

Visual Studio Code 在許多組件中都會使用 Glob 模式。範例包括在諸如搜尋等功能中設定檔案與資料夾的包含/排除項目、從檔案總管隱藏檔案或將其標記為唯讀,以及設定程式語言特定的檔案關聯。

Glob 模式語法

VS Code 支援下列 Glob 語法

  • / 用於分隔路徑區段
  • *:符合路徑片段中零個或多個字元
  • ?:符合路徑片段中一個字元
  • **:符合任意數量的路徑片段,包括沒有
  • {} 用於分組條件(例如 {**/*.html,**/*.txt} 可比對所有 HTML 與文字檔案)
  • [] 用於宣告要比對的字元範圍(example.[0-9] 可比對 example.0example.1 等等)
  • [!...] 用於否定要比對的字元範圍(example.[!0-9] 可比對 example.aexample.b,但不會比對 example.0

注意:即使在 Windows 上,路徑也使用 / 而非 \ 來分隔。但在實際應用時,Glob 模式將會比對包含斜線與反斜線的路徑。

大小寫敏感度

Glob 模式的比對行為會根據平台的檔案系統而有所不同

  • Windows 與 macOS:Glob 模式預設為不區分大小寫。例如,模式 **/MyFolder/** 將會比對 myfolder/MyFolder/MYFOLDER/ 以及任何其他大小寫變化。
  • Linux:Glob 模式為區分大小寫。模式 **/MyFolder/** 將僅比對完全符合該大小寫的資料夾。

這種基於平台的行為適用於 VS Code 中所有 Glob 模式的使用情境,包括:

  • 搜尋檢視的包含/排除模式
  • files.exclude 在 VS Code 中開啟 在 VS Code Insiders 中開啟 設定
  • search.exclude 在 VS Code 中開啟 在 VS Code Insiders 中開啟 設定
  • .gitignore 檔案模式(當 explorer.excludeGitIgnore 在 VS Code 中開啟 在 VS Code Insiders 中開啟 啟用時)
  • 搜尋編輯器模式

例如,如果您有一個包含 build/ 模式的 .gitignore 檔案,在 Windows 與 macOS 上這將會比對 build/Build/BUILD/ 與其他大小寫變體,但在 Linux 上則僅比對精確相符的項目。這能確保與這些檔案系統處理檔案與資料夾名稱的方式保持一致。

遠端開發:當使用遠端工作區(例如 WSL、SSH 或開發容器)時,Glob 比對行為會遵循遠端檔案系統的大小寫敏感度規則,而非本機客戶端的作業系統規則。

特殊情況

搜尋檢視中的 Glob 模式運作方式與 files.exclude 在 VS Code 中開啟 在 VS Code Insiders 中開啟 search.exclude 在 VS Code 中開啟 在 VS Code Insiders 中開啟 等設定中的運作方式不同。在設定中,您必須使用 **/example 來比對工作區中 folder1/example 子資料夾內名為 example 的資料夾。在搜尋檢視中,則會預設包含 ** 前綴。這些設定中的 Glob 模式始終會相對於工作區資料夾的路徑進行評估。

常見問題

為什麼 Glob 模式不支援 X 或 Y 功能?

我們實作了自己的 Glob 比對程式庫,目標是為大多數典型模式提供最佳效能。如果您希望支援特定的 Glob 語法,您可以提交問題報告並提供您的使用案例。

為什麼我的 Glob 模式無效?

請確保在 Windows 上您使用的是 / 來分隔路徑,而不是 \。VS Code 中的 Glob 模式要求使用 / 來分隔路徑,但它們在路徑中會同時比對 /\

如果您試圖字面上比對特殊字元(例如 []),請透過將特殊字元放置在方括號內(單字元範圍)來進行跳脫,以避免它在模式比對中被解譯。反斜線無法對其進行跳脫。例如,若要比對 src/routes/post/[id]/ 下的檔案,您應使用模式 src/routes/post/[[]id[]]/**

© . This site is unofficial and not affiliated with Microsoft.