Spring is in the air! Inspired by Deletion Day, I’ve been tidying up some of my physical and digital life. I’ve deleted old accounts, removed applications that I’m not using, and gotten rid of extraneous hardware. But, the cleanup I’m most proud of is my dotfiles cleanse.
For awhile, I was a bit of a dotfiles pack rat. I worried that the knowledge I had gained - the choices I had made - would be lost to the depths of time if I were to remove them from the text of the files themselves. That meant old color schemes, old key bindings, old tips and tricks, all stayed in their respective places. Perhaps moved around, but not deleted. Over the years, this meant that my vimrc had bloated up to ~1600 lines! I had also accumulated a lot of files for tools I’m no longer using, that were strewn all over my system.
I finally reached a breaking point, removing the
There was nothing wrong with it, but I wasn’t using it as often as I thought.
I used this as momentum to move on to my other configuration files, mostly my vimrc.
Previously, I had been fairly lax on my git hygiene for the repo, using commit messages like “Various updates” or simply a “✨”.
I knew that removing all that accumulated knowledge meant that I needed to have better practices, so I started using a
tool: prefix on my commit subjects, and trying to be better about abiding to atomic commits.
Now, my vimrc is a lean ~350 lines!
(Maybe not lean for a vanilla vim purist, but it’s reasonable for me!)
You’ll also notice that I’ve converted over to neovim fully.
I had a number of settings, plugins, and mappings that were working around some of vim’s weirdness, and I was using neovim 98% of the time.
I removed all the settings that were the default in neovim and did a lot of
:help diving to understand the settings that remained.
I also dropped plugins that I used sparingly, some of the filetype specific autocommands, and the sectioning comments used for folding.
I’ve added a few plugins back that I wasn’t quite able to shake (notably, I tried to learn vim’s builtin autocomplete commands, but found deoplete to be something I couldn’t avoid using).
XDG Base Dir
Switching over to neovim meant that I could remove the hacks around neovim finding vim’s configuration directory, and move everything to ~/.config. I could also leverage neovim’s data dir for storing my plugins. Given the neovim changes, I started to look elsewhere where I could move my dotfiles in ~/.config, and managed to get everything except .tmux.conf moved over. This includes my global git configuration, which until now I didn’t realize could be anywhere but ~/.gitconfig and ~/.gitignore!
Alongside the effort to move everything to within ~/.config, I ended up removing language specific configuration (mypy, isort, and flake8 config for Python, profiles.clj for Clojure), tooling configuration (curlrc, editorconfig, vale.ini), old package listings (Brewfile), and unused shell configuration (zprofile, zshenv, and zshrc). Overall, I’ve reduced my dotfiles down to things that I use now.
And it feels great.