sublime text 的 default_syntax 仅对未保存的 untitled 文件生效,值须为大小写敏感的完整路径(如 packages/python/python.sublime-syntax),修改后需重启或新建窗口;已存文件、带扩展名或 shebang 的文件均忽略此设置,语法高亮实际由扩展名绑定、语法包加载状态及 shebang 共同决定。

Sublime Text 新建的 untitled 文件默认是 Plain Text,不是 bug,是设计如此;要让它一打开就是 Python/JavaScript/Markdown,必须配 default_syntax,且只对未保存、无路径、无扩展名的文件生效。
default_syntax 只影响 untitled 文件,改了也不管已存文件
这个配置项完全不参与文件加载流程的后半段:一旦你保存为 .py、打开一个已有 .ts 文件,或文件带 shebang(如 #!/usr/bin/env node),Sublime 就直接按扩展名或首行规则匹配语法,default_syntax 彻底被跳过。
-
default_syntax的值必须是完整路径,大小写敏感,ST4 用.sublime-syntax,ST3 用.tmLanguage - 别手敲路径——先打开一个正确识别的 Python 文件,按
Ctrl+Shift+P输入Show Scope Name,状态栏显示source.python,对应路径基本就是Packages/Python/Python.sublime-syntax - 改完设置需重启 Sublime 或新建窗口才生效;如果仍显示 Plain Text,八成是路径拼错,或
Packages/Python/被禁用了(检查Preferences → Package Settings)
右下角显示 Plain Text ≠ 语法没装,而是没绑定扩展名
很多人以为装了插件就自动高亮,结果打开 .zig 或 .dhall 还是黑白一片——这和 default_syntax 无关,纯粹是因为 Sublime 默认根本不认识这些后缀。它只靠扩展名查表,没条目就 fallback 到 Plain Text。
- 验证语法包是否加载:打开文件 → 点右下角 → 看菜单里有没有目标语言名(如
Zig、Dhall);没有说明插件未启用或路径损坏 - 绑定扩展名最稳的方式:点右下角 → 选对语法 → 再点右下角 → 弹出
Set as Default for .zig Files,确认 - 别信文件图标或颜色变化——有些插件只改图标不提供语法定义,
Plain Text状态才是唯一可信信号
想让 .conf / .env / .s 自动高亮?别堆 extensions_associations
在用户设置里写 "extensions_associations": {".conf": "Packages/Apache/Apache.sublime-syntax"} 看似合理,但该字段优先级低于插件自带映射,容易被覆盖。更可靠的是按语法建独立设置文件。
- 对
.conf类文件:在Packages/User/下新建Apache.sublime-settings,内容为:{ "extensions": ["conf", "vhost", "apache2"] } - 对
.env、.cfg:建ShellScript.sublime-settings,内容为:{ "extensions": ["env", "cfg", "ini"] } -
.s和.S必须分别绑定——Sublime 视为两个独立后缀;且以#开头的.s文件会被强制判为 Shell,得先切语法再绑定
最容易被忽略的点:default_syntax 不影响任何已存在文件,也不影响项目内文件的语法识别逻辑;真正决定高亮的,永远是「扩展名绑定」+「语法包是否加载成功」+「文件是否带 shebang」这三者。改完设置不重启、不验证 scope、不检查禁用列表,90% 的“不生效”问题都卡在这几步。











