chezmoi 是使用 Go 编写的跨平台 dotfiles 管理工具, 使用同一的 Git 仓库进行配置同步, 可以很方便的帮助我们在多个开发环境共用一套配置, 免去一些同一工具链需要手工重新在多个机器配置的工作量.

通用 dotfiles 文件管理程序: General-purpose dotfiles utilities - dotfiles.github.io

安装

brew install chezmoi

初始化

chezmoi init

执行 chezmoi init 将创建一个新的本地Git仓库,目录为: ~/.local/share/chezmoi,将在这个目录下存储所有的配置文件,使用 chezmoi cd 命令可以快速进入文件目录

chezmoi cd

基础使用

.zshrc 文件为例,执行

chezmoi add ~/.zshrc

这将复制 ~/.zshrc~/.local/share/chezmoi/dot_zshrc

chezmoi edit ~/.zshrc

这将打开 ~/.local/share/chezmoi/dot_zshrc 文件并编辑,并不会修改~/.zshrc文件,修改之后执行

chezmoi diff

这将展示出修改的差异,展示本次修改做出了哪些改变。
应用更改到源文件

chezmoi -v apply

上传修改到Git

chezmoi cd 
git add .
git commit -m "Initial commit"

管理文件夹

与管理 dotfile 文件一样,以 nvim 为例

chezmoi add ~/.config/nvim
chezmoi edit ~/.config/nvim
chezmoi diff
chezmoi -v apply

指定编辑器

创建 chezmoi 的配置文件 ~/.config/chezmoi/chezmoi.toml 并添加以下配置,这将设置默认编辑器为 VSCode

[edit]
	command = "code"
	args = ["--wait"]

指定 diff 工具

指定 diff 工具为 VSCode

[diff] 
	command = "code" 
	args = ["--wait", "--diff", "{{ .Destination }}", "{{ .Target }}"] 
[merge] 
	command = "bash"

新机器使用

安装配置文件

chezmoi init --apply $GITHUB_USERNAME
 
or
 
chezmoi init --apply --verbose https://github.com/$GITHUB_USERNAME/dotfiles.git

更新配置文件

chezmoi update -v

管理 Chezmoi 自身的配置文件

  1. 创建 .local/share/chezmoi/.chezmoi.$FORMAT.tmpl 文件,如果你希望使用 toml 格式的配置文件,那就创建 .chezmoi.toml.tmpl 并添加配置
  2. 执行 chezmoi init 将自动创建 ~/.config/chezmoi/chezmoi.toml 配置文件
  3. 之后修改文件时修改 .chezmoi.toml.tmpl 文件然后 chezmoi init 来重新生成配置文件

其他命令

  • chezmoi merge $FILE - 将源文件的更改与chezmoi 管理的文件进行合并
  • chezmoi unmanaged - 列出不由 chezmoi 管理的所有内容
  • chezmoi managed - 将列出 chezmoi 管理的所有内容。
  • chezmoi list - 同上
  • chezmoi unmanage - 取消管理某个文件
  • chezmoi git - 直接执行Git 命令
    • chezmoi git add .
    • chezmoi git -- commit -m 'update'
    • chezmoi git push
  • chezmoi edit-config - 编辑 chezmoi 自己的配置文件