default_syntax仅对未保存的untitled文件生效,且必须使用完整路径如"Packages/Python/Python.sublime-syntax"(ST4)或".tmLanguage"(ST3),大小写敏感、格式不可混用,修改后需重启生效。

default_syntax 只对 untitled 文件生效,且必须写完整路径
Sublime Text 新建一个空白文件(Ctrl+N)时,默认显示为 Plain Text,这不是 bug,是设计如此。要让它一打开就带语法高亮,唯一可控的方式是在用户设置中添加 default_syntax 字段。
这个配置只影响「从未保存、无路径、无扩展名」的 untitled 文件;一旦你保存为 .py 或打开已有文件,Sublime 就完全按扩展名匹配语法,default_syntax 不起作用。
-
default_syntax值必须是完整路径,例如:"Packages/Python/Python.sublime-syntax"(ST4)或"Packages/Python/Python.tmLanguage"(ST3) - 路径大小写敏感,
.sublime-syntax和.tmLanguage不能混用;ST4 已不识别.tmLanguage - 修改后需重启 Sublime 或新建窗口才生效;如果右下角仍是
Plain Text,大概率是路径拼错或 JSON 格式非法 - 别手敲路径——先打开一个正确识别的
.py文件,按Ctrl+Shift+P输入Show Scope Name,状态栏显示source.python,对应路径基本就是Packages/Python/Python.sublime-syntax
扩展名绑定靠 Preferences.sublime-settings 的 extensions 字段
让所有 .ts 文件一打开就用 TypeScript 高亮,不是改语法包里的 file_extensions,也不是在 Default 设置里动,而是往用户级 Preferences.sublime-settings 中加 extensions 映射。
- 最稳妥操作:打开一个
test.ts→ 点右下角当前语法(如Plain Text)→ 选TypeScript→ 再点一次右下角 → 弹出Set as Default for .ts Files,确认即可 - 该操作会自动往
Packages/User/Preferences.sublime-settings写入类似:"extensions": ["ts", "tsx"],并关联到对应syntax路径 - 手动编辑时注意格式:整个 JSON 必须合法,
extensions是数组,每个元素是字符串,末尾不能多逗号 - macOS/Linux 下
.vue和.Vue被视为不同后缀;Windows 不区分大小写,但路径本身仍需大小写准确
ST3 和 ST4 的语法路径格式不能互换
Sublime Text 3 和 4 对语法定义文件的格式支持有明确分界:ST3 默认用 .tmLanguage,ST4 全面迁移到 .sublime-syntax。混用会导致静默失效——界面没报错,但高亮就是不出来。
- 查路径别翻文件夹:用
Ctrl+Shift+P→PackageResourceViewer: Open Resource→ 找到目标包 → 展开看后缀是.sublime-syntax还是.tmLanguage - ST4 用户若复制了 ST3 的路径(比如
Packages/JavaScript/JavaScript.tmLanguage),必须改成Packages/JavaScript/JavaScript.sublime-syntax - 某些老插件(如 ApplySyntax)可能仍依赖
.tmLanguage,但官方语法包已不再提供;强行启用会导致语法加载失败,右下角卡在Plain Text - 如果你装的是第三方 JavaScript 插件(如 JavaScript Next),它可能不注册
.js映射,此时即使写了extensions也无效——得换回官方 JavaScript 包
插件会覆盖 default_syntax 和 extensions 规则
像 ApplySyntax、AutoSetSyntax 这类插件,会在文件加载时重新分析内容并强制重设语法,优先级高于 default_syntax 和用户级 extensions 绑定。
- 验证是否被插件干扰:临时禁用这些插件,重启 Sublime,再测试新建文件或打开
.conf文件是否正常高亮 -
ApplySyntax支持自定义规则,但它的规则默认不读取default_syntax,所以即使你配了default_syntax,插件也会把它覆盖掉 - 某些插件(如 DefaultFileSyntax)允许用正则匹配文件名,比如
.*config.*→YAML,但它首次新建仍会闪一下Plain Text,这是 Sublime 底层机制决定的,绕不开 - 真要省事,与其强依赖插件,不如把常用语法加进命令面板:按
Ctrl+Shift+P输入JS回车,比鼠标点右下角快得多
default_syntax、extensions、插件规则、文件内 shebang、甚至当前光标所在 scope 都可能参与决策。一旦表现异常,优先检查插件冲突和路径拼写,而不是反复重装语法包。


















