先确认图标主题已启用:装完material-icon-theme或vscode-icons后必须手动执行preferences: file icon theme并选中对应主题(不可选none),再点reload window生效;右下角显示主题名即为启用成功,否则配置无效。

图标不显示?先确认主题已启用
装完 material-icon-theme 或 vscode-icons 后图标没变,不是插件坏了,是 VSCode 坚决不自动启用图标主题。必须手动执行 Preferences: File Icon Theme 命令,从列表里选中对应主题(不能选 None),然后点右下角弹出的 Reload Window —— 不重载,配置只是“存在”,不会生效。
检查是否生效最简单的方法:看右下角状态栏有没有出现主题名(如 Material Icon Theme)。没有就说明没启用成功。
常见失败原因:
-
workbench.iconTheme写在了错误位置(比如写进了keybindings.json) - 工作区
.vscode/settings.json里写了"workbench.iconTheme": null,会强制覆盖全局设置 - 扩展被禁用,或 ID 拼错(
material-icon-theme≠MaterialIconTheme≠material-icons)
给 .env.local、vite.config.ts 这类文件加图标
默认情况下,.env.local、.prettierrc.cjs、vite.config.ts 都只按最后一段后缀(local、cjs、ts)匹配图标,前面的修饰部分被忽略。要让它们显示齿轮、设置、工具等专属图标,得靠 files.associations 显式映射。
以 material-icon-theme 为例,在 settings.json 中添加:
"material-icon-theme.files.associations": {
".env.local": "gear",
".prettierrc.*": "settings",
"vite.config.ts": "typescript"
}
注意几个关键点:
- 键名是完整文件名或 glob 模式,不是正则;
.env.*只匹配一级(.env.dev✅,.env.dev.local❌) - 值必须是该主题已定义的图标名,比如
gear、settings、typescript,随便写config或env会被静默忽略 -
vscode-icons对应的字段是vsicons.associations.files,不是同一个 key
为什么 Dockerfile.prod 没变成 docker 图标?
这类多段命名的文件(Dockerfile.prod、pnpm-lock.yaml)默认也不会触发图标匹配,因为主题内置规则只认 Dockerfile 和 pnpm-lock.yaml 这种标准名。
解决办法还是走 files.associations,但要注意通配符限制:
-
"Dockerfile.*": "docker"→ 匹配Dockerfile.dev✅,不匹配Dockerfile.dev.prod❌ -
"*.test.js"是无效写法 —— VSCode 不支持前缀通配,正确写法是".test.js"(表示以.test.js结尾) - 图标名大小写敏感:
"docker"✅,"Docker"❌
改完保存后,必须执行 Developer: Reload Window 才能刷新已有窗口里的图标,否则资源管理器仍显示旧样式。
文件夹图标怎么自定义?不是靠名字硬匹配
文件夹图标不是根据文件夹名直接映射的,而是靠内容识别:有 package.json → JS 图标,有 pyproject.toml → Python 图标。所以单纯把文件夹命名为 docs 不会自动变成文档图标。
想强制指定,要用 folders.associations:
"material-icon-theme.folders.associations": {
"docs": "docs",
"scripts": "tools",
"migrations": "database"
}
这个配置只对 material-icon-theme 有效;vscode-icons 用的是 vsicons.associations.folders。
容易忽略的一点:图标名必须是主题内置的,查法有两个——打开插件 GitHub 仓库的 iconDefinitions 部分,或者在 VSCode 扩展页点「Contributions」标签看声明的图标名列表。写错名不会报错,只会回退到默认文件夹图标。











