Sublime Text本身不控制双击打开行为,只负责打开后的显示;系统级文件关联(Windows需在“按文件类型指定默认应用”中手动选择sublime_text.exe,macOS需运行subl --install并重启Finder)与编辑级语法绑定(如.pyw需右下角选“Open all with current extension as…→Python”,.log等需修改Shell-Unix-Generic.sublime-syntax的file_extensions列表)必须分开处理且各自有易错点。

Sublime Text 本身不控制“双击用谁打开”,只管“打开后怎么显示”。你改了设置却没生效,大概率是混淆了系统级关联和编辑级语法绑定——这两件事得分开处理,且各自有容易卡住的点。
Windows 下让 .log、.pyw 双击就启动 Sublime
这纯属操作系统行为,Sublime 不参与注册。关键不是点“打开方式→选 Sublime”,而是必须进「设置 → 应用 → 默认应用 → 按文件类型指定默认应用」,然后逐个找到 .log、.pyw 等条目,点击右侧图标,手动选中 sublime_text.exe(路径通常是 C:\Program Files\Sublime Text\sublime_text.exe)。
常见失效原因:
- 点了“始终使用此应用”,但系统根本没写入注册表项
HKEY_CLASSES_ROOT\.log的默认值 - 选的是快捷方式
.lnk文件,不是真正的sublime_text.exe - 路径含空格却没加英文引号,比如写成
C:\Program Files\Sublime Text\sublime_text.exe %1(缺引号会静默失败) - 企业环境被组策略锁死,默认应用设置灰显,普通用户无法修改
macOS 下 .env、.conf 双击走 Sublime 总失效
右键→“显示简介”→“打开方式”→选 Sublime →“全部更改”,这个操作在 macOS 上经常白忙活,因为 Homebrew 安装的 Sublime 默认没注册到 Launch Services 数据库。
真正起效的只有这一条命令:
subl --install
运行后必须重启 Finder(执行 killall Finder),再试“全部更改”才可能成功。如果 subl 命令本身没配好,先补上软链:
ln -s "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" /usr/local/bin/subl
注意:别指望 defaults write ... LSHandlers 手动写 UTI 就能精确匹配 .env —— macOS 的 UTI 机制不直接认扩展名,public.plain-text 这种泛型会覆盖掉你的自定义意图,除非你额外定义 UTI 或换用 duti 工具。
.pyw 打开了却显示 Plain Text
这是 Sublime 内部语法映射没绑上,和系统打开方式完全无关。双击能启动,说明系统关联成功;右下角还是 Plain Text,说明 Sublime 没把 .pyw 当作 Python 文件处理。
正确做法是:
- 先打开一个
.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 已不认这个字段,写了也白写。
怎么让 .log、.conf 统一用 Shell-Unix-Generic 语法高亮
内置语法包默认不包含这些后缀,得往语法定义里“塞”进去。不能靠用户设置全局加,必须改语法文件本身,否则新建/保存/打开都可能掉回纯文本。
步骤是:
- 打开一个
.log文件 →View → Syntax → Open Syntax Definition(通常打开的是Shell-Unix-Generic.sublime-syntax) - 复制它的
file_extensions列表 - 在
Packages/User/Shell-Unix-Generic.sublime-syntax(或同名副本)里追加你的后缀:- log、- conf、- env - 保存后重启 Sublime
优先级顺序很关键:file_extensions(语法包内) > 用户级 Extensions.sublime-settings > 右下角临时设置。很多人改了用户设置没反应,就是因为某个已安装插件(比如 ShellScript)在自己的 .sublime-syntax 里已经声明了 conf,它会抢在你的配置前生效。

















