sublime text新建空白文件默认用“plain text”,不继承上次语法;唯一可控方式是正确配置user设置中的default_syntax,指向完整大小写敏感的.sublime-syntax路径,且需重启生效。

Sublime Text 新建文件默认不记上次语法,default_syntax 是唯一可控入口
Sublime Text 的 Ctrl+N 新建空白文件(untitled)永远从 “Plain Text” 开始,它不会记住你上一次手动点右下角选的 JavaScript 或 Python —— 这不是 bug,是底层设计。所谓“保持上次设置”,实际是指:让所有新文件一打开就固定用某一种语法高亮,而非每次重来。唯一能稳定干预这个行为的配置项,只有用户设置里的 default_syntax。
default_syntax 必须填对路径,否则完全不生效
填错路径是失效最常见原因。它不是写 "JavaScript" 或 "Python",而是完整指向一个 .sublime-syntax 文件(Sublime Text 4)或 .tmLanguage(ST3)。路径大小写敏感、不能多空格、不能漏后缀。
- 正确示例:
"default_syntax": "Packages/Python/Python.sublime-syntax" - 错误写法:
"default_syntax": "Python"、"packages/python/python.sublime-syntax"(小写)、"Packages/Python/Python.sublime-syntax "(末尾空格) - 查真实路径最稳方法:打开一个已正确高亮的
.py文件 →Ctrl+Shift+P输入Show Scope Name→ 看状态栏显示source.python→ 对应路径基本就是Packages/Python/Python.sublime-syntax - 改完必须重启 Sublime Text,部分版本不重启不加载新语法绑定
为什么改了 default_syntax 还是 Plain Text?排查这几点
即使路径看着没错,也可能被其他机制覆盖或静默忽略:
-
default_syntaxes或default_syntac拼写错误:Sublime 直接跳过该行,不报错也不提示 - 对应语法包被禁用:进
Preferences → Package Settings确认Python或JavaScript插件处于启用状态 - 插件劫持:
ApplySyntax、DefaultFileSyntax等插件会拦截新建逻辑,优先级高于default_syntax;临时禁用它们可验证是否冲突 - JSON 格式非法:多一个逗号、少一个引号,整个用户设置加载失败,Sublime 回退到默认行为;可用在线 JSON 校验器粘贴检查
- 误改了 Default 设置:必须改
Preferences → Settings – User右侧面板,左侧 Default 是只读的,改了也无效
真要按项目/路径区分默认语法?得靠插件,且有硬伤
default_syntax 是全局单值,无法实现「前端目录下新建默认 JS,配置目录下新建默认 YAML」。这时只能上插件:
-
ApplySyntax:支持基于文件路径正则匹配,比如~/projects/frontend/.*→ 设为 JavaScript -
DefaultFileSyntax:更轻量,规则写成{"extensions": ["test"], "syntax": "Packages/Python/Python.sublime-syntax"} - 但两者都有共同限制:首次新建仍会闪一下 “Plain Text”,再跳转——这是 Sublime 底层机制决定的,绕不开
- 插件规则需手动编辑 JSON,且首次生效前常需重启或重载插件
真正容易被忽略的一点:default_syntax 只对「从未保存、无路径、无内容」的 untitled 文件生效;一旦你保存过某 untitled 为 .py,它就会记住那次选择,下次再新建同名文件时,Sublime 会优先沿用你上次手动设的语法,而不是 default_syntax —— 这个“记忆”是文件粒度的,不是全局的。











