sublime text 本身不支持“新建文件即套模板”,default_content字段不存在;可行方案有三:filetemplates插件(需模板名匹配扩展名、路径正确、变量用双百分号)、default.sublime-keymap绑定ctrl+n(全局单行内容)、snippet手动触发(需先设对应语法)。

Sublime Text 本身不支持“新建文件即套模板”,default_content 字段根本不存在,硬往 Preferences.sublime-settings 里加是白忙活。
FileTemplates 插件:按扩展名自动套模板的唯一靠谱方案
这是目前最接近“开箱即用”的方式,但三个条件缺一不可,否则模板静默失效:
- 模板文件必须放在
Packages/FileTemplates/templates/目录下(不是User/) - 文件名必须严格匹配扩展名:想新建
.py就带头注释,模板名只能是python.tmpl(不是py.tmpl或Python.tmpl) - 变量必须用双百分号:
${date:%%Y-%%m-%%d},单个百分号会被 Sublime 当作转义符吃掉
常见失败现象:新建后没反应。先按 Ctrl+` 打开控制台,看有没有 Failed to load template 报错——大概率是模板路径含中文、空格,或权限问题。
Default.sublime-keymap 绑定 Ctrl+N:全局单行内容的轻量替代
如果你只要所有新文件都带时间戳或作者名这类统一前缀,不用区分语言,这个方案最省事,但会彻底接管 Ctrl+N:
- 在
Packages/User/Default.sublime-keymap中添加键绑定,contents值必须是单行字符串,换行用\n -
${file_name}在未保存的新建文件中为空,只有${date}可靠 - 示例片段:
[ { "keys": ["ctrl+n"], "command":"insert_snippet", "args": { "contents":"# ${date:%%Y-%%m-%%d} - New file\n" } } ]
注意:它不管当前语法,也不管你从侧边栏右键新建还是拖入文件,所有触发路径都会走这条规则。
sublime-snippet + 手动触发:兼容性最好、最可控的折中方案
适合结构固定的小型模板(如 HTML5 骨架、JSON 模板、Python 脚本头),不依赖插件,也不改快捷键:
- 新建一个空文件 → 写好模板内容 →
Tools → Developer → New Snippet…→ 粘进<content></content>区域 - 设
<tabtrigger>html5</tabtrigger>,保存为Packages/User/html5.sublime-snippet - 新建文件后,先手动切语法(比如右下角点
Plain Text→ 选HTML),再按Tab触发
关键点:snippet 不会在 Plain Text 语法下生效,必须先设置对应语法 scope;scope 错了,比如写成 text.html 而不是 text.html.basic,就永远不触发。
default_syntax 设置:让新建文件默认带高亮,但不自动填内容
很多人混淆“默认语法”和“默认内容”。default_syntax 只决定高亮样式,不负责填充任何代码:
- 在
Preferences → Settings(用户设置)中加一行:"default_syntax": "Packages/Python/Python.sublime-syntax" - 路径必须完整、大小写敏感,不能写成
Python或python.tmLanguage - 查真实路径最快方法:打开一个已有的
.py文件 →Ctrl+Shift+P→ 输入Set Syntax: Show All→ 回车,底部状态栏显示的就是可直接复制的路径
真正容易被忽略的是:这个设置和模板无关,它只影响高亮;而 FileTemplates 的模板是否生效,又依赖于你新建时的语法是否匹配——所以两者得配合着调,单独设一个没用。











