decolletage.vim
,I’ve been using a hastily-thrown-together color scheme for vim, cleverly named ‘bcustom.vim’ for years now. It’s a dark scheme, peppered heavily with syntax highlighting. While slightly softer than most, it’s still a pretty typical, masculine scheme. I recently realized two things – I would like to use a more feminine, light scheme based on my general sense of pinkness1, and I actually find myself a lot more distracted by extensive syntax highlighting than I find myself aided by it. So I decided to start from the ground up, and build a minimalist, light pink colorscheme, ‘decolletage.vim’.
Again, part of the design decision was to keep the total number of colors used to a minimum. So, to start, here’s the basic scheme. You can see the line numbers, the basic scheme, a comment, an uncapitalized word (‘colors’), a misspelled word (‘matchTypo’), a fold, a search result (‘cterm’), an error (‘#123456’), a visual selection (‘Decolletage’), and matched parentheses:
193
194
195 “Adjust things re: markdown. colors only matchTypo if decolletage loads
196 if g:colors_name==“decolletage”
197 +— 5 lines: hi! link markdownBlockQuote CursorColumn――――――――――――――――――――――
198
199 hi markdownBlockQuote ctermfg=none ctermbg=#123456
200 call DecolletageDiff(1)
It… looks a lot like this blog, I know. That truly wasn’t how I set out to do things, it’s just my aesthetic. Let’s examine a little -- More --
, like that right there, which is how the more/mode message lines appear. Or these status lines:
2:~/.vim/colors/decolletage.vim [RO] [vim][utf-8] 74,1 71%
2:~/.vim/colors/decolletage.vim [RO] [vim][utf-8] 74,1 71%
2:~/.vim/colors/decolletage.vim [RO] [vim][utf-8] 74,1 71%
…Active, inactive, and insert, in that order. Yes, it may be weird, but I like having a blunt, obvious indication of which mode I’m in. And I associate blue with insertion, so that’s my choice for insert. This was a feature of my hacked-together ‘bcustom.vim’ as well – it’s pretty nice to have.
There are two variants for diffs in decolletage.vim. One is more traditional, very obvious with highlighted backgrounds and the like; and the other is fittingly minimal. Here’s the standard version (you also get to see a split line here; it’s predictable) (oh, and non-printing characters):
1 if this {↲ │ 1 if this {↲
2 → that↲ │ 2 → that↲
3 → the other↲ │ ----------------------------------
4 → print “goodbye”↲ │ 3 → print “goodbye”↲
5 → return true↲ │ 4 → return false↲
6 → }↲ │ 5 → }↲
…and here’s the more jarring, less obviously-a-diff minimal version:
1 if this {↲ │ 1 if this {↲
2 → that↲ │ 2 → that↲
3 → the other↲ │ ---------------------------------
4 → print “goodbye”↲ │ 3 → print “goodbye”↲
5 → return true↲ │ 4 → return false↲
6 → }↲ │ 5 → }↲
I’m fully on board with the minimal version, but it doesn’t seem right to have as a default, so it isn’t. Add call DecolletageDiff(1)
to your .vimrc
to use it. Alternatively, you can choose it as a default, and call DecolletageDiff(0)
for filetypes that seem to desire a more blatant diff.
:set cursorline
in decolletage.vim
looks like this:
254
255 this is the line that the cursor is on _
256
I’m not a huge fan of cursorline
, but I do see value in being able to quickly find the current line, so for a more subtle cursorline
, we can call DecolletageNecklace(0)
:
254
255 this is the line that the cursor is on _
256
Finally, there is an option to actually add some syntax highlighting, via call DecolletageFreckles(1)
. It’s rudimentary so far, and based on the default colors that vim would use in a 16-color terminal.
317 Constant
318 Identifier
319 Statement
320 PreProc
321 Type
322 Special
323 Number
324 Boolean
…this probably needs tweaking, but it is there if you want it. And again, implementing it as a function call means you can pop it on and off at will as you’re flipping through a file. So, that should be adjusted, I’d like to add some color for netrw
, and I need to implement it as GUI colors as well2. But, for the time being (and particularly for my own specific needs), decolletage.vim
looks pretty good, and is available for preliminary testing here.