– 代理会话日,2月19日

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
    • Open in VS Code
    • Open in VS Code Insiders
    设置
  • search.exclude
    • Open in VS Code
    • Open in VS Code Insiders
    设置
  • .gitignore 文件模式(当
    explorer.excludeGitIgnore
    • Open in VS Code
    • Open in VS Code Insiders
    已启用时)
  • 搜索编辑器模式

例如,如果您的 .gitignore 文件包含模式 build/,则它将匹配 build/Build/BUILD/ 以及 Windows 和 macOS 上的其他大小写变体,但在 Linux 上仅匹配完全匹配项。这确保了与这些文件系统处理文件和文件夹名称的方式一致的行为。

远程开发: 当使用远程工作区(例如 WSL、SSH 或 dev 容器)时,glob 匹配行为遵循 远程 文件系统的区分大小写规则,而不是本地客户端的操作系统。

特殊情况

搜索视图中的 glob 模式与设置(例如 )中的 glob 模式工作方式不同

files.exclude
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
search.exclude
  • Open in VS Code
  • Open in 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.