唯一正确路径是Preferences → Settings – Syntax Specific,它自动生成语法专属配置文件,文件名须与作用域完全一致(如source.python对应Python.sublime-settings),且修改后需重启文件生效。

Preferences → Settings – Syntax Specific 是唯一正路
全局设置(Preferences.sublime-settings)对所有文件生效,但你想让 JavaScript 文件用 2 空格缩进、Python 用 4、TypeScript 关闭自动补全括号——这些必须走语法专属配置,不能硬塞进全局文件里。
别手动建 JavaScript.sublime-settings,也别往项目配置或插件设置里写。正确路径只有一条:菜单栏 Preferences → Settings – Syntax Specific。它会自动生成对应语法名的文件,比如你当前在 JS 文件里点这个菜单,就会打开 Packages/User/JavaScript.sublime-settings。
这个文件只对 source.js 作用域生效,优先级高于全局用户设置,且 Sublime 能自动绑定语法识别逻辑。
文件名和路径必须跟作用域完全一致
作用域名(scope)决定文件名,不是你凭印象写的语言名。比如:
- 状态栏显示
source.python→ 文件名必须是Python.sublime-settings - 显示
source.ts→ 文件名是TypeScript.sublime-settings(不是TS或Typescript) - 显示
text.html.markdown→ 文件名得是MarkdownEditing.sublime-settings(第三方插件路径)
大小写、点、空格一个都不能错。写成 python.sublime-settings 或 javascript.sublime-settings,Sublime 直接忽略,不报错也不提示。
查作用域最稳方式:Ctrl+Shift+P → 输入 Show Scope Name → 看状态栏第一行。
常见覆盖项和典型陷阱
语法专属配置里能写的字段,和全局设置基本一样,但有些行为容易踩坑:
-
tab_width:设成 2 后,新建 .js 文件缩进就是 2,但打开已有 .py 文件仍走 Python 配置,互不干扰 -
translate_tabs_to_spaces:JS 设为true,Vue 文件如果没单独配,就继承全局值 -
auto_complete和auto_complete_commit_on_tab:TypeScript 关掉后,JS 里还能照常补全 -
word_separators:给 JS 加上$,补全才认$el;但这个值不会影响 Python 的下划线分词逻辑 - 别写
font_size或color_scheme:这些 UI 层配置在语法级文件里无效,Sublime 会静默跳过
extensions 映射和 default_syntax 别混用
有人想“让所有 .ts 文件都用 TypeScript 语法”,然后去 Preferences.sublime-settings 里加 "extensions": ["ts"] —— 这完全无效。Sublime 不认这种写法。
正确做法只有两个:
- 对一个已打开的
.ts文件,点右下角语法名 →Set as Default for .ts Files(它会把映射写进 TypeScript 插件自己的用户配置里) - 或者手动编辑
Packages/User/TypeScript.sublime-settings,加一行:"extensions": ["ts"]
default_syntax 只管新建的 untitled 文件,和扩展名无关;extensions 字段只在语法专属配置里起作用,放全局配置里等于没写。
最易被忽略的是:改完语法专属配置后,得关掉再重开同类型文件才能看到效果——Sublime 不热重载这类设置。


















