default_syntax仅对未保存、无路径、无扩展名的untitled文件生效,用于覆盖ctrl+n新建时的plain text默认语法;它不作用于已保存文件或带扩展名的打开文件,验证需新建窗口后按ctrl+n观察右下角语言名是否变更。

default_syntax 只对 untitled 文件生效,别指望它改已有文件
Sublime 新建的空白文件(Ctrl+N)默认是 Plain Text,default_syntax 就是用来覆盖这个行为的唯一配置项。但它只影响「没保存、没路径、没扩展名」的 untitled 文件——一旦你保存为 .py 或打开一个已存在的 config.yaml,Sublime 就完全忽略 default_syntax,转而按扩展名或内容规则匹配语法。
常见误操作是:改完 default_syntax 后去打开一个 .ts 文件,发现还是 Plain Text,就以为配置失败。其实不是失效,是压根没走这条路。
- 验证是否生效:新建窗口 → 按
Ctrl+N→ 看右下角是否直接显示你设的语言名(如Python),而不是Plain Text - 路径必须完整且大小写敏感:
Packages/Python/Python.sublime-syntax和Packages/python/python.sublime-syntax是两个不同路径 - ST4 必须用
.sublime-syntax;ST3 兼容.tmLanguage,但新装插件基本只提供前者
怎么拿到正确的语法路径?别手敲,用 Show Scope Name
凭印象写 Packages/TypeScript/TypeScript.tmLanguage 很容易错——ST4 里这路径根本不存在,也不会报错,只是静默失效。最稳的方式是让 Sublime 自己“说”出路径。
操作步骤:
1. 打开一个已正确高亮的 .py 文件(比如你自己写的脚本)
2. 按 Ctrl+Shift+P → 输入并执行 Show Scope Name
3. 看状态栏显示类似 source.python 的作用域名
4. 把 source.python 中的点换成斜杠,补上前缀:Packages/Python/Python.sublime-syntax
- 常见作用域与路径对应:
source.js→Packages/JavaScript/JavaScript.sublime-syntax,source.md→Packages/Markdown/Markdown.sublime-syntax - 如果状态栏显示
text.html.markdown,说明当前用的是第三方 Markdown 插件,路径可能是Packages/MarkdownEditing/Markdown.sublime-syntax,得进对应插件目录确认 - 路径里不能有空格或中文,也不能漏掉
Packages/前缀
想让 .conf/.env 这类文件自动高亮?配 extensions,不是 default_syntax
default_syntax 管不了带扩展名的文件。.conf 默认被当 Plain Text,是因为 Sublime 根本没把 conf 映射到 INI 语法。要解决,得在用户设置里加 extensions 字段。
最安全的操作方式:
1. 打开任意一个 .conf 文件
2. 点右下角当前语法(比如 Plain Text)→ 选 INI
3. 再点一次右下角 → 出现 Set as Default for .conf Files → 点确认
- 这操作会在
Packages/User/Preferences.sublime-settings里自动生成类似这样的块:"extensions": ["conf", "cfg"]
- 如果已有
extensions数组,它会追加,不会覆盖;但注意 JSON 末尾不能多逗号,否则整个配置失效 - 不支持通配符:
"*.conf"或"conf?"都无效,只能列具体后缀 - 若用了
ApplySyntax插件,它可能劫持这个逻辑,临时禁用插件可验证是否冲突
new_file_content + default_syntax 才算真正“开箱即用”
光设 default_syntax 只解决高亮,不解决内容。想新建文件就带 #!/usr/bin/env python3 或 Markdown 前置声明,得配合 new_file_content。
注意:new_file_content 只在 Ctrl+N 时触发,菜单栏新建、拖入新标签页、双击侧边栏空白都不行。换行必须用 \n,\r\n 会被当文字显示。
- Python 模板示例:
"new_file_content": "#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n\n\"\"\"\n@description:\n@date:\n\"\"\"\n\n"
- Markdown 模板(带 YAML 前置声明):
"new_file_content": "---\ntitle: \"\"\ndate: \"\"\n---\n"
- 它不支持变量(如
${date}),动态内容需插件(如FileHeader) - 如果模板里有引号,记得用反斜杠转义:
"title: \"My Post\""
最易被忽略的一点:所有这些配置修改后,必须重启 Sublime Text 或新建窗口才生效。缓存机制导致改完保存设置,旧窗口里的 Ctrl+N 仍走旧逻辑。别在旧窗口反复测试,直接关掉重开。











