Sublime中右下角显示Plain Text说明系统关联生效,需在编辑器内绑定语法:先手动切换一次语法(如.pyw文件选Python),才能出现“Set as Default for .pyw”选项;若失败,可能被插件覆盖,应禁用插件后重试;批量绑定可用“Open all with current extension as…”写入User/XXX.sublime-settings;修改语法包内的file_extensions需重启且易被覆盖,不推荐;已打开文件绑定后不会自动更新,需重开或执行Set Syntax: Detect Syntax。

双击能打开 Sublime,但右下角显示 Plain Text,说明系统关联已生效,只是 Sublime 没把后缀和语法对上——这不是注册表或 Launch Services 的问题,得在编辑器内部做语法绑定。
点右下角“Plain Text”后没出现“Set as Default for .xxx”?
这个菜单项是懒加载的:必须先手动切换一次语法,Sublime 才会激活该选项。
- 打开一个
.pyw文件 → 右下角点Plain Text→ 选Python(不是“Python 3”,也不是插件提供的变体) - 再点右下角,此时才会出现
Set as Default for .pyw Files - 如果选了
Python后仍不出现,说明你当前用的不是官方 Python 语法包,而是某个插件(如 Anaconda 或 Jedi)覆盖了语法定义 - 验证方式:执行
Ctrl+Shift+P→ 输入Set Syntax: Python,看是否能成功触发;若失败,先禁用可疑插件再试
用 Open all with current extension as… 绑定多个后缀到同一语法
适合批量处理冷门后缀,比如 .env、.conf、.log,它们通常都该用 Shell-Unix-Generic 或 INI 语法,而不是各自建配置文件。
- 打开一个
.env文件 → 右下角点当前语法(如Plain Text)→ 选INI - 再点右下角 →
Open all with current extension as…→INI - 重复操作:打开
.conf→ 切成INI→ 再触发同名菜单项 → 它会自动写入"conf": "INI"到Packages/User/INI.sublime-settings - 注意:该操作不会修改
.sublime-syntax文件本身,只影响扩展名映射;若后续想统一改所有.env文件的 tab_size,得去改INI.sublime-settings,不是Preferences.sublime-settings
file_extensions 字段要写在语法定义里还是用户设置里?
两种方式都存在,但优先级和用途完全不同。
- 改
Packages/ShellScript/Shell-Unix-Generic.sublime-syntax里的file_extensions列表,是全局增强语法识别能力——比如把"log"加进去,以后所有未显式绑定的.log都会自动匹配该语法。但需重启 Sublime 才生效,且升级语法包时可能被覆盖 - 用右下角菜单生成的
Packages/User/XXX.sublime-settings(如INI.sublime-settings),只负责扩展名到语法的路由,不改语法本身。它更安全、可维护,推荐日常使用 - 别往
Preferences.sublime-settings里硬塞extensions字段——Sublime 不认这个位置,写了也无效 - 路径大小写敏感:
"LOG"和"log"是两个不同扩展名,Windows 上虽不区分,但 Sublime 内部匹配是严格比对字符串
最容易被忽略的是:绑定完后已打开的文件不会自动重载语法。哪怕你点了 Set as Default,那个正在编辑的 .pyw 文件右下角还是 Plain Text,得关掉再重开,或者执行 Ctrl+Shift+P → Set Syntax: Detect Syntax 手动触发识别。


















