default_syntax仅对Ctrl+N新建的无名文件生效,需写完整路径如"Packages/Python/Python.sublime-syntax",大小写敏感且ST4不支持.tmLanguage;已保存、带扩展名或拖拽文件不受影响。

default_syntax 只对新建空白文件生效
Sublime Text 按 Ctrl+N 新建的 untitled 文件默认是 Plain Text,default_syntax 就是用来改这个行为的唯一配置项。它**完全不影响已保存文件、带扩展名的文件或通过拖拽打开的文件**——那些全靠后缀匹配或内容探测决定语法。
必须写完整路径,例如:"default_syntax": "Packages/Python/Python.sublime-syntax"(ST4)或 "Packages/Python/Python.tmLanguage"(ST3)。大小写敏感,.sublime-syntax 和 .tmLanguage 不能混用;ST4 已彻底不加载 .tmLanguage,写错就静默回退到 Plain Text。
- 验证是否生效:重启 Sublime → 新建窗口 → 按
Ctrl+N→ 看右下角是否直接显示你设的语言名 - 别手敲路径:先打开一个正确高亮的
.py文件 →Ctrl+Shift+P→ 输入Show Scope Name→ 状态栏显示source.python→ 路径就是Packages/Python/Python.sublime-syntax - 插件未安装却引用其路径(如
Packages/MarkdownEditing/Markdown GFM.sublime-syntax),也会静默失败
Settings – Syntax Specific 是唯一正路
想让 .js 文件缩进为 2 空格、.py 为 4 空格、.ts 关闭自动补全括号,必须走 Preferences → Settings – Syntax Specific,而不是往全局 Preferences.sublime-settings 里硬塞。
这个菜单项只在当前文件**已被正确识别语法**时才可用。如果右下角显示 Plain Text,点它没反应——得先手动切换语法(点右下角 → 选 JavaScript)或用 Ctrl+Shift+P 输入 Set Syntax: JavaScript。
- 生成的文件名必须跟作用域完全一致:
source.js→JavaScript.sublime-settings,source.ts→TypeScript.sublime-settings,写成javascript.sublime-settings或TS.sublime-settings,Sublime 直接忽略 - 查作用域最稳方式:
Ctrl+Shift+P→Show Scope Name→ 看状态栏第一行 - 改完保存后,已打开的同类型文件不会自动重载设置,需关闭再重开,或执行
Ctrl+Shift+P→Set Syntax: Detect Syntax
冷门后缀(.env、.yml、.conf)要显式绑定
Sublime 不会自动把 .env 当 ShellScript、.yml 当 YAML——哪怕你配好了 ShellScript.sublime-settings,它也不会生效。因为语法识别失败,专属配置压根不加载。
解决方法不是改 default_syntax,也不是手动编辑 Extensions.sublime-settings,而是用界面操作强制绑定:
- 打开一个
.env文件 → 点右下角当前语法(比如Plain Text)→Open all with current extension as…→ 选ShellScript - 这一步会自动往
Packages/User/Extensions.sublime-settings写入:{"extensions": ["env"], "syntax": "ShellScript"} - 注意大小写:macOS/Linux 下
.vue和.Vue是两个后缀,Windows 虽不区分,但路径中仍需大小写准确
语法配置和全局设置的优先级关系
Sublime 的设置加载顺序很关键:buffer specific > project > syntax-specific > user > default。这意味着语法专属配置(如 Python.sublime-settings)能覆盖全局用户设置里的 tab_size、auto_complete 等字段,但对 color_scheme、font_size 这类 UI 层配置无效——它们在语法级文件里会被 Sublime 静默跳过。
另外,detect_indentation 必须在语法专属配置中设为 false,否则新建文件即使绑定了 Python 语法,也可能被内容里的空格数干扰,导致缩进不稳定。
最容易被忽略的是插件劫持:像 ApplySyntax 或 AutoSetSyntax 会在文件加载时强行重置语法,你的 default_syntax 或 Extensions.sublime-settings 就可能完全失效——临时禁用这些插件是排查的第一步。


















