sublime text 不支持新建文件默认带 .py 后缀,但可通过设置 "default_syntax": "packages/python/python.sublime-syntax" 实现 ctrl+n 新建即为 python 语法、保存时自动建议 .py 后缀;该设置仅影响未保存的 untitled 文件,需重启生效,且与系统关联、后缀绑定完全无关。

Sublime Text 本身不提供“新建文件默认带 .py 后缀”这类开关,所谓“改默认后缀名”,实际是控制新建文件的语法绑定、保存时的后缀补全,或双击打开时的系统级关联——三者完全独立,混用就会失效。
Ctrl+N 新建文件怎么默认用 Python 语法并建议 .py 后缀
新建文件(Ctrl+N)默认是 Plain Text,无后缀、无高亮。想让它一开就带 Python 高亮,并在首次保存时自动弹出 untitled.py 建议:
- 打开
Preferences → Settings – User,添加这一行:"default_syntax": "Packages/Python/Python.sublime-syntax" - 保存后重启 Sublime 或新建一个窗口,再按
Ctrl+N,右下角会显示Python,保存时默认建议后缀就是.py - 别碰
default_extension设置项——它只影响你手动输入文件名但没写后缀时的补全(比如输main然后回车),对Ctrl+N无效
.log / .env / .pyw 双击能打开,但右下角显示 Plain Text
这说明系统已成功把文件交给 Sublime(双击启动了),但 Sublime 自己没把后缀和语法对上。不是注册表或 Launch Services 的问题,是编辑器内部映射缺失:
- 先用 Sublime 打开一个
.pyw文件 → 点右下角当前语法(如Plain Text)→ 选Python - 再点右下角 →
Open all with current extension as… → Python(注意:必须先手动选一次语法,菜单才出现) - 同理处理
.log:打开一个app.log→ 右下角选Shell-Unix-Generic→ 再选Open all with current extension as… → Shell-Unix-Generic - 该操作会写入
Packages/User/Extensions.sublime-settings,内容类似:"pyw": "Python", "log": "Shell-Unix-Generic"
Windows 下 .log 双击仍用记事本,不是 Sublime 设置的问题
这是操作系统没真正写入文件关联。你在右键菜单里点了“始终使用”,但注册表 HKEY_CLASSES_ROOT\.log 的默认值可能根本没变,或者指向的是快捷方式 .lnk 而非真实可执行文件:
- 进「设置 → 应用 → 默认应用 → 按文件类型指定默认应用」,找到
.log条目,点击右侧图标,手动浏览到C:\Program Files\Sublime Text\sublime_text.exe(路径含空格必须带英文引号) - 如果列表里没有
.log,用命令行强制注册:assoc .log=SublimeText.LogFile,然后ftype SublimeText.LogFile="C:\Program Files\Sublime Text\sublime_text.exe" "%1" - 企业环境若设置项灰显,大概率被组策略锁死,普通用户无法修改,得联系 IT
macOS 上 .env 双击总失效,subl --install 是唯一可靠入口
右键「显示简介 → 打开方式 → 全部更改」经常白忙活,因为 Homebrew 安装的 Sublime 默认没注册到 Launch Services 数据库:
- 先确保
subl命令可用:运行which subl,若无输出,先加软链:ln -s "/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl" /usr/local/bin/subl - 运行
subl --install(注意是两个短横线) - 执行
killall Finder重启 Finder,再试「全部更改」才可能真正生效 - 别用
defaults write LSHandlers手动写 UTI——public.plain-text这类泛型会覆盖你的意图,除非你额外定义 UTI 或换用duti
最常被忽略的一点:系统级关联(谁来打开)和编辑级语法(怎么显示)是两条平行线,改错地方就永远“看似设了,实则没用”。尤其当多个插件自带 .sublime-syntax 文件(比如 Log Highlighter),它们的 file_extensions 列表可能覆盖原生映射,此时删插件配置比调优先级更直接。











