sublime text 新建文件默认为 plain text,需配置 default_syntax(路径精确到 .sublime-syntax)、new_file_content(仅 ctrl+n 有效,换行用 \n)和 default_encoding_on_save(如 "utf-8")才能实现语法高亮、模板内容与编码控制,且修改后须重启;default_extension 对新建无效,动态模板需插件支持。

Sublime Text 新建文件默认是 Plain Text,想让它一创建就带语法高亮、模板内容或特定编码,得靠组合配置,不是单个开关能搞定。
default_syntax 必须填对路径才能生效
这是控制新建文件语法的唯一可靠方式。它不看文件名、不看内容,只认你写的路径字符串。
-
default_syntax只在 Preferences → Settings(右侧用户设置)里生效,加在 JSON 对象里,比如:"default_syntax": "Packages/Python/Python.sublime-syntax" - 路径必须精确到
.sublime-syntax文件,大小写敏感;Packages/Markdown/Markdown.sublime-syntax和Packages/markdown/markdown.sublime-syntax是两个东西 - 旧版
.tmLanguage路径(如Packages/Text/Plain text.tmLanguage)仍可工作,但新语法推荐用.sublime-syntax - 改完必须重启 Sublime Text,部分版本不重启不加载新语法绑定
new_file_content 只对 Ctrl+N 有效,且不能换行写错
它和 default_syntax 配合,才能实现“新建即模板”。但这个字段有严格限制,不是所有场景都触发。
-
new_file_content只在按下Ctrl+N(Windows/Linux)或Cmd+N(macOS)时插入,双击侧边栏空白、拖入新标签页、从菜单 New File 都不走这条路 - 内容里换行必须用
\n,Windows 用户别用\r\n,否则可能显示为文字\r而非换行 - 示例(Markdown 前置声明):
"new_file_content": "---\ntitle: \"\"\ndate: \"\"\n---\n" - 它不支持变量(如
${date}),要动态内容得用插件(如 FileTemplates)
default_encoding_on_save 才真正决定保存时用什么编码
很多人以为 default_encoding 控制新建文件编码,其实它早已被弃用。真正起作用的是保存行为。
- 设
"default_encoding_on_save": "UTF-8"后,每次Ctrl+S都会以 UTF-8 写入磁盘,不管当前文件原来是什么编码 - 要带 BOM?只能写
"UTF-8 with BOM",其他写法(如"UTF8-BOM")会静默失效 - 新建空文件右下角显示 “UTF-8”,只是编辑器当前解码标识,不代表文件已含 UTF-8 字节——空文件没内容,自然没编码字节
- 如果项目需兼容老系统(如嵌入式设备只读 GBK),开这个选项前务必确认协作方接受 UTF-8 落盘
别指望 default_extension 或另存为对话框控制新建文件后缀
Sublime Text 的新建动作(Ctrl+N)天生不带扩展名,所有试图靠配置项“强制新建 .py 文件”的方案,本质都是绕路。
-
default_extension只影响“保存时没输后缀”的补全行为,对新建文件完全无效 - 想新建即
untitled.py,唯一稳的办法是装插件,比如AdvancedNewFile:按Ctrl+Alt+N输入main.py,它就直接新建并设好 Python 语法 - 手动方案是绑定快捷键,把
Ctrl+N重映射为先新建再执行set_syntax命令,但会覆盖原生命令,且无法区分上下文 - 冷门后缀(如
.log)若被插件劫持,得删掉对应插件的.sublime-syntax文件,再用View → Syntax → Open all with current extension as…手动重置一次
最常被忽略的一点:所有这些配置都只影响新 Untitled 文件,对已打开的文件完全无效。如果你看到某个文件左下角显示 “Western” 或乱码,说明它已经被 Sublime 按某种规则识别过了,此时改 default_syntax 或 default_encoding_on_save 都不会改变它的当前状态——得手动 Reopen with Encoding 再 Save with Encoding。











