sublime text新建文件(ctrl+n)不会自动识别语法,因其无扩展名、路径或内容特征;仅保存为带后缀文件(如.ts)或打开已有文件时才按扩展名匹配语法。

Sublime Text 新建文件(Ctrl+N)本身**不会根据后缀自动识别语法**,因为新建的 untitled 文件没有扩展名、没有路径、也没有内容特征——它压根不触发任何扩展名匹配逻辑。只有当你**保存为带后缀的文件**(如 index.ts)或**打开已有文件**时,Sublime 才会按扩展名查映射表决定用哪种语法。
新建文件保存后仍显示 Plain Text?检查扩展名是否已绑定
你保存成 .ts 却还是 Plain Text,说明 Sublime 还不知道 .ts 对应 TypeScript 语法。这不是 Bug,是默认未注册:
- 必须先打开一个
.ts文件(或新建后立刻保存为xxx.ts),再手动点右下角当前语法(比如 Plain Text)→ 选Set as Default for .ts Files - 这个操作会往
Packages/User/TypeScript.sublime-settings里写入"extensions": ["ts"],不是写进全局Preferences.sublime-settings - 如果菜单里没出现
Set as Default for .ts Files,说明你还没在该文件上切换过语法——先点右下角选一次TypeScript,再点才会出来 - macOS/Linux 下
.TS和.ts被视为不同扩展名,得分别绑定;Windows 不区分大小写
想让 .env、.conf 等冷门后缀也生效?别硬改 Preferences.sublime-settings
直接在用户设置里加 "extensions": ["env", "conf"] 是无效的,因为 Sublime 不认这种全局写法。正确做法是逐个“激活绑定”:
- 打开一个
.env文件 → 右下角点当前语法 → 选INI(假设你想用 INI 语法)→ 再点右下角 → 出现Set as Default for .env Files→ 点它 - Sublime 会自动生成
Packages/User/INI.sublime-settings并写入"extensions": ["env"] - 想让
.conf也走 INI?重复上面流程:打开nginx.conf→ 切到 INI →Set as Default for .conf Files - 如果
INI选项没出现,说明你没装 INI 插件——用Package Control: Install Package装INI或INI File Format
为什么改了配置还是不亮色?优先排查这三个干扰点
90% 的“绑定失效”不是配置写错了,而是被其他机制覆盖:
-
file_extensions冲突:某个已安装包(比如ShellScript)在自己的.sublime-syntax里声明了"file_extensions": ["conf"],它比你的用户设置优先级高;用PackageResourceViewer: Open Resource查各包定义 - 手动锁定残留:你之前点过右下角选过语法,Sublime 就把这个选择记死了;解决方法是
Ctrl+Shift+P→ 输入Set Syntax: Detect Syntax强制重试 - ApplySyntax 或 AutoSetSyntax 插件正在运行:它们会在文件加载时强行覆盖你的扩展名绑定;临时禁用插件,看是否恢复,就能确认是不是它干的
真正起效的绑定永远发生在「语法上下文」中——你得先让 Sublime 知道“这个文件应该用什么语法”,它才肯记下来。空文件、无后缀、未激活的语法包,都会让整个链路断掉。最稳的路径就是:打开 → 切语法 → Set as Default → 关掉重开验证。











