使用dotfiles管理配置文件

之前也是无意中看到别的大佬github上的dotfiles仓库了解到dotfiles这个名次,后来专门搜索了一下,其实原理很简单,就是把常用的软件配置文件都集中在一个git仓库里管理备份,然后通过软链接的形式把这些配置文件安放到合适的位置。

由于那些Unix系统中的配置文件通常以.(英文:dot)开头,以隐藏文件的形式保存在用户的主目录(home目录)下,所以这个仓库被成为dotfiles

这和我之前用Dropbox或Google Drive备份配置思路差不多,只不过缺少了ln -s软链接的过程。

今天趁着搭建Ubuntu下开发环境的机会,我也实践了一把dotfiles管理。其实说实话,像我这种被同事戏称开发前得先治病的强迫症患者,dotfiles真香。

整理下MacOS和Ubuntu下公用的软件,vim、zsh、git这三个是必需品,以前还备份过Ubuntu Compiz软件的各种特效、主题图标之类的,实在折腾不动了。

整理完的目录结构大致如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
dotfiles
├── README.md
├── git
│   ├── _git-completion.bash
│   └── _gitconfig
├── link.sh
├── sh
│   └── _shrc.local.bak
├── vim
│   ├── _vimrc
│   ├── nvim
│   │   └── init.vim
│   └── plugins.vim
└── zsh
├── _zshrc
├── agnoster-rfw.zsh-theme
└── install_zsh_plugins.sh

git主要就~/.gitconfig文件,这里有一些我的奇怪的alias配置;.git-completion.bash主要防止在某些版本,git之后无法自动补全子命令,需要在终端启动脚本(具体文件和使用终端程序有关)里加载(source)一下。

sh中的.shrc.local主要是我本地的开发环境有些环境变量的配置,我会在终端的启动脚本里加载,由于这些变量和本机的目录有关,暂时以备份文件的形式,当一个模版使用。

vim是多年的老伙计了,最近投入了neovim的怀抱,有些配置为了兼容还是保留在.vimrc里;neovim的默认启动脚本为~/.config/nvim/init.vim,这里简单处理加载了vim的环境信息;plugins.vim是我自己使用插件的合集,用于vim-plug插件管理器读取,vim第一次运行时就会自动下载安装plugins.vim中的插件。

zsh也是最近新欢,比老伙计bash多了很多贴心功能,而且主题皮肤很多(适合我这种闷骚的强迫症),.zshrc是其主要配置文件,agnoster-rfw.zsh-theme是我修改的agnoster主题,install_zsh_plugins.sh包含了著名zsh插件组合oh-my-zshzsh autosuggestionszsh syntax highlighting插件安装的命令。

link.sh就是我简单写的ln -s命令合集,需要sudo ./link.sh执行,实现功能就是将各个文件放置到合适的目录中去,做的好一些的话可以添加一些交互式操作,让用户选择链接哪些文件,以后再完善吧。

我的dotfiles仓库地址如下:dotfiles.git,基本可以即开即用。

以Ubuntu 18.04为例。

  1. vim

推荐安装neovim,使用上和vim普通没有什么区别,有些neovim专用的插件。使用sudo apt-get install neovim安装。

由于第一次运行会执行curl去下载vim-plug插件管理器,因此,还需要事先执行sudo apt-get install curl安装。

另外,插件中包含自动补全代码的神器YouCompleteMe需要python3.6支持,在第一次运行完nvim/vim安装完插件后,建议完成YCM的安装。

首先执行sudo apt-get install python3.6 python3.6-dev安装所需依赖。 然后cd ~/.vim/bundle/YouCompleteMe,执行./install.py --clang-completer,如不需要clang支持,可以不加入参数。

vim的配置文件中的一些按键设置,可以按需修改_vimrc文件。

  1. zsh

运行sudo apt-get install zsh安装zsh程序,然后执行sudo chsh -s /bin/zsh将默认终端程序替换成zsh,重启或者退出当前用户重登录即可。

正常情况这里就OK了,使用echo $SHELL查看当前运行的shell程序是什么。

我今天遇到个奇怪的问题就是chsh始终没法替换成功,一直是bash无法改变。

在stackoverflow上看到有个答案,可以修改/etc/passwd文件,把包含当前登录用户名的那一行最后/bin/bash改成/bin/zsh,重启电脑即可。

  1. git

建议修改_gitconfig中用户名邮箱相关,主要是些alias别名配置,我比较懒,所以大多数子命令都用两个字母缩写。

以上,就是今天的dotfiles初探,以后再补充其他配置。


使用dotfiles管理配置文件
https://wuruofan.com/2020/04/13/using-dotfiles-repo-to-backup/
作者
rf.w
发布于
2020年4月13日
许可协议