↩ go back to index

Experiments in Minimal Syntax Highlighting

February 2, 2024

A few weeks ago, I saw someone posting on the Fediverse about their experiments with extremely minimalist syntax highlighting (i.e. little to no highlighting at all, other than maybe comments and strings), and had mentioned a few Vim plugins for it. Pinned the plugin tab in my browser because I've been wanting to look into something like that for a while, but didn't get around to it until a few days ago.

I experimented with vim-boring (the theme I originally had pinned), as well as a few themes listed on a “Vim no color collection” I found. vim-monotone particularly stood out to me as one of the best.

However none of them were really as flexible as I wanted. Namely, basically my entire DE and all the programs I regularly use (other than GTK 4 programs because GTK is the worst GUI toolkit in existence) are Gruvbox themed, and the monochromatic themes all heavily clashed with everything else. I'm not really interested in going through the pain of retheming everything to match, and I really do like the general amber-y look of the Gruvbox background and foreground even without any other colors. So I decided to try and just modify Gruvbox instead, which I think turned out pretty okay so far.

Here's an excerpt from my init.vim with what I came up with:

monochromatic-gruvbox.vim

Sample 1 — AdaSample 1 — Ada

Sample 2 — AdaSample 2 — Ada

Sample 3 — CSample 3 — C

Sample 4 — Common LispSample 4 — Common Lisp

Sample 5 — GemroffSample 5 — Gemroff

I'm quite happy with it, looks nice and minimalist but maintains the most important visual distinctions that allow quickly scanning code. I decided to try and make keywords/symbols be bold or italics rather than completely plain, although I might end up removing that so there's no highlighting at all other than comments and strings. I do like rainbow parentheses so I currently left those in, just removing the brigher Gruvbox accent colors like red, orange, and yellow. Since it's the only colors used in the whole theme though, dunno if I might exchange the colors for different shades of grey; although I expect I'll probably leave the colors and just disable rainbow parentheses for everything other than Lisp dialects.

I do doubt I got all the highlight groups overriden, particularly due to the hundreds of filetype-specific groups that even the default Vim runtime has. If anyone else is interested in actually using this, be prepared to manually add overrides for the groups used by your common filetypes' plugins.

I dunno if I'm gonna stick with it or switch back to more colorful highlighting, although I am quite fond of it for the moment. If I do add back in any more color, I'll likely end up making the colors much more desaturated and muted though. Been wanting at minimum that for a while. (get in touch if you know of a muted/monochromatic Vim theme that lets you fully customize the colors though!)