必须分开处理系统级关联和Sublime内部语法绑定:Windows需用管理员权限执行assoc/ftype命令正确写入注册表,macOS需运行subl --install并killall Finder,.pyw等文件还需在Sublime中右下角手动设置语法映射。

系统级关联和 Sublime 内部语法绑定必须分开处理,缺一不可。只设“双击用 Sublime 打开”或只点右下角选语法,都只能临时生效。
Windows 上双击仍跳记事本?注册表没写对
系统默认打开方式由注册表 HKEY_CLASSES_ROOT\.log 等键值控制,不是 Sublime 自己能改的。常见失败点:
-
assoc和ftype命令必须以管理员身份运行,否则写不进注册表 -
ftype中路径含空格时,"C:\Program Files\Sublime Text\sublime_text.exe"外层引号不能漏 - 别用快捷方式(.lnk)路径,必须指向真实
sublime_text.exe - 企业环境若组策略禁用默认应用修改,
assoc/ftype会静默失败
推荐命令(替换为你的真实路径):
assoc .log=SublimeText.LogFile ftype SublimeText.LogFile="C:\Program Files\Sublime Text\sublime_text.exe" "%1"
macOS 上右键“全部更改”无效?没跑 subl --install
Homebrew 或拖拽安装的 Sublime 默认不注册 Launch Services,Finder 根本不认识它。这不是 UI 操作问题,是底层服务缺失:
-
which subl无输出 → 先建软链接:sudo ln -s "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" /usr/local/bin/subl - 必须执行
subl --install,这一步才真正写入 Launch Services 数据库 - 执行完立刻
killall Finder,否则“全部更改”只是缓存在 GUI 层,重启后清空 - 别用
defaults write LSHandlers手动注册 UTI,容易宽泛匹配(比如把所有纯文本都抢走)
.pyw 显示 Plain Text?Sublime 没把后缀和语法对上
双击能启动 Sublime,说明系统关联成功;右下角写 Plain Text,说明 Sublime 自己没识别出该文件该用什么语法高亮——这是两套逻辑,互不干扰:
- 打开一个
.pyw文件 → 点右下角Plain Text→ 选Open all with current extension as…→ 再选Python - 这个操作会自动生成
Packages/User/Python.sublime-settings,内容为{"extensions": ["py", "pyw"]} - 别往全局
Preferences.sublime-settings里硬加"extensions"字段 —— Sublime Text 4 已废弃该写法,写了也不生效 - 扩展名大小写敏感:
["PYW"]不生效,必须小写["pyw"]
无后缀文件(如 Dockerfile)怎么高亮?不能靠扩展名匹配
Sublime 只认 file_extensions 列表里的后缀,没有后缀就 fallback 到 Plain Text。强制绑定语法要靠文件名本身:
- 打开
Dockerfile→Ctrl+Shift+P(macOS 是Cmd+Shift+P)→ 输入Set Syntax: Dockerfile→ 回车 - 再按
Ctrl+Shift+P→ 输入Open Syntax Specific Preferences→ 在弹出的 JSON 中加一行:"syntax": "Packages/Dockerfile/Dockerfile.sublime-syntax" - 保存后,所有名为
Dockerfile的无后缀文件都会自动套用该语法 - 注意:这个绑定只对完全同名的文件生效,
Dockerfile.prod不算
最容易被忽略的是:系统关联和语法绑定必须各自走通,且 macOS 需要 subl --install + killall Finder 这个组合拳,少一步,“全部更改”就只是假动作。


















