需同时配置a file icon映射与主题支持才能显示.env、.toml等冷门后缀图标,例如在settings–user中添加{"file_icons":{".env":"dotfile",".toml":"config"}},且主题须支持对应class渲染;语法高亮则需.sublime-syntax定义作用域并配合.tmtheme配色规则。

Sublime 里加自定义文件类型图标和高亮,不是装个插件就完事——图标靠 A File Icon + 主题协同,高亮靠 .sublime-syntax 文件 + .tmTheme 颜色规则双配合;缺一环,要么图标不显示,要么高亮全白。
怎么让 .env、.toml 这类文件在侧边栏显示图标
A File Icon 默认不认冷门后缀,得手动映射到它内置的图标名上,且主题必须支持该 class 渲染。
- 打开
Preferences → Package Settings → A File Icon → Settings – User - 添加映射,例如:
{ "file_icons": { ".env": "dotfile", ".toml": "config", ".yml": "config" } }注意:"dotfile"和"config"是插件内置名称,不能写成"env_icon"这种任意字符串 - 保存后图标通常秒变;若没反应,执行命令面板里的
A File Icon: Rebuild Icons - 如果用了
Material Theme,确认用户设置里有"material_theme_file_icons": true,否则它会忽略A File Icon的配置
如何为 .myconf 或 .schema 文件添加语法高亮
高亮生效 = 语法定义文件(.sublime-syntax)+ 作用域(scope)+ 主题颜色规则(.tmTheme)三者对齐;任一环节错位,高亮就失效。
- 用
Tools → Developer → New Syntax…创建模板,改写关键字段:name: MyConf file_extensions: [myconf, schema] scope: source.myconf contexts: main: - match: '^#.*$' scope: comment.line.number-sign.myconf - match: '^\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*=' captures: 1: variable.other.myconf - 保存为
Packages/User/myconf/myconf.sublime-syntax(路径要带文件夹,避免冲突) - 新建一个
test.myconf,右下角点语言名 →Open all with current extension as… → User → MyConf - 高亮仍不显?按
Ctrl+Shift+P→Show Scope Name,把光标停在关键字上,看状态栏显示的完整 scope(比如variable.other.myconf),然后去你当前.tmTheme文件的<key>rules</key>里找对应条目并配色
为什么 .ts 文件图标还是 JS、高亮也不对
这不是配置遗漏,是优先级打架:Material Theme 自带的 .ts 映射会覆盖 A File Icon 设置,而 TypeScript 插件默认也不处理 .tsx。
- 图标问题:先确认 Material Theme 是 2026 年 5 月后发布的版本;再检查用户设置是否有
"material_theme_file_icons": true;若仍不对,在A File Icon的Settings – User中强制指定:"file_icons": { ".ts": "typescript" } - 高亮问题:装好官方
TypeScript插件后,进Preferences → Package Settings → TypeScript → Settings,加一行:"enable_tsx": true
,否则.tsx会被当成纯文本 - 如果
.ts高亮异常,用Show Scope Name确认作用域是不是source.ts—— 若显示source.js,说明语法没正确加载,可能是插件禁用或被其他语法包劫持了扩展名绑定
真正容易被忽略的是:图标和高亮都依赖作用域链,但二者走的是不同通道——图标看文件后缀 + 插件映射 + 主题 class 支持,高亮看语法文件 + 作用域声明 + 配色方案匹配。同一文件,图标能出,高亮可能全白;反之亦然。调试时别混着查,分开验证更省时间。











