Sublime怎么导出所有的插件列表_Sublime迁移插件到新电脑【教程】

3次阅读

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

Sublime怎么导出所有的插件列表_Sublime迁移插件到新电脑【教程】

怎么用 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 → Settingsinstalled_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/ 留空目录,直接拷贝会破坏这种双态结构
  • windowsmacOS 下插件路径大小写敏感性不同,跨平台拷贝可能让某些插件“隐形”

迁移后必须检查的三个地方

装完不等于能用。尤其涉及编辑器底层行为的插件,容易因加载顺序或配置残留失效。

  • 打开 Preferences → Package Settings,确认目标插件的子菜单是否存在 —— 这比看 list_packages() 更真实,因为只有成功初始化的插件才会注册菜单项
  • 检查 Preferences → Settings – User 中是否混入旧电脑的绝对路径(如 "font_face": "/Users/old/Library/Fonts/FiraCode.ttf"),这类配置会导致启动变慢甚至崩溃
  • 运行 sublime.log_commands(True),然后触发几个关键插件功能(比如快捷键),观察控制台是否打印对应命令;没日志 = 命令没注册或被拦截

插件迁移真正的难点不在“装”,而在“活”—— 名字对了、目录有了、命令注册了,三者缺一不可。很多人卡在第三步,却回头反复重装前两步。

text=ZqhQzanResources