sublime text 必须手动绑定后缀与语法,view→syntax→open all with current extension as…是唯一可靠入口,会写入packages/user/下对应配置;未绑定则显示plain text且功能失效。

Sublime Text 不会自动把 .js、.vue、.env 这类后缀和对应语法绑定,必须手动触发映射,否则右下角永远显示 “Plain Text”,高亮、补全、lint 全失效。
View → Syntax → Open all with current extension as… 是最直接的绑定方式
这个菜单项不是“临时切换”,而是写入用户级扩展名映射规则的唯一可靠入口。它会自动生成类似 "extensions": ["js"] 的配置,并存到 Packages/User/JavaScript.sublime-settings 里。
- 必须先打开一个带目标后缀的文件(比如
index.js),再点这个菜单,否则选项不可用 - 如果没看到
JavaScript,说明官方JavaScript包没装——别选JavaScript Next,它不兼容老项目,且不注册.js映射 - 绑定后,已打开的同后缀文件不会自动刷新语法,要关掉重开,或手动点右下角选一次
JavaScript - Windows 下大小写不敏感,但 macOS/Linux 必须严格匹配
.vue和.Vue是两个后缀
手动编辑 Preferences.sublime-settings 中的 extensions 映射
这是对冷门后缀(如 .cfgx、.log)或批量绑定更可控的方式,但路径必须 100% 正确,否则静默失败。
- 路径格式是
"log": "Packages/Shell-Unix-Generic/Shell-Unix-Generic.sublime-syntax",注意:Packages/开头、大小写、.sublime-syntax后缀都不能错 - 获取正确路径最快方法:打开一个已正确高亮的文件 →
Ctrl+Shift+P→ 输入Set Syntax: Show All→ 底部状态栏会显示完整路径,直接复制 - 别手敲
tmLanguage—— ST4 默认用.sublime-syntax,混用会导致语法不加载 - JSON 格式错误(比如多逗号、缺引号)会让整个
Preferences.sublime-settings失效,语法退回到 Plain Text
为什么改了设置还是没反应?优先检查这三个地方
90% 的“绑定无效”问题不出在配置本身,而出在 Sublime 的语法识别优先级和插件干扰上。
-
file_extensions冲突:某个已安装包(比如ShellScript)在自己的.sublime-syntax文件里声明了conf,它会抢在你的用户设置前生效;用PackageResourceViewer: Open Resource查各包定义 - 手动锁定:一旦你点过右下角选过语法,Sublime 就会把这个选择记死;解决方法是
Ctrl+Shift+P→Set Syntax: Detect Syntax - 插件覆盖:装了
ApplySyntax或AutoSetSyntax的话,它们会在文件加载时重新分析内容并强制覆盖你的绑定;临时禁用插件可验证是否为此原因
default_syntax 只影响无名新文件,别指望它管后缀
很多人误以为配了 "default_syntax": "Packages/Python/Python.sublime-syntax" 就能让所有 .py 文件自动高亮——其实它只控制「未保存、无路径、无后缀」的 untitled 文件。
- 已保存的
test.py文件,Sublime 完全不看default_syntax,只走后缀映射或文件内容检测 - 想让
.py文件自动高亮,必须走Open all with current extension as…或extensions映射 - 如果
default_syntax配了但新建文件仍是 Plain Text,大概率是路径写错,或被插件禁用了detect_syntax
真正容易被忽略的是:Sublime 的语法匹配顺序是「文件名 > 文件内容(shebang/注释)> 后缀映射 > default_syntax」。哪怕你把 .sh 绑定到了 Python,只要文件开头是 #!/bin/bash,它还是会切到 ShellScript。查当前真实生效的语法,按 Ctrl+Shift+P → Support Info,看输出里的 scope 字段最准。











