default_syntax是唯一控制新建文件语法的配置项,需在用户设置中填入完整路径如"packages/python/python.sublime-syntax",仅对未保存的untitled文件生效,修改后须重启才生效。

新建文件默认是 Plain Text,default_syntax 是唯一生效的配置项
Sublime Text 每次按 Ctrl+N(Windows/Linux)或 Cmd+N(macOS)新建的空白文件,永远是 Plain Text —— 它不记你上次选了什么,也没有“默认语言”开关。想跳过手动点击右下角,只能靠用户设置里的 default_syntax 字段。
这个字段只对「未保存、无路径、无内容」的 untitled 文件生效;一旦你保存为 .py 或打开已有文件,Sublime 就会切回扩展名匹配逻辑,default_syntax 不再起作用。
-
default_syntax值必须是完整路径,例如:"Packages/Python/Python.sublime-syntax"(ST4)或"Packages/JavaScript/JavaScript.tmLanguage"(ST3),大小写敏感,不能少斜杠、不能拼错 - 路径不对、JSON 多逗号、插件冲突(如 ApplySyntax)都会导致它静默失效
- 改完必须重启 Sublime Text,部分版本不重启不加载新语法绑定
怎么查到某个语言真实的 default_syntax 路径?别猜,用命令实时取
去文件系统里翻包容易错,最稳妥的方式是让 Sublime 自己告诉你:
- 先用正确语法打开一个已有文件(比如打开
test.js,右下角显示JavaScript) - 按
Ctrl+Shift+P→ 输入Set Syntax:→ 选中目标语法(如JavaScript (Babel)) - 再按
Ctrl+Shift+P→ 输入Copy Syntax Path(需提前装Syntax Highlighting Tools或PackageResourceViewer) - 粘贴出来的就是可直接填进
default_syntax的路径,例如:Packages/JavaScript/JavaScript (Babel).sublime-syntax
没装插件?打开 test.py 后按 Ctrl+Shift+P → Show Scope Name,状态栏顶部显示 source.python,对应路径大概率就是 Packages/Python/Python.sublime-syntax。
new_file_content 只配合 Ctrl+N,换行必须用 \n
光设语法还不够,想新建即带模板(比如 Markdown 前置声明、Vue 单文件组件骨架),得加 new_file_content 字段。但它有严格限制:
- 只在
Ctrl+N/Cmd+N时触发;双击侧边栏、菜单栏 New File、拖入新标签页都不走这条路 - 内容里换行必须写
\n,别用\r\n(Windows 用户尤其注意),否则会把\r当成普通字符显示出来 - 示例(YAML 前置声明):
"new_file_content": "---\ntitle: \"\"\ndate: \"\"\n---\n" - 不支持变量(如
${date}),要动态内容必须用插件(如FileTemplates)
多语言场景下,default_syntax 不够用,得靠插件规则匹配
default_syntax 是全局单值,没法做到「前端项目新建默认 JS,运维目录下新建默认 YAML」。真有这种需求,只能上插件:
-
ApplySyntax:支持基于路径正则匹配,比如把~/projects/frontend/.*下的新建文件自动设为JavaScript (Babel) -
DefaultFileSyntax:更轻量,允许定义文件名规则,例如test.*→Python,config.*→YAML - 两者都需要手写 JSON 规则,且首次新建仍会闪一下
Plain Text再跳转——这是 Sublime 底层机制决定的,绕不开
真正省事的日常方案其实很朴素:把常用语法加进命令面板快捷入口,Ctrl+Shift+P → 输入 js 回车,比点右下角快得多;而 default_syntax 适合你 90% 时间都在写同一种语言的场景。











