sublime text新建untitled文件默认为plain text,需配置default_syntax(如"packages/python/python.sublime-syntax")并重启才生效,仅影响未保存、无扩展名的文件;路径须精确、大小写敏感,且不适用于已有扩展名或被插件干扰的情况。

Sublime Text 新建的 untitled 文件默认是 Plain Text,这不是 bug,是设计如此;想让它一打开就带语法高亮,必须配 default_syntax,且路径必须精确到 .sublime-syntax 文件,错一个字符或大小写都不生效。
default_syntax 怎么配才生效
这个配置只影响未保存、无路径、无扩展名的新建文件(比如按 Ctrl+N),一旦你保存为 .py 或打开已有文件,Sublime 就走扩展名匹配逻辑,完全不看它。
- 打开
Preferences → Settings – User,在右侧 JSON 里加一行:"default_syntax": "Packages/Python/Python.sublime-syntax" - 路径必须完整、大小写敏感、后缀不能错:ST4 用
.sublime-syntax,ST3 才用.tmLanguage - 别手敲路径——先打开一个
.py文件,按Ctrl+Shift+P输入Show Scope Name,看到source.python,对应路径基本就是Packages/Python/Python.sublime-syntax - 改完保存,必须重启 Sublime 或新建窗口才生效;如果右下角还是 Plain Text,八成是路径拼错,或者对应语法包被禁用了(检查
Preferences → Package Settings)
怎么让 .conf、.ts 这类文件自动高亮
点一下右下角就能搞定,比手动改 JSON 更安全、更直观。
- 打开一个
.ts文件,右下角显示 “Plain Text”,点击它 → 选 “TypeScript” → 再点一次右下角当前语法 → 弹出 “Set as Default for .ts Files”,确认即可 - Sublime 会自动往对应语法包的用户设置里写
"extensions": ["ts"],不是往全局Preferences.sublime-settings里硬塞 - 如果点了没反应,检查用户设置里有没有
"detect_syntax": true,它会覆盖你的手动设定 - 想批量绑多个扩展名(比如
.conf、.ini、.cfg),可以先对其中一个执行上述操作,然后去Preferences → Package Settings → INI → Settings – User里补上其余扩展名
为什么设了 default_syntax 还是变回 Plain Text
常见于三类情况:扩展名规则优先、插件干扰、或语法定义自身有冲突。
- 文件已有扩展名(如
.js),而 Sublime 内置规则把它映射到 JavaScript,你临时设成 JSON,保存后会被重置——这是正常行为,不是失效 - 某些插件(如
ApplySyntax)会劫持新建文件逻辑,优先级高于default_syntax;临时禁用它们可验证 -
default_syntax值写成default_syntac或default_syntaxes,Sublime 直接忽略该行 - JSON 格式错误:多了一个逗号、少了一个引号,整个用户设置加载失败,Sublime 回退到默认行为
不同语言需要不同缩进和高亮?用 Syntax Specific
全局 default_syntax 是单值的,没法按场景切换;但每种语言可以单独配,优先级更高。
- 打开一个 Python 文件 →
Preferences → Settings – Syntax Specific,Sublime 会生成Packages/User/Python.sublime-settings - 文件名必须跟语法名完全一致(大小写、空格、点都不能错),否则不认
- 在里面写:
"tab_size": 4、"translate_tabs_to_spaces": true、"color_scheme": "Packages/User/MyGreen.tmTheme" - 这个文件只对 Python 语法生效,不影响 JS 或 Markdown;改完保存立刻生效,无需重启
真正容易被忽略的是:所有语法专属配置都依赖准确的语法名,而语法名来自作用域(scope),不是文件扩展名也不是菜单里显示的名字;source.python 和 source.js 这类字符串才是 Sublime 内部识别语言的唯一依据,路径、配置、插件规则都得跟着它走。











