在多台电脑间如何同步Sublime的配置和插件? (Git与云盘方案)

13次阅读

git同步sublime Text配置最可靠,需跟踪Packages/User和Installed Packages目录,特别要包含Package Control.sublime-settings文件,并统一换行符为LF。

在多台电脑间如何同步Sublime的配置和插件? (Git与云盘方案)

用 Git 同步 PackagesSettings 目录最可靠

sublime text 的用户配置和插件都集中在两个目录:Packages/User(含 Preferences.sublime-settings 等)和 Installed Packages(含 .sublime-package 文件)。Git 能精确跟踪这些文件的变更,且跨平台一致。

实操建议:

  • 先关闭所有 Sublime 实例,避免写入冲突
  • 在终端中进入 Sublime 的数据目录(不同系统路径不同):
    macOS:~/Library/application Support/Sublime Text/Packages
    windows%APPDATA%Sublime TextPackages
    linux~/.config/sublime-text/Packages
  • git init 初始化仓库,git add User/(只同步 User 目录,避免同步第三方插件源码)
  • Installed Packages/ 中的 .sublime-package 文件也加入 Git(它们是已安装插件的二进制快照,重装时可直接双击触发安装)
  • 每次换机后,先拉取最新配置,再手动在 Sublime 的 Preferences → Browse Packages… 中确认 User 目录被正确覆盖

云盘方案慎用:硬链接或符号链接容易失效

有人尝试将 Packages/User 整个目录软链到 Dropbox / icloud / onedrive,但 Sublime 启动时会检查路径所有权和时间戳,遇到符号链接或跨卷挂载常报错:Unable to load settings 或插件不加载。

常见问题:

  • iCloud Drive 在 macOS 上默认启用“优化存储”,可能使 .sublime-settings 文件变成占位符,Sublime 读取为空
  • Windows 的 OneDrive “按需文件” 模式会导致 Installed Packages/ 下的 .sublime-package 文件显示为灰色(未下载),Sublime 无法识别
  • 多设备同时写入同一云同步目录,可能引发 jsON 配置文件损坏(如 Preferences.sublime-settings 变成乱码或半截内容)

Package Control 本身不保存插件状态,必须导出 Package Control.sublime-settings

很多人以为只要同步了插件目录,重装后就能自动恢复全部插件——其实不然。Package Control 的启用/禁用状态、安装列表、通道设置,全存在 Packages/User/Package Control.sublime-settings 里。这个文件不提交到 Git,新机器就只会空有插件文件,但 Sublime 不认它们为“已启用”。

关键操作:

  • 确保该文件在 Git 跟踪范围内:git add "User/Package Control.sublime-settings"
  • 文件中重点关注字段:"installed_packages"(数组,列出了所有应启用的插件名)、"bootstrapped"(应为 true)、"channels"(如 ["https://packagecontrol.io/channel_v3.json"]
  • 若新机器首次启动后插件未加载,打开 Sublime 控制台(Ctrl+`),输入 import package_control; package_control.package_control.PackageControl().list_packages() 查看是否识别到已安装插件

Windows 与 macos 插件路径差异小,但注意 Preferences.sublime-settings 的换行符

Git 默认在 Windows 上检出 CRLF,在 macOS/Linux 上检出 LF。而 Sublime 对 Preferences.sublime-settings 的 JSON 解析对换行符敏感:若文件末尾多一个 r,可能报错 Error trying to parse settings: Invalid JSON character

解决方法:

  • 在项目根目录加 .gitattributes 文件,内容写:
    * text=auto eol=lf
  • 或全局设置:git config --global core.autocrlf input(macOS/Linux)或 false(Windows,禁用自动转换)
  • 同步后,用 file -i Preferences.sublime-settings(macOS/Linux)或 Get-Content .Preferences.sublime-settings | format-Hex(PowerShell)确认结尾是 0a(LF)而非 0d 0a(CRLF)

Git 同步不是一劳永逸——每次新增插件后,记得手动运行 Package Control: Install Package,再立刻 git add User/Package Control.sublime-settings && git commit。漏掉这步,下次同步就只剩文件,没有启用记录。

text=ZqhQzanResources