In 2021 for Neovim, we don’t just have great themes, we also have great themes that also support a bunch of the latest Lua based plugins.

In this post, I’ll share a few of my favourite themes for Neovim. They don’t all support heaps of different Lua plugins and status lines, and not all of them have Terminal colors to apply either. And a couple will also work just as well with standard Vim.

I work with front-end languages so I’ll be show you examples with those. Go and check out the video if you want to see them more fully. That’s also the reason my mug is on most of the screen grabs below, apologies!

So, without further adieu, lets take a look:

Nightfox

Screen grab of Nightfox theme
Loads of options, Terminal and statusline colors and Nord!

I love this theme, or set of themes. Here are some of the reasons:

  • there are a few variations, including a couple of light ones, so can switch it up among that ‘family’ if you wish.
  • There’s a Nord based version. I’m a big fan of Nord!
  • It’s got this great feature where it lets you set a random choice randfox, so everytime it starts up, you get a different variant. Not something I’d want on permaenently but nice when you start with it.
  • It’s got colors for different terminals, so you can set Kitty, for example, to have the same colour way as Neovim, which makes for a lovely unified look and feel
  • It’s got support for loads of plugins. I’m on Lualine and it’s a simple case of adding the theme and again, you’re all matched up
  • Telescope looks great with this theme, look at this lovely border!
  • It’s also got heaps of options so you can tweak to your liking. For example, you can set it so the non active pane of a split gets a different background color

Melange

Melange theme grab
Lovely chocolatey colours. Melange is lovely to work with

Any OG devs watching might remember there was an editor called Espresso back in the day and I think one of the default color schemes that came with that was Cappucino. This kind of reminds me of that. There is a light version too.

It’s really nice to work with and particularly the balance between the comments and the normal stuff is great.

  • It does have color support for a bunch of different Terminals, so here is kitty in the Melange color way.
  • It doesn’t have support for statusline plugins out of the box so you can see here my Lualine is still set for Nordfox. Setting Lualine to ‘auto’ still gives decent results.

Sonokai

Sonokai theme grab
Sonokai is written in Vimscript but a great homage to Monokai Pro

There are a bunch of variations with Sonokai. My two favorites are ‘andromeda’ and ‘espresso’, which is similar to Melange which we just looked at.

  • There are a bunch of options, not as many as something like ‘Nightfox’ or ‘Tokyo Night’ but still quite a few. Some are particular to GUI clients, like ‘cursor color’ but most work in the Terminal too
  • There are no Terminal or statusline colors provided so you can see that with Lualine here I have it set to ‘auto’, which gives fine results. You’re on your own with Terminal colors though.
  • There’s an intesting setting let g:sonokai_better_performance = 1 that lets you optimise for performance by moving part of the code on demand, so if you want to eke every last millisecond out of your startup time, that’s worth looking at

Everforest

Everforest screen grab
Another Vimscript theme so works in Vim as well as Neovim

Everforest comes from the same theme author as Sonokai. It’s a lovely natural looking theme, that you may have seen on some of my prior Neovim videos.

First and foremost, it’s just a lovely calm feeling theme.

There are three light variants and three dark variants. And they are all written with Vimscript unlike some of the others we have looked at like ‘Nightfox’ and ‘Tokyo Night’ which are predominantly written in Lua.

Like Sonokai, it doesn’t have the range of options that something Tokyo Night or Nightfox does. It also doesn’t have colors for Terminals or wide ranging support for Lua plugins. Unless your using more traditional statusline plugins like airline, you’ll need to configure your own or just set it to auto.

But its a real nice looking theme, just be aware it’s not as fully featured as some of the more recent ones, that have been specifically designed for Neovim. But if your someone that works with traditional Vim as well, this is going to serve you well as its going to be fine there.

Tokyo Night

Tokyo Night grab
Seems a bit bright at first but persevere. Loads of options and support for status lines and Terminals

Tokyo Night is the theme that I feel has really set the bar. By its own admission, it’s what Nightfox based itself on.

  • It’s got options gallore
  • There are a couple of dark variants (Storm/Night) and a light one (Day)
  • It’s got colors for Terminals
  • The options are wonderfully geeky. You can choose whether you want things like functions in italics or not for example
  • It’s bright which can seem a bit much at first but this is a very usable theme. The colors, loud as they may be are very well considered
  • Like Nightfox it’s got support for heaps of Lua plugins

Summary

We’ve looked at some great themes here. I’m particularly fond of Tokyo Night and Nightfox, not least of all because it gives you a complete experience, fitting in well with not just your content but modern Lua powered statuslines and Terminals like Kitty.

Nightfox also lets you abstract colours from the scheme easily enough to use elsewhere too. For example, I have a little function that I added to my Lualine to show a word count when I am in a markdown or text file. I get the colors from Nightfox like this:

local nfColors = require("nightfox.colors").init("nordfox")

And then I can use them in Lua where I want them like this:

fg = nfColors["bg_alt"] or "#333333"

This was the kind of stuff I always struggled to figure out in Vimscript but I find relatively intuitive with Lua.

Learn to use CSS effectively, 'Enduring CSS' is out now

Get $5 off HERE ↠

Write and maintain large scale modular CSS and embrace modern tooling including PostCSS, Stylelint and Gulp