默认新建文件用 default_syntax 配置,如 "default_syntax": "packages/python/python.sublime-syntax",仅影响未保存、无扩展名的 untitled 文件,修改后需重启生效。

默认新建文件用什么语法?改 default_syntax 就行
Sublime 新建的 untitled 文件默认不带任何语法高亮,右下角显示 “Plain Text” —— 这不是 bug,是设计如此。要让它一打开就是 Python/JavaScript/Markdown,就得配 default_syntax。
这个设置只影响「从未保存、没路径、没扩展名」的新建文件;一旦你保存为 .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 或新建窗口才生效;如果无效,八成是路径拼错,或对应语法包被禁用了(检查
Preferences → Package Settings)
让 .ts、.conf 这类文件自动高亮?点一下就搞定
打开一个 .ts 文件,右下角显示 “Plain Text”,点击它 → 选 “TypeScript” → 再点一次右下角当前语法 → 弹出 “Set as Default for .ts Files”,确认即可。Sublime 会自动生成绑定规则,之后所有 .ts 都用 TypeScript 高亮。
这比手动编辑 JSON 安全得多,也更符合日常操作直觉。它本质是往对应语法包的用户配置里写 "extensions": ["ts"],不是往全局 Preferences.sublime-settings 里硬塞。
- 想批量绑多个扩展名(比如
.conf、.ini、.cfg),可以先对其中一个(如.conf)执行上述操作,然后去Preferences → Package Settings → INI → Settings – User里补上其余扩展名 - 千万别在全局设置里直接写
"extensions": ["ts"]—— Sublime 会忽略它 - 如果点了 “Set as Default” 没反应,检查是否启用了
detect_syntax: true(在用户设置里搜这个词),它会覆盖你的手动设定
为什么手动设了语法,一保存又变回 Plain Text?
常见于三类情况:扩展名规则优先、插件干扰、或语法定义自身有冲突。
- 文件已有扩展名(如
.js),而 Sublime 内置规则把它映射到 JavaScript,你临时设成 JSON,保存后会被重置 —— 这是正常行为,不是失效 - 装了
ApplySyntax或AutoSetSyntax这类插件,它们会在文件加载时重新分析内容并覆盖你的选择 - 某些语法定义里写了
first_line_match(比如检测文件首行是否有#!/usr/bin/env python),或file_extensions列表不包含你用的后缀,Sublime 就“认为”不该用你选的那个语法 - 临时绕过:按
Ctrl+Shift+P输入Set Syntax: JavaScript (Babel)这类带括号的变体,有时能避开内置规则限制
需要更灵活的识别逻辑?用 ApplySyntax 插件
当文件没后缀、后缀不标准(如 .env、.dockerfile)、或要靠路径/内容判断时,原生机制不够用,ApplySyntax 是最稳妥的解法。
它支持按扩展名、文件路径正则、甚至首行内容匹配,规则清晰可维护,且不会和原生机制打架。
- 用 Package Control 安装后,进
Preferences → Package Settings → ApplySyntax → Settings – User - 写一条规则,例如:
{"syntax": "Dockerfile/Dockerfile", "extensions": ["dockerfile", "Dockerfile"]} - 注意
syntax值是包名/文件名格式(不是完整路径),可通过View → Syntax菜单里右键 “Copy File Path” 获取准确值 - 规则生效需重启或重开文件;若仍不触发,检查语法包是否启用、路径是否含空格或中文
最容易被忽略的是:不同场景要用不同配置项 —— default_syntax 管新建空白文件,extensions 绑定扩展名,ApplySyntax 处理复杂逻辑。混用或错放位置,十次有九次不生效。










