一直都使用手动的方式来管理 dotfiles,之前一方面是学习,一方面是熟悉整个配置,但随着配置文件的不断增多,管理便成为了一个问题。今天本来是在看 Karabiner 的配置,然后找到了一些参考,发现 narze 使用 dotbot 来管理其配置。便顺手也把我的 dotfiles 改了一下。

dotbot 的原理非常简单,就是将配置文件软链接到特定的位置,使得 Vim,Tmux, zsh 之类可以直接使用。然后 dotbot 使用 YAML 定义的一套配置格式将整个过程简化。使得最后可以直接运行 git clone git@github.com:einverne/dotfiles.git && cd dotfiles && make bootstrap 一键完成初始化。

使用

最基本的使用方法,参考说明:

cd ~/.dotfiles # replace with the path to your dotfiles
git init # initialize repository if needed
git submodule add https://github.com/anishathalye/dotbot
git config -f .gitmodules submodule.dotbot.ignore dirty # ignore dirty commits in the submodule
cp dotbot/tools/git-submodule/install .
touch install.conf.yaml

将其加入为作为 submodule 然后添加一个配置 install.conf.yaml 即可。

更新

更新子 module:

git submodule update --remote 

Configuration

dotbot 的配置文件是 yaml 格式,非常易读。这是官网给的一个例子:

- defaults:
    link:
      relink: true

- clean: ['~']

- link:
    ~/.tmux.conf: tmux.conf
    ~/.vim: vim
    ~/.vimrc: vimrc

- create:
    - ~/downloads
    - ~/.vim/undo-history

- shell:
  - [git submodule update --init --recursive, Installing submodules]

目前 Dotbot 定义了一系常用的动作,比如 link, create, shell, clean 等等。

defaults

defaults 定义了默认的行为。

link 命令定义了文件或文件夹如何 symbolically linked。

create

create 命令定义了回去创建这些目录。

shell

Shell 命令则会指定需要运行的命令。

clean

clean 命令会去检查目录下的连接,如果发现连接已经无效则会移除这些连接。

reference