default_syntax必须填完整且大小写精确的语法路径(如packages/python/python.sublime-syntax),仅对未保存的新建文件生效,修改后需重启sublime text才生效,插件如applysyntax可能覆盖该设置。

default_syntax 必须填对路径才能生效
Sublime Text 新建空白文件(Ctrl+N)默认是 Plain Text,改它唯一靠谱的方式就是配 default_syntax。这个字段只在用户设置里起作用,而且**值必须是完整、大小写精确的语法文件路径**,比如:"Packages/Python/Python.sublime-syntax"。写成 python、Python.tmLanguage 或 Packages/python/python.sublime-syntax 都会失效。
常见正确路径示例:
Packages/JavaScript/JavaScript.sublime-syntaxPackages/Markdown/Markdown.sublime-syntaxPackages/TypeScript/TypeScript.sublime-syntax
怎么确认路径对不对?打开一个已正确高亮的 .py 文件 → 按 Ctrl+Shift+P 输入 Show Scope Name → 看状态栏显示的 scope,比如 source.python,对应路径基本就是 Packages/Python/Python.sublime-syntax。
修改后必须重启才生效
很多人改完保存就去按 Ctrl+N 测试,发现还是 Plain Text——因为 Sublime Text 不会热重载 default_syntax 绑定。你得关掉所有窗口,再重新启动编辑器,新配置才会加载。
验证是否生效的方法:
- 新建文件后右下角直接显示语言名(如
JavaScript),不是Plain Text - 按
Ctrl+Shift+P输入Set Syntax,当前高亮项应与你配置的一致 - 如果仍显示
Plain Text,先检查控制台(Ctrl+`)有没有 JSON 解析错误(比如多逗号、少引号)
插件可能劫持新建逻辑,导致配置失效
像 ApplySyntax、DefaultFileSyntax 这类插件,默认优先级高于 default_syntax,会强行接管新建文件的语法判定。哪怕你配了 default_syntax,它们也能把它覆盖掉。
排查方法:
- 临时禁用这些插件(
Preferences → Package Control → Disable Package) - 重启 Sublime,再测试新建文件
- 如果这时生效了,说明是插件冲突;可选择卸载,或进插件设置关掉「new file」相关规则
注意:ApplySyntax 的规则里若包含 untitled 或空路径匹配,几乎一定会抢走控制权。
它只影响未保存的 untitled 文件
default_syntax 是个“窄口径”配置:它**只对没保存过、没路径、没扩展名的新建文件生效**。一旦你保存为 main.py,或者打开一个已有 index.js,Sublime 就完全不看这个设置,而是走扩展名映射或 first_line_match 规则。
所以别指望它能统一整个项目的默认行为。如果你需要:
- 让所有
.ts文件一打开就是 TypeScript → 右键右下角语法名 →Set as Default for .ts Files - 让项目内某个目录下新建文件自动用 YAML → 得靠
ApplySyntax写路径规则,default_syntax无能为力
最常被忽略的一点:这个配置不会改变文件内容、编码、换行符或后缀名——它只管高亮。要配模板内容,得用 new_file_content;要配换行符,得加 default_line_ending;要配编码,得设 default_encoding_on_save。它们互不干扰,也互不替代。











