同步sublime text的user文件夹必须用git,因云盘同步易致目录损坏;所有配置均存于packages/user下,插件应通过package control自动安装,需忽略运行时生成文件并正确初始化私有仓库。

同步 Sublime Text 的 User 文件夹必须用 Git,不是“可以”,是唯一靠谱路径
云盘同步(如 Dropbox、OneDrive)看似简单,但容易因文件锁、元数据不一致或符号链接失效导致 Packages/User 目录损坏,轻则插件丢失,重则整个配置无法加载。Git 是目前唯一被长期验证、可回溯、可协作、且与 Sublime 运行时完全解耦的同步方案。
关键点在于:Sublime Text 启动时只读取 Packages/User 下的 JSON 和 Python 文件,它不关心这些文件是不是在 Git 仓库里——只要路径对、权限正常、内容合法,就一切照常工作。
- 所有配置(
Preferences.sublime-settings、Key Bindings.sublime-keymap、自定义snippets、build_systems)都落在此目录,无一例外 - 插件本身(
Installed Packages/下的.sublime-package)不建议纳入 Git,因为二进制 + 版本依赖易冲突;应通过Package Control.sublime-settings中的installed_packages数组声明依赖,靠 Package Control 自动安装 - 务必忽略
Package Control.cache/、Session.sublime_session、Local/等运行时生成文件,它们会随每次启动变化,加入 Git 只会频繁产生无意义 diff
私有仓库怎么建?GitHub/GitLab 私仓 + 正确初始化顺序
不要先在 GitHub 上点“New Repository”再往里塞文件——顺序错了,会导致远程空仓和本地历史冲突。正确流程是本地先整理干净,再关联远端。
以 macOS 为例(Windows/Linux 路径替换见知识库):
cd ~/Library/Application\ Support/Sublime\ Text\ 3/Packages/User git init git add --all git commit -m "initial config" git remote add origin https://github.com/yourname/sublime-config.git git branch -M main git push -u origin main
注意三处细节:
-
git add --all不要用git add .,后者会漏掉已删除但未git rm的旧配置文件 - URL 必须是 HTTPS 形式,且结尾 不能带
/,例如https://github.com/yourname/sublime-config.git✅,https://github.com/yourname/sublime-config/❌ - 如果远程仓库已存在 README 或 LICENSE,别直接
git push,先git pull --rebase origin main合并,否则拒绝推送
新电脑首次拉取要关 Sublime,否则可能写入冲突
Sublime Text 在运行时会持续写入 Package Control.sublime-settings(记录已装插件)、Local/(窗口布局)、Session.sublime_session(打开的文件列表)。如果此时你执行 git clone 覆盖 User 目录,正在运行的进程可能把旧 session 写回磁盘,覆盖刚拉下来的新配置。
安全做法只有两步:
- 彻底退出 Sublime Text(macOS 检查 Activity Monitor 里是否还有
sublime_text进程;Windows 看任务管理器) - 备份原
User目录(比如重命名为User.bak),再git clone https://github.com/yourname/sublime-config.git User
之后再打开 Sublime,它会读取你同步的全部设置,包括快捷键、主题、构建系统——但插件不会立刻出现,因为 installed_packages 数组只是“声明”,真正安装需等 Package Control 启动后自动拉取(首次可能稍慢,耐心等 10–20 秒)。
同步日常更新:push/pull 就够,但得避开 Package Control 缓存干扰
日常改了某个 keymap 或新增一个 build_system,只需:
cd ~/Library/Application\ Support/Sublime\ Text\ 3/Packages/User git add . git commit -m "add python3 build with venv" git push
但在另一台机器上 git pull 后,若发现新 build system 没生效,先检查:Package Control 是否正被 ignored_packages 屏蔽——这个设置藏在 Preferences.sublime-settings 里,一旦误加 "Package Control" 到数组中,整个插件生态就瘫痪,同步来的配置也白搭。
更隐蔽的问题是:某些插件(如 SideBarEnhancements)会在第一次启动时生成默认配置到 User/ 下,若你没把它加入 .gitignore,下次 git status 就会看到一堆“未跟踪文件”,容易误提交。所以初始化仓库前,先确认 .gitignore 包含:
Package\ Control.cache/ Local/ Session.sublime_session *.sublime-workspace
同步这件事,难点不在 Git 命令本身,而在于分清哪些是“你写的配置”,哪些是“Sublime 自动生成的状态”。混在一起同步,早晚出事。











