Sublime Text 新建未保存文件默认语法为 Plain Text,需配置 default_syntax 才能设为 Python/JS/Markdown;路径须完整准确(如 Packages/Python/Python.sublime-syntax),仅对无扩展名文件生效,保存后按扩展名优先匹配。

Sublime Text 新建的 untitled 文件默认是 Plain Text,不带任何高亮 —— 这不是 bug,是设计如此;想让它一打开就是 Python/JS/Markdown,必须配 default_syntax,且只对未保存、无扩展名的文件生效。
怎么给新建文件设默认语法?改 default_syntax 就行
打开 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)
为什么设了 default_syntax,一保存就变回 Plain Text?
常见于三类情况:
- 扩展名规则优先:一旦你保存为
.ts或打开已有.conf文件,Sublime 就按扩展名自动匹配,完全不走default_syntax - 插件干扰:比如某些语言包自带检测逻辑,覆盖了你的设置
- 语法定义自身有冲突:比如某个包的
.sublime-syntax文件里写了first_line_match规则,导致新建内容匹配失败而 fallback 到 Plain Text
验证方式:新建文件 → 输入 console.log(1) → 保存为 .js → 看右下角是否变成 JavaScript;如果不是,说明问题出在扩展名绑定或包启用状态上。
怎么让 .ts、.conf 这类文件自动高亮?点一下就搞定
打开一个 .ts 文件,右下角显示 “Plain Text”,点击它 → 选 “TypeScript” → 再点一次右下角当前语法 → 弹出 “Set as Default for .ts Files”,确认即可。
这个操作本质是往对应语法包的用户配置里写 "extensions": ["ts"],不是往全局 Preferences.sublime-settings 里硬塞。所以:
- 千万别在全局设置里直接写
"extensions": ["ts"]—— Sublime 会忽略它 - 如果点了 “Set as Default” 没反应,检查是否启用了
detect_syntax: true(在用户设置里搜这个词),它会覆盖你的手动设定 - 想批量绑多个扩展名(如
.conf、.ini、.cfg),可以先对其中一个执行上述操作,然后去Preferences → Package Settings → INI → Settings – User里补上其余扩展名
Markdown 和其他弱识别格式要特别小心
Sublime 自带的 Markdown 语法很弱,.md 文件常被识别成 Plain Text。解决办法不是改 default_syntax,而是:
- 先安装
MarkdownEditing插件(通过 Package Control) - 打开一个
.md文件,右下角点语法 →Open all with current extension as…→ 选Markdown GFM(来自 MarkdownEditing) - 别用自带的 “Markdown” 语法 —— 它不支持标题缩进、代码块嵌套高亮等关键特性
真正容易被忽略的是:Sublime 的语法识别是「逐层 fallback」的,顺序是「文件扩展名 → shebang 行 → first_line_match → default_syntax」。如果你的文件既没扩展名、又没 shebang、又没匹配行,最后才轮到 default_syntax —— 所以日常编辑中,default_syntax 实际生效场景比想象中少得多。


















