最可靠的方式是通过 Python 控制台执行 import json; print(json.dumps(sorted([pkg for pkg in sublime.list_packages() if not pkg.startswith('00')]), indent=2)) 导出插件名列表。

怎么用 Package Control 导出已安装插件列表
Sublime Text 本身不提供图形化导出功能,但 Package Control 提供了命令行可调用的 API,最可靠的方式是通过 Python 控制台手动执行导出逻辑。
打开 Sublime → Ctrl+`(或 Cmd+`)唤出控制台,粘贴并回车运行:
import json; print(json.dumps(sorted([pkg for pkg in sublime.list_packages() if not pkg.startswith('00')]), indent=2))
这会输出一个 JSON 格式的插件名列表,比如 ["BracketHighlighter", "GitGutter", "SideBarEnhancements"]。复制这段内容保存为 packages.json 即可。
- 别用
sublime.installed_packages()—— 它返回的是 .package 文件路径,不是插件名,且在较新版本中已被弃用 - 过滤掉以
00开头的包(如00-package-control),它们是 Package Control 自身或系统级依赖,不该手动重装 - 输出不含版本号,因为 Package Control 默认总是安装最新兼容版
新电脑上批量安装插件列表的正确方式
不能靠复制 Packages/ 目录迁移 —— 插件可能含编译产物、平台相关资源或初始化逻辑,直接拷贝常导致 ImportError 或菜单不显示。
推荐做法:在新环境先装好 Package Control,再用控制台逐个安装:
import json; pkgs = ["BracketHighlighter", "GitGutter"]; [sublime.active_window().run_command('install_package', {'name': p}) for p in pkgs]
注意:这个命令只是“发起安装请求”,不会等待完成。安装实际在后台异步进行,需等右下角提示消失后再操作。
- 如果插件名拼错(比如
"SideBarEnhancement"少了个s),Package Control 不报错,但也不会装 —— 检查Preferences → Package Settings → Package Control → Settings里installed_packages数组是否更新 - 某些插件(如
Terminus)依赖额外二进制组件,首次启动时才下载,此时网络不通会导致功能缺失,而非安装失败 - 避免在安装中途关闭 Sublime —— 未完成的安装状态可能卡住后续请求
为什么不能直接同步 Packages/ 目录
看起来最省事,实则埋雷最多。Package Control 的管理机制决定了它和文件系统不是一一映射关系。
常见故障现象:ImportError: No module named 'mdpopups',或者插件菜单项消失但 list_packages() 仍显示存在。
-
Packages/下的插件目录名 ≠ 插件注册名(例如EmacsProMode插件实际注册名为Emacs Pro Mode),Package Control 启动时按注册名加载,名不匹配就跳过 - 部分插件(如
SublimeLinter系列)会在Installed Packages/生成 .package 文件,同时在Packages/留空目录,直接拷贝会破坏这种双态结构 - Windows 和 macOS 下插件路径大小写敏感性不同,跨平台拷贝可能让某些插件“隐形”
迁移后必须检查的三个地方
装完不等于能用。尤其涉及编辑器底层行为的插件,容易因加载顺序或配置残留失效。
- 打开
Preferences → Package Settings,确认目标插件的子菜单是否存在 —— 这比看list_packages()更真实,因为只有成功初始化的插件才会注册菜单项 - 检查
Preferences → Settings – User中是否混入旧电脑的绝对路径(如"font_face": "/Users/old/Library/Fonts/FiraCode.ttf"),这类配置会导致启动变慢甚至崩溃 - 运行
sublime.log_commands(True),然后触发几个关键插件功能(比如快捷键),观察控制台是否打印对应命令;没日志 = 命令没注册或被拦截
插件迁移真正的难点不在“装”,而在“活”—— 名字对了、目录有了、命令注册了,三者缺一不可。很多人卡在第三步,却回头反复重装前两步。










