You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code files.associations匹配中间子目录及通配符使用疑问

VS Code files.associations 通配符问题解答

哈哈,这个问题我之前折腾VS Code的时候也碰到过,它的文件关联通配符逻辑确实有不少细节要注意,咱们一步步说清楚:

为什么 somefolder/**/*.txt 不生效?

VS Code 的 files.associations 用的是标准 glob 通配符规则,其中 ** 的作用是匹配任意层级的子目录(至少一层,当它夹在两个路径段之间时)。

你尝试的 somefolder/**/*.txt,翻译过来就是:「匹配项目根目录下 somefolder 文件夹里至少一层子目录中的 .txt 文件」。但你的 .txt 是直接放在 somefolder 根目录下的,完全没经过子目录,所以这个模式自然匹配不到。

而你当前生效的 **/somefolder/*.txt,意思是:「匹配任意层级目录下的 somefolder 文件夹里的直接子 .txt 文件」——刚好覆盖了你放在 somefolder 根下的那些文件,所以能正常生效。

如何匹配中间子目录?

根据你的需求不同,有几种配置方式:

1. 覆盖 somefolder 下所有层级的 .txt(包括根下和子目录)

如果你想同时匹配 somefolder 根下的 .txt,以及它所有深层子目录里的 .txt,可以用两种方式:

  • 组合两个规则,分别覆盖直接子文件和子目录文件:
    {
      "files.associations": {
        "**/somefolder/*.txt": "sql",
        "**/somefolder/**/*.txt": "sql"
      }
    }
    
  • 用更简洁的单一规则,利用 ** 匹配任意层级(包括零层)的特性:
    {
      "files.associations": {
        "**/somefolder/**/*.txt": "sql"
      }
    }
    
    这个规则会匹配所有位置的 somefolder 下所有层级的 .txt,不管是 somefolder/a.txt 还是 somefolder/sub1/sub2/b.txt 都能覆盖到。

2. 匹配特定中间子目录下的 .txt

如果只想匹配 somefolder 下某一层特定的中间子目录(比如只匹配 somefolder/sub 下的所有 .txt),可以这样写:

{
  "files.associations": {
    "**/somefolder/sub/**/*.txt": "sql"
  }
}

内容的提问来源于stack exchange,提问作者Bernhard Döbler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:11:12