Sublime Text 不具备自动识别文件内容的能力,仅通过扩展名(或BOM、shebang)匹配语法;新建.ts文件显示Plain Text属正常现象,应点击右下角“Plain Text”→“Set as Default for .ts Files”完成绑定。

Sublime Text 不会自动识别文件类型,所谓“自动识别”其实是靠你手动建立扩展名与语法的映射关系。它没有智能猜文件内容的能力,只认扩展名(或 BOM、shebang 等极少数规则),而且默认不预设任何绑定——所以新建 .ts 文件显示 Plain Text,打开 .log 文件不亮色,都是正常现象,不是 bug。
点击右下角“Plain Text”设为默认是最直接的方式
这是对绝大多数用户最安全、最不容易出错的操作路径:
- 打开一个
.ts文件 → 右下角显示Plain Text→ 点击它 → 选Set as Default for .ts Files - Sublime 会自动把
"extensions": ["ts"]写进当前语法(比如TypeScript)对应的用户配置中 - 此后所有
.ts文件都会默认用 TypeScript 语法高亮,无需再点 - 这个操作本质是修改了
Preferences.sublime-settings里的extensions字段,但你完全不用手动编辑 JSON
手动改 Preferences.sublime-settings 要小心路径和格式
如果你批量设置多个扩展名,或者想统一管理,可以手动编辑用户设置:
- 菜单 →
Preferences → Settings – User - 在右侧 JSON 块里添加:
{ "extensions": ["ts", "tsx", "js", "jsx"] }(注意:这行必须放在某个语法包的专属配置里,不是全局设置!) - ⚠️ 错误做法:直接在全局
Preferences.sublime-settings里写"extensions"—— Sublime 会忽略它 - ✅ 正确做法:先用上面“点击右下角”方式为某个扩展名设一次默认,Sublime 就会自动生成类似
TypeScript.sublime-settings的文件,你再去里面加其他扩展名
为什么 default_extension_map 或 file_extensions 不推荐
网上有些教程让你在用户设置里写 "default_extension_map" 或 "file_extensions",这些字段Sublime Text 4 已废弃或不生效:
-
default_extension_map是 ST2/ST3 旧版遗留,ST4 完全不识别 -
file_extensions不是官方配置项,属于混淆写法,加了也没用 - 真正起作用的只有语法包自己定义的
extensions列表(在Packages/TypeScript/TypeScript.sublime-settings这类文件里) - 强行手写路径如
Packages/JavaScript/JavaScript.sublime-syntax极易拼错,大小写、斜杠、后缀(.sublime-syntax vs .tmLanguage)都得严丝合缝
插件 ApplySyntax 适合特殊场景,但非必需
如果你有大量无扩展名脚本(如 deploy、build)、或靠文件内容/路径匹配语法(比如 /config/nginx.conf 用 Nginx 语法),才值得装 ApplySyntax:
- 安装后,在
Preferences → Package Settings → ApplySyntax → Settings里写规则,例如:{ "syntax": "Nginx/Nginx", "rules": [{ "file_path": ".*nginx\\.conf$" }] } - 普通项目开发中,纯靠扩展名绑定已足够;插件反而增加启动负担和配置复杂度
- 一旦启用 ApplySyntax,它会接管语法识别逻辑,可能覆盖你之前用“右下角设置”的结果,调试成本上升










