vondrak's soapbox a tech blog


I made my own Vim color scheme based on Google’s Material Design palette.

That’s right, another one.

There are already so many Vim color schemes. So many that people catalog them on websites, generate galleries, vendor them into giant packages, discuss them to death, and lobby to mainline them into Vim. So many that there needs to be an incubator initiative.

It’s a popularity contest waged endlessly between competing matters of taste. And it’s not like we’re hurting for choices. So why add to all that noise? Where do I get the energy? The nerve?

I wasn’t even unhappy with my Vim colors, per se. I’d settled on inkpot a long time ago—not even that long after learning Vim. Much like Vim had won over my muscle memory (so why bother learning another editor?), my mind was made up on inkpot. Its color palette always struck me as a bit unorthodox (all that garish pink and orange clashing against the calmer green and blue), but somehow it worked. I couldn’t nail down why, but I didn’t bother thinking about it. It just worked in ways that no other color scheme did for me. I’d get periodic reminders that more was out there: friends getting bored with their current schemes, coworkers comparing dotfiles, etc. But no matter the FOMO, nothing was ever appealing enough to switch. I figured I’d probably just keep using inkpot forever.

But then I burned out, quit my job, and had to rebuild my relationship with programming & work. If I was going to crack open my editor again, I needed a change of scenery.

Enter the never-ending analysis paralysis (exacerbated by the burnout). All the hundreds upon hundreds of choices that never sat quite in that Goldilocks zone, and I didn’t know why. For all the mileage I’d gotten out of inkpot, I had to finally start figuring out what I wanted & needed out of a color scheme. This was uncharted territory.

It turns out that most of the popular themes (e.g., gruvbox, solarized, nord, zenburn, seoul256, apprentice) are purposely designed to be lower contrast on the premise that it’s easier on the eyes. However, they typically make my eyes hurt immediately: everything is too washed out and I struggle to see anything. But then higher contrast themes (e.g., jellybeans, badwolf, molokai, srcery, vividchalk) could also feel too harsh, even if my eyes were more comfortable. I tried all sorts of themes in between (e.g., Tomorrow-Night, dracula, tender, monokai), but I always had some problem or other. Nothing sparked joy.

But I was learning. If only by comparison, I started to notice more and more things, such as:

  • I love how colorful inkpot is, but its palette is so complicated—over 50 colors!
  • I’d come to rely on so many artful effects, like how inkpot adds background highlighting to strings that makes interpolation so much easier to read.
  • And yet inkpot made diff mode so ugly that I never used it. I was so confused by the color choices that I didn’t realize I was even in this thing called “diff mode”. 🤦
  • So many other color schemes (including inkpot) draw extra attention to folds using bright highlighting. But I want folds to hide text I don’t care about, not make it louder.
  • It turns out that I find text emphasis (bold, underline, italics) way too easy to overuse. I definitely didn’t want to apply the effects to standard syntax groups.
  • Even the higher-contrast color schemes often have desaturated colors that look washed out anyway.

As I continued searching, I repeatedly came across Material-based color palettes, or at least ones that resembled those colors: various base16 schemes (base16-google-dark, base16-material, base16-tomorrow-night), hybrid, one, onehalf, onedark, neodark, quantum, etc. It was probably the first time I ever saw a group of colors together in one theme and thought wow, yes, that. But there were still all the niggling issues, from low contrast to weird syntax highlighting choices to colors I simply wanted to swap around. So, now armed with the Material color tool, I just tried to pick colors consistently and apply them judiciously. Before I knew it, I was making my own color scheme.

That’s it: more or less an accident of perfectionism. I have nothing to prove. I’m not a designer. I have no ✨ system ✨ to breathlessly advocate. No grand vision. Just my own two eyes.

And that’s okay. It’s a lesson I keep trying to learn. Just because I’m riddled with these high levels of atelophobic anxiety, it doesn’t mean I have to justify my every move. It doesn’t stop me, of course. Exhibit A: this blog post. Exhibit B: the documentation wiki I poured myself into. Exhibit C: honestly, probably my burnout (though it’s pretty chicken-and-egg, so I won’t even get into that).

In the end, color schemes are a very personal choice—even more so when you make your own. I’m my target audience. This is for me. Yeah, I could probably have just kept using inkpot. Or I could learn to love dracula (or gruvbox or…). Yes, it’s yet another derivative Material theme. Maybe no one else in the world needs it, but for once I don’t care. I needed it. These colors are finally good enough to replace my default of the last 10+ years.

And so I found it only fitting to name the result something personal, too. My color scheme is vondark: a nod to dark themes everywhere and a pun on my own surname. It doesn’t get much more personal than that. If nothing else, the name’s good enough that it’s worth publishing now.