Skip to content

Repository files navigation

dotfiles

用 chezmoi 管理 Windows 和 macOS 的 Neovim 配置。日常先修改实际使用的 nvim 配置,再复制回源仓库,最后通过 GitHub 同步。

目录和数据方向

源仓库默认位于 ~/.local/share/chezmoi,可用 chezmoi source-path 确认。

位置 职责
Windows:%LOCALAPPDATA%/nvim Windows 实际使用、日常编辑的配置
macOS:~/.config/nvim macOS 实际使用、日常编辑的配置
.chezmoitemplates/nvim/ 共享配置正文,不需要 .tmpl 后缀
AppData/Local/nvim/ Windows 部署路径及模板引用
dot_config/nvim/ macOS 部署路径及模板引用
.chezmoiscripts/ apply 后执行的现有平台复制脚本
.chezmoiignore 平台选择及忽略项

两端 .tmpl 引用同一份共享正文,例如:

{{- template "nvim/lua/config/keymaps.lua" . -}}

路径相对于 .chezmoitemplates/;template 是单数,. 传入当前模板上下文。仅添加 .tmpl 后缀不会自动引用共享内容。

.neoconf.json、.gitignore 和 .keep 等以点开头的文件不能按普通命名模板直接引用,使用 include 读取共享文件正文,例如 {{- include ".chezmoitemplates/nvim/.neoconf.json" -}}。空文件继续保留平台源文件的 empty_ 属性。

实际 nvim 配置
  → 手动复制到 .chezmoitemplates/nvim
  → git add / commit / push
  → 另一台机器 chezmoi update
  → 按该系统的引用文件渲染到实际 nvim 目录

apply 的方向是源仓库到实际配置;回收本地修改必须在 apply 之前完成。

只修改已有文件

  1. 在实际 nvim 目录修改、使用并确认配置。

  2. 将改动按相对路径复制到 .chezmoitemplates/nvim/,保留平台目录中的引用文件。

  3. 用 chezmoi diff --exclude=scripts 检查渲染结果;已回收的文件应与本机一致。用 chezmoi git diff 审阅仓库改动。

  4. 提交并推送:

    chezmoi git add .chezmoitemplates/nvim
    chezmoi git -- commit -m "Sync nvim configuration"
    chezmoi git push
  5. 在另一台已有此仓库的设备执行 chezmoi update。该设备若也有尚未回收的修改,应先回收并提交,再拉取。

Windows 复制全部当前配置的例子(包含子目录,不传播删除):

$nvimSource = Join-Path $env:LOCALAPPDATA 'nvim'
$chezmoiSource = (chezmoi source-path).Trim()
$nvimShared = Join-Path $chezmoiSource '.chezmoitemplates/nvim'
robocopy $nvimSource $nvimShared /E
if ($LASTEXITCODE -ge 8) { throw '复制 nvim 配置失败' }

当前共享正文不使用按机器渲染的 Go 模板条件。以后若引入此类条件,回收时须合并改动,不能用单台机器的渲染结果覆盖模板逻辑。

新增和删除文件

新增文件时,把正文复制到共享目录,并在两端各添加对应的 .tmpl 引用。例如,两端的 lua/plugins/example.lua.tmpl 均引用 nvim/lua/plugins/example.lua。同时提交正文、两端引用和相关忽略规则。

也可沿用旧流程:先补当前平台引用,预览后执行 chezmoi apply,让现有后置脚本复制到另一平台目录。两端引用都已补齐时,本机无需仅为上传而执行 apply。

删除文件时,同时移除共享正文和两端引用。现有 robocopy /E、rsync -a 不会删除目标目录中的旧文件,须显式处理旧副本。从仓库移除引用或执行 chezmoi forget 只是停止管理;如果需要同步删除另一台设备上的旧文件,应为确定要删除的配置添加 .chezmoiremove 路径规则,并先检查差异。

现有后置脚本和平台设置

平台 apply 之后的动作
Windows robocopy /E 将 Windows 源目录复制到 macOS 源目录,再将实际 nvim 配置复制到共享目录
macOS rsync -a 将 macOS 源目录复制到 Windows 源目录,再将实际 nvim 配置复制到共享目录

脚本只复制本机文件,不做 Git 提交或推送。chezmoi update 包含 apply,也会触发脚本,接收更新后仍可能出现源仓库改动。脚本执行时配置部署已经完成,不能代替事先回收本地修改。

现有平台规则保持不变:

  • Windows 忽略 .config/,macOS 忽略 AppData/。
  • macOS 不部署 lazy-lock.json 和 lazyvim.json。macOS 后置脚本仍会把本机这两个文件复制到共享目录,提交时需检查,避免无意改动共享版本。
  • Windows 忽略 .gitignore;macOS 的 nvim .gitignore 是显式例外。
  • 当前 VimTeX 共享配置使用 Windows 的 SumatraPDF。macOS 使用前需要按本机查看器调整;共用模板不会自动解决平台差异。

命令辨析

  • chezmoi add:把实际配置收进源仓库;--template 是单数。
  • chezmoi re-add:回收已管理的普通文件,跳过模板。本仓库应按上述复制流程回收。
  • chezmoi edit:编辑源文件;本仓库源文件多为引用,修改正文可直接编辑共享目录中的文件。
  • chezmoi apply:将源仓库渲染到实际配置,不会上传 GitHub。
  • chezmoi update:拉取远端并应用配置。
  • chezmoi cd:打开位于源目录的 shell;exit 退出该 shell,不是编辑命令。
  • chezmoi cat-config / chezmoi edit-config:查看、编辑 chezmoi 自身配置,不是 nvim 内容。

参考

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages