default_syntax是唯一控制新建untitled文件语法的配置项,需设为完整路径如"projects/python/python.sublime-syntax",仅对未保存、无扩展名、无内容的新建标签生效,改后须重启编辑器。

default_syntax 是唯一能控制新建文件语法的配置项
Sublime Text 新建的 untitled 文件(Ctrl+N)默认永远是 Plain Text,不靠配置根本不会变。想让它一打开就是 Python/JS/Markdown,必须在用户设置里加 default_syntax 字段,且值必须是完整路径,比如:"default_syntax": "Packages/Python/Python.sublime-syntax"。
这个字段只对「没保存、没扩展名、没内容」的新建标签生效;一旦你保存为 .py 或打开已有文件,Sublime 就按扩展名自动匹配,完全不走这里。
- 路径大小写敏感,
Packages/Python/Python.sublime-syntax和Packages/python/python.sublime-syntax是两回事 - Sublime Text 4 只认
.sublime-syntax,.tmLanguage路径已失效(除非你用的是 ST3) - 改完必须重启编辑器,部分版本不重启不加载新语法绑定
- 如果右下角还是显示
Plain Text,八成是路径拼错,或对应语法包被禁用了(检查Preferences → Package Settings)
如何快速拿到正确的语法路径?别猜,用命令查
手动翻 Packages/ 目录容易错,也难确认大小写和后缀。最稳的方式是:先打开一个已正确高亮的文件(比如 test.py),然后按 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS),输入并运行 Show Scope Name —— 状态栏会显示类似 source.python 的作用域。
这个作用域名基本对应路径:source.python → Packages/Python/Python.sublime-syntax,source.js → Packages/JavaScript/JavaScript.sublime-syntax。
- 不确定时,直接点右下角语法名 →
Set Syntax: Python,再执行Show Scope Name验证 - 如果装了
Syntax Highlighting Tools插件,还能用Copy Syntax Path命令一键复制路径 - 别信网上搜到的旧路径,比如
Packages/Text/Plain text.tmLanguage,ST4 下已不可用
想让 .ts、.conf 这类扩展名自动高亮?点一下就搞定
对已有扩展名的文件(比如 config.conf 或 index.ts),不需要改配置文件,直接操作更可靠:打开一个该类型文件 → 点右下角当前语法(如 Plain Text)→ 选目标语法(如 TypeScript)→ 再点一次右下角 → 弹出 Set as Default for .ts Files,确认即可。
这操作本质是往用户设置里加了一条:{"extensions": ["ts"]},但你不用手写,也不用重启(ST4 已支持热更新)。
- 这个映射只影响带扩展名的文件,不影响 Ctrl+N 新建的 untitled 标签
- 如果点了没反应,检查光标是否在文件内(必须有焦点)
- 多个扩展名可一起加:
{"extensions": ["ts", "tsx", "js"]},但建议按需添加,避免干扰其他语言识别
模板内容不能靠 default_syntax 实现,得用插件或 snippet
default_syntax 只管高亮,不管内容。想新建文件就自动插入 #!/usr/bin/env python3 或 Markdown 前置声明,得另想办法。
纯配置方案里,new_file_content 字段只对 Ctrl+N 有效,且换行必须用 \n(不是 \r\n),示例:"new_file_content": "#!/usr/bin/env python3\n\n"。但它不支持变量,也不能动态生成日期或文件名。
- 要变量支持(如
${date}),必须用插件,推荐FileTemplates:模板文件名必须严格匹配扩展名(python.tmpl对应.py),变量用双百分号:${date:%%Y-%%m-%%d} - 轻量替代是
.sublime-snippet:新建文件 → 手动切语法 → 按 Tab 触发,但必须确保scope正确(比如text.html.basic不等于text.html) - 别在
Packages/User/Preferences.sublime-settings里瞎加default_content字段——它根本不存在,Sublime 会直接忽略整行
真正省事的组合是:default_syntax 控制初始高亮 + FileTemplates 控制内容初始化。路径写错、插件冲突、忘记重启,这三个地方最容易卡住,调的时候优先排查它们。











