default_syntax是唯一可靠方式,需填完整路径如"Packages/Python/Python.sublime-syntax",仅对Ctrl+N新建的untitled文件生效,路径错误、插件冲突或JSON格式问题均会导致失效。

default_syntax 必须填对路径才能生效
新建的 untitled 文件默认是 Plain Text,想让它一打开就高亮,default_syntax 是唯一可靠入口。但它不认“Python”这种简称,只认完整路径字符串,比如:"Packages/Python/Python.sublime-syntax"。
常见错误包括:
- 写成
Packages/Python/Python.tmLanguage—— Sublime 4 已弃用 .tmLanguage,不生效 - 大小写写错:
Packages/python/python.sublime-syntax(小写 python)在 macOS/Linux 下直接失败 - 路径里多空格或中文,JSON 解析失败,整个用户设置回退到默认
- 误加在 Default 设置里,升级后被覆盖
查真实路径最稳的方式:打开一个已正确高亮的 .py 文件 → 按 Ctrl+Shift+P → 输入 Show Scope Name → 看状态栏显示 source.python → 对应路径就是 Packages/Python/Python.sublime-syntax。
new_file_content 只在 Ctrl+N 时触发,且换行必须用 \n
new_file_content 和 default_syntax 是搭档,但它的作用范围极窄:仅限快捷键 Ctrl+N(Windows/Linux)或 Cmd+N(macOS)新建的空白文件。双击侧边栏、菜单栏 New File、拖入新标签页,全都不走这条路。
内容里换行必须写 \n,不能用 \r\n,否则 \r 会原样显示为字符。例如 Markdown 前置声明要这样写:
"new_file_content": "---\ntitle: \"\"\ndate: \"\"\n---\n"
它不支持变量占位符(如 ${date}),要动态内容得靠插件,比如 FileTemplates。
扩展名绑定靠 Open all with current extension as…,不是改 Preferences.sublime-settings
很多人想让 .env 文件一打开就用 Shell-Unix-Generic 语法,却去用户设置里硬加 "extensions": ["env"] —— 这根本没用。Sublime 不从这里读扩展名映射。
正确做法分两步:
- 先手动打开一个
.env文件 → 右下角点语言名 → 选Shell-Unix-Generic - 再点右下角 →
Open all with current extension as…→ 选同一个语法
这操作会把映射写进 Packages/User/ShellScript.sublime-settings(如果不存在会自动创建),内容类似:
{ "extensions": ["env", "conf", "cfg"] }
注意别写通配符 *,否则可能覆盖其他语法的默认绑定。
插件可能劫持 default_syntax,导致配置静默失效
装了 ApplySyntax 或 DefaultFileSyntax 这类插件后,default_syntax 很可能被绕过。插件会在新建文件后立刻重设语法,你看到右下角闪一下 Plain Text 再变成别的,就是它在干预。
验证是否被插件干扰:
- 临时禁用相关插件,重启 Sublime,再试
Ctrl+N - 打开命令面板
Ctrl+Shift+P→ 输入Set Syntax→ 看当前选中项是否和你配置的default_syntax一致 - 如果一致但界面没变,说明插件覆盖了 UI 显示逻辑
这类插件的规则优先级高于用户配置,真要共存,得去插件自己的设置里关掉「新建文件匹配」开关,否则 default_syntax 形同虚设。


















