sublime text 新建文件(ctrl+n)默认为 plain text,需同时配置 default_syntax、new_file_content 和 default_encoding_on_save 并重启才生效;default_syntax 仅对无路径无内容的 untitled 文件生效,路径大小写敏感且必须完整;new_file_content 仅在 ctrl+n 时插入含 \n 的模板;default_encoding_on_save 决定保存编码,default_extension 对新建无效。

Sublime Text 新建文件(Ctrl+N)默认永远是 Plain Text,想让它一创建就带语法高亮、模板内容或特定编码,必须组合配置 default_syntax、new_file_content 和 default_encoding_on_save,缺一不可;改完必须重启,且 default_extension 对新建无效。
default_syntax 是唯一控制新建文件语法的配置项
它只对「无路径、无内容、未保存」的 untitled 文件生效,不看文件名、不依赖扩展名,只认你写的完整路径字符串。
-
default_syntax必须写在 Preferences → Settings – User(右侧用户设置)的 JSON 对象里,例如:"default_syntax": "Packages/Python/Python.sublime-syntax" - 路径大小写敏感,
Packages/Markdown/Markdown.sublime-syntax和Packages/markdown/markdown.sublime-syntax是两个不同路径 - 旧版
.tmLanguage路径(如Packages/Text/Plain text.tmLanguage)仍可工作,但 Sublime 4+ 推荐用.sublime-syntax - 查准确路径最稳的方法:打开一个已正确高亮的文件 →
Ctrl+Shift+P→ 输入Set Syntax: Python→ 再执行Tools → Developer → Show Scope Name,看状态栏显示的 scope(如source.python),然后去Packages/目录下对应文件夹找*.sublime-syntax文件
new_file_content 只在 Ctrl+N 时插入模板,换行必须用 \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) - 空内容 + 无扩展名 +
Ctrl+N是它唯一的生效场景
default_encoding_on_save 才真正决定落盘编码
很多人误以为 default_encoding 控制新建文件编码,其实它早已被弃用。真正起作用的是保存行为——新建空文件右下角显示 “UTF-8”,只是当前解码标识,不代表文件已含 UTF-8 字节(空文件没内容,自然没编码字节)。
- 设
"default_encoding_on_save": "UTF-8"后,每次Ctrl+S都以 UTF-8 写入磁盘,不管当前文件原来是什么编码 - 要带 BOM?只能写
"UTF-8 with BOM",其他写法(如"UTF8-BOM")会静默失效 - 如果项目需兼容老系统(如嵌入式设备只读 GBK),开这个选项前务必确认协作方接受 UTF-8 落盘
-
default_extension对新建文件完全无效,它只影响“保存时没输后缀”的补全行为
最容易被忽略的是:所有配置改完都必须重启 Sublime Text,部分版本不重启根本不会加载新语法绑定;而且 default_syntax 的路径一旦写错(大小写、拼写、缺 .sublime-syntax 后缀),就不会生效,也不会报错——只会安静地继续用 Plain Text。











