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:
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
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.
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 = 1that 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 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 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
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.