Sublime Text新建文件默认为Plain Text,需在用户设置中配置default_syntax(如"Packages/Python/Python.sublime-syntax"),路径须精确、大小写敏感且重启生效,仅对无路径无扩展名的untitled文件有效。

Sublime Text 新建文件默认是 Plain Text,想让它一打开就带语法高亮,必须手动配 default_syntax,且路径必须精确、大小写敏感、改完必须重启——没别的捷径。
default_syntax 路径怎么写才有效
它不是填 Python 或 JavaScript 这种名字,而是完整指向一个 .sublime-syntax 文件的路径。写错一个字母、多一个空格、大小写不对,全白搭。
- 正确示例:
"default_syntax": "Packages/Python/Python.sublime-syntax"(Sublime Text 4)或"Packages/JavaScript/JavaScript.tmLanguage"(ST3 兼容) - 错误写法:
Packages/python/python.sublime-syntax(小写 python)、Packages/Python/Python.sublime-syntax(末尾空格)、Packages/Python/Python.sublime-syntax.json(多加后缀) - 查真实路径最稳方式:打开一个已正确高亮的 .py 文件 → 按
Ctrl+Shift+P→ 输入Show Scope Name→ 看状态栏显示的source.python→ 对应路径基本就是Packages/Python/Python.sublime-syntax - 别去文件管理器里翻包名拼写,
Packages/Markdown/Markdown.sublime-syntax和Packages/markdown/markdown.sublime-syntax是两个不同路径
为什么改了 default_syntax 还是 Plain Text
这个设置只对「从未保存、无路径、无扩展名」的 untitled 文件生效。一旦你保存成 .js 或打开已有文件,Sublime 就按扩展名自动匹配,完全不看 default_syntax。
- 常见失效原因:没重启 Sublime Text(必须重启,部分版本不重启不加载新语法绑定)
- 用户设置 JSON 格式错误(比如多了一个逗号、少了一个引号),整个配置块加载失败,退回到默认行为
- 装了
ApplySyntax这类插件,它会劫持新建逻辑,优先级高于default_syntax;可临时禁用插件验证 - 误改了左侧的 Default 设置(灰色不可编辑区域),升级后会被重置;必须改右侧 User 设置
new_file_content 只在 Ctrl+N 时起作用
它和 default_syntax 配合,才能实现“新建即模板”,但触发条件非常窄。
- 仅响应
Ctrl+N(Windows/Linux)或Cmd+N(macOS);双击侧边栏空白、菜单 New File、拖入新标签页都不触发 - 换行必须用
\n,Windows 用户别用\r\n,否则\r会原样显示为字符 - 示例(Markdown 前置声明):
"new_file_content": "---\ntitle: \"\"\ndate: \"\"\n---\n" - 不支持变量(如
${date}),要动态内容得靠插件,比如FileTemplates
扩展名自动识别该配哪里
让 .ts 文件一打开就是 TypeScript,或 .cfg 默认用 Ini 高亮,不能动 default_syntax,得走另一套机制。
- 最简单方法:打开一个
.ts文件 → 右下角点当前语法(如 Plain Text)→ 选 TypeScript → 弹出提示 “Set as Default for .ts Files” → 点确认 - 等效配置是往用户设置里加:
"extensions": ["ts"],但值不是语言名,而是扩展名数组 - 更精细控制(比如只对某个项目生效)需创建语法专属配置文件,如
Packages/User/TypeScript.sublime-settings,里面写{"extensions": ["ts"]} - 注意:
extensions字段只认扩展名,不接受通配符或路径规则;真要按路径匹配(如~/proj/frontend/*.js),只能靠ApplySyntax插件
最容易被忽略的一点:所有这些配置都依赖 Sublime 的语法定义文件真实存在。如果你没装 TypeScript 插件,却配了 Packages/TypeScript/TypeScript.sublime-syntax,那新建文件照样回退到 Plain Text——它不会报错,只是静默失效。


















