Sublime Text 新建文件默认为 Plain Text,需同时配置 default_syntax(精确路径)、new_file_content(仅 Ctrl+N 有效,换行用 \n)和 default_encoding_on_save(如 "UTF-8")才能实现语法高亮、模板内容与编码控制,修改后必须重启。

Sublime Text 新建文件默认是 Plain Text,想让它一打开就带语法高亮、模板内容、正确编码,不能只改一个配置项——default_syntax 是唯一入口,但必须配对 new_file_content 和 default_encoding_on_save 才算真正落地。
default_syntax 路径写错就完全失效
这个字段只认完整、大小写精确的语法路径,不识别缩写或模糊名。比如想设为 JavaScript,不能写 "JavaScript" 或 "js",而要从已正确高亮的文件里反查:
- 打开一个 .js 文件 → 右下角点击语言名 → 选
Open all with current extension as…→ 看菜单里显示的全称(如Packages/JavaScript/JavaScript.sublime-syntax) - 旧版插件可能用
.tmLanguage,路径是Packages/Babel/JavaScript (Babel).tmLanguage,注意括号和空格也得一模一样 - 路径中任何拼写错误(比如
JavaSript)、大小写偏差(javascript)、多余空格,都会导致 Sublime 静默忽略该行 - 修改后必须重启 Sublime,部分版本不重启不会加载新路径
new_file_content 只在 Ctrl+N 时触发,且换行只能用 \n
它和 default_syntax 是搭档关系,但行为非常受限:不是所有“新建”都走这条路。
- 仅响应
Ctrl+N(Windows/Linux)或Cmd+N(macOS),双击侧边栏空白、菜单栏New File、拖入新标签页都不触发 - 内容中换行必须写
\n,Windows 用户若复制粘贴带\r\n的文本,会把\r当作普通字符显示出来 - 示例(YAML 前置声明):
"new_file_content": "---\ntitle: \"\"\ndate: \"\"\n---\n" - 不支持变量(如
${date}),也不解析 XML 实体,引号必须手动转义
default_encoding_on_save 决定真实落盘编码,default_encoding 已废弃
很多人误以为 default_encoding 控制新建文件编码,其实它早在 ST3 后期就被弃用。真正起作用的是保存行为。
- 设
"default_encoding_on_save": "UTF-8"后,每次Ctrl+S都强制以 UTF-8 写入磁盘,不管当前文件原来是什么编码 - 要带 BOM?必须写
"UTF-8 with BOM",写成"UTF8-BOM"或"UTF-8+BOM"都无效 - 新建空文件右下角显示 “UTF-8”,只是编辑器当前解码标识,不代表文件已含 UTF-8 字节——空文件没内容,自然没编码字节
- 如果项目需兼容 GBK 环境(如某些嵌入式设备),开这个选项前务必确认协作方接受 UTF-8 落盘
别碰 default_extension,它对新建文件完全无效
这个字段只影响“另存为”对话框的默认后缀,和新建文件的语法、内容、编码毫无关系。有人试图靠它让 Ctrl+N 出来一个 .py 文件,结果发现右下角还是 Plain Text——因为 Sublime 根本不看扩展名,它只看是否已保存、是否有内容、是否匹配 default_syntax。
真正需要按用途区分默认语法(比如前端开发默认 JS,写配置默认 YAML),default_syntax 无能为力,必须上插件,比如 DefaultFileSyntax 或 ApplySyntax;而它们的规则首次触发时仍会闪一下 Plain Text——这是 Sublime 底层机制决定的,绕不开。


















