乐于分享
好东西不私藏

换电脑最烦的不是重装软件,而是让它重新像“我的电脑”

换电脑最烦的不是重装软件,而是让它重新像“我的电脑”

我最近又遇到一个很典型的问题。

同一个工具,在龙虾电脑上能用,到了工作电脑上就不行。

不是没装。

更烦的是:看起来都装了,但就是不一样。

这个 alias 没有,那个代理没走,fzf 快捷键不生效,zoxide 没有记忆,Codex wrapper 找不到,Claude 的环境变量又藏在另一台机器上。

每次换电脑,我都要重新扮演一次“配置考古学家”。

.zshrc 里翻一遍,~/.config 里翻一遍,~/bin 里翻一遍,再打开旧电脑确认:

我当时到底改了哪里?

这件事对同时使用多台电脑的人特别折磨。

你可能有一台公司电脑,一台家里的主力 Mac,一台备用机器,甚至还有云主机、开发容器。单台机器调顺手并不难,真正难的是:

这套顺手的工作环境,能不能稳定迁移?能不能持续保持一致?

后来我开始用 chezmoi 管这些配置。

它解决的不是“少复制几个文件”,而是把我的工作环境从某一台 Mac 里拎出来,变成一套可以版本管理、可以迁移、可以审查的系统。

chezmoi 是什么

chezmoi 是一个 dotfiles 管理工具。

dotfiles 听起来有点工程师黑话,说白了就是 Home 目录里那些决定工具行为的配置文件,比如:

~/.zshrc
~/.gitconfig
~/.config/yazi/
~/.config/ghostty/
~/.config/starship.toml
~/bin/

这些文件平时不显眼,但它们决定了你打开终端之后是不是顺手。

chezmoi 做的事情很朴素:把这些配置文件的“源状态”放进一个 Git 仓库,然后在不同机器上把它们应用到正确位置。

默认情况下,它的源目录在:

~/.local/share/chezmoi

你平时还是照常使用真实的配置文件。chezmoi 负责记录、对比、应用和同步。

它在 GitHub 上有 19k+ star,项目描述也很直接:安全地管理多台不同机器上的 dotfiles。

这不是一个只给重度 Linux 玩家使用的玩具。官方文档里明确写到,chezmoi 面向的就是多机器环境:家庭电脑、工作电脑、macOS、Linux、Windows,都可以用一套源配置来管理,同时保留每台机器自己的差异。

我最想管理的,不是壁纸

我现在最想管的不是壁纸,也不是桌面图标摆放,而是那些真正影响工作流的东西。

1. Shell 配置

比如 .zshrc、自定义 alias、PATH、prompt、自动补全、常用函数。

它们每天都在用,但最容易在不知不觉中变成一坨“只有这台机器知道”的历史包袱。

2. CLI 工具配置

比如 Ghostty、Yazi、Atuin、Zoxide、Starship、fzflsd

单个工具都不复杂,但它们组合在一起,就构成了你打开终端后的手感。

3. ~/bin 里的自用脚本

这部分最容易被低估。

我自己的 cdxb 是一个 Codex wrapper,用来固定代理、找到合适的 Codex 路径,并处理本机例外规则。

cld 是 Claude / Anthropic 兼容接口相关的 wrapper。

它们不是正式产品,却是我每天真实使用 AI 工具链的入口。

如果这些脚本只存在于某一台电脑上,另一台电脑就永远差一口气。

4. 那些“看起来不像配置”的工作流文件

比如 Alfred workflow、应用配置、初始化脚本。

只要它影响你工作,就值得进入配置管理的视野。

基本用法并不复杂

chezmoi 的基本流程很容易理解。

在当前机器上初始化:

chezmoi init

把一个配置文件纳入管理:

chezmoi add ~/.zshrc
chezmoi add ~/.config/yazi
chezmoi add ~/bin/cdxb

查看 chezmoi 准备做什么:

chezmoi diff

确认没问题,再应用:

chezmoi apply -v

进入 chezmoi 的源目录,把配置提交到 Git:

chezmoi cd
git add .
git commit -m "Manage shell and CLI config"
git push

到第二台机器上,就不用重新回忆“我以前改过哪些东西”了。

如果你的 dotfiles 仓库在 GitHub 上,可以这样初始化:

chezmoi init git@github.com:你的用户名/dotfiles.git
chezmoi diff
chezmoi apply -v

确认你足够信任自己的配置后,也可以一步到位:

chezmoi init --apply git@github.com:你的用户名/dotfiles.git

之后日常同步也很简单:

chezmoi update -v

这条命令会拉取仓库里的最新配置,并应用到当前机器。

它比手动复制强在哪里

手动复制最大的问题不是麻烦,而是不可靠。

你不知道自己有没有漏,也不知道这次复制会不会覆盖掉本机差异。更糟糕的是,很多配置不是单文件,而是一组文件、一组权限、一组环境变量、一组脚本。

chezmoi 好用在几个地方。

第一,它默认让你先看 diff

chezmoi diff

这一步很关键。

你不是闭眼覆盖 Home 目录,而是先看到它准备改哪里。

第二,它背后就是 Git

今天改了 .zshrc,明天加了 Yazi 配置,下周调整 Codex wrapper,都有历史。

配置从“某台机器当前的样子”,变成一套持续演进的记录。

第三,它能处理多机器差异

工作电脑可以有公司相关配置,家里电脑可以有个人代理,龙虾电脑可以有自己的实验脚本。

chezmoi 支持模板,你可以按操作系统、主机名、用户信息生成不同结果。

也就是说,一套仓库,不等于所有机器都必须长得一模一样。

第四,它能把 secret 和公开配置分开

配置管理最危险的事,是一不小心把 token、私钥、公司配置推上 GitHub。

我的做法很简单:

可迁移的配置进 chezmoi,敏感文件留在本机,必要时写进 .chezmoiignore

比如:

.config/cld/env
.config/zsh/private.env
.config/zsh/company.zsh

chezmoi 本身也支持密码管理器和文件加密。你可以接 1Password、Bitwarden、macOS Keychain,也可以用 age、gpg 这类工具加密文件。

这就是它比“直接把 Home 目录放进 Git”靠谱的地方:它不是鼓励你同步一切,而是帮你把边界划清楚。

对 AI 工具链尤其有用

如果只是管理 .vimrcchezmoi 已经有价值。

但在 AI 工具越来越多之后,它的价值更明显了。

现在一套可用的 AI 工作环境,往往不只是“装了 Codex”或者“装了 Claude”。它还包括:

  • • 代理规则;
  • • wrapper 脚本;
  • • API Key 存放方式;
  • • 不同模型服务的兼容接口;
  • • 项目级例外配置;
  • • 本机和公司网络的差异;
  • • 一些只属于你自己的快捷命令。

这些东西散落在一台电脑上时,你会觉得“还能用”。一旦换机器,就会变成玄学。

chezmoi 的意义,是把这些个人 AI 基础设施收拢起来。

cdxb 这种 wrapper,不应该只是某台 Mac 里的临时脚本。它是我使用 Codex 的标准入口。

cld 这种工具,也不该靠记忆迁移。它们应该被版本管理,但真实凭证不应该进仓库。

这正好是 chezmoi 擅长的边界。

我的建议:从最痛的地方开始

不要一上来就管理整个 Home 目录。

那样很容易把自己吓退,也容易把不该同步的东西同步进去。

更好的开始方式,是先问自己一个问题:

如果明天换一台新电脑,我最不想重新调什么?

通常答案会是这几类:

  • .zshrc 和 shell 配置;
  • • 终端、文件管理器、prompt;
  • ~/bin 里的自用脚本;
  • • 常用 CLI 工具配置;
  • • AI 工具的 wrapper 和非敏感配置;
  • • 换机器时最容易漏的工作流文件。

先管这些,就够有用了。

chezmoi 对我最大的改变,不是让我少打几条命令,而是让我不再把工作环境当成一次性作品。

一台电脑调得再顺手,如果无法复现,它就只是“这台电脑刚好能用”。

能迁移、能审查、能持续更新,才是资产。

参考资料

  • • chezmoi 官网:https://www.chezmoi.io/
  • • chezmoi GitHub:https://github.com/twpayne/chezmoi
  • • chezmoi Quick start:https://www.chezmoi.io/quick-start/