Neovim really cleans up, explains carwow developer

This is a guest post written for the Computer Weekly Developer Network by Muyiwa Olu

Olu holds the position of software developer (and a ‘full stack’ developer, at that) for independent car buying website carwowOlu discusses the benefits of using Neovim.

Neovim is the ‘neo’ new age next iteration project of Vim — and Vim itself is a popular text editor that enjoys a growing community.

Aggressively refactoring

According to the Vin GitHub pages, even though the editor is about two decades old, people still extend and want to improve it, mostly using Vimscript or one of the supported scripting languages.

Neovim seesk to aggressively refactor Vim source code in order to achieve better maintenance, extensibility power, split the work among multiple developers and enable the implementation of new/modern user interfaces without any modifications to the core source.

Muyiaw Olu writes as follows…

Like many developers in the Ruby community (and around half of the developers at carwow) I use and love Vim.

There’s lots of different reasons why people use and love Vim, mine is that it synergises with my philosophy that text editors should primarily focus on increasing productivity for manipulation of text.

Vim excels at this.

All hail the vim-wizards

About two months ago, one of our resident vim-wizards told me to try out Neovim.

“It fixes all the issues with Vim, while being backwards compatible with all your plugins,” was the sales pitch.

Being relatively new to Vim (six months of usage), I was very much in the honeymoon phase. I couldn’t really think of any issues with my newest revolutionary tool; but I’ve always kept an open mind (which is how I came to learn to use Vim in the first place) so I gave it a go.

Fast forward to today, and I can freely admit that I’m a believer. While Vim is a great tool, my time with Neovim highlighted things I wished Vim had.

Neovim has managed to improve the Vim experience, while keeping the core essence of what makes Vim special to me.

Neovim is easy to switch to

Neovim is easy to switch to… but that’s partly because it’s not really a switch.

Neovim is almost a superset of Vim. It extends it with features you didn’t know you needed, while keeping backwards compatibility. Neovim is an extension of Vim: feature-parity and backwards compatibility are high priorities.

If you are already familiar with Vim, see: help nvim-from-vim to learn about the differences.

Want to ‘switch’ to Neovim from Vim? On OSX, it’s as easy as:

brew tap neovim/neovim

brew install neovim

mkdir ~/.config

ln -s ~/.vim ~/.config/nvim

ln -s ~/.vimrc ~/.config/nvim/init.vim

Did Neovim do something you don’t like? Need to use vim for a particular reason? Just run vim and continue as you did before.

Sane defaults

Neovim comes with sane defaults meaning that newcomers will find things a little more familiar and a little easier to get used to.

For example; syntax enable gives you syntax highlighting out of the box, and filetype plugin indent on turns on detection, plugin and indent – useful settings to have out of the box, especially for external plugins to work their magic.

If you’re an expert, however, feel free to customise every nook and cranny as you normally would.

Asynchronous plugin support

You don’t know how much you want asynchronous plugin support until you have it. It makes a huge difference, especially when you have larger codebases that you may need to traverse.

Neovim has incredible support for async plugins, allowing heavy processing to be pushed to the background and results to update the UI when they are ready. Locking the UI while waiting for a plugin is a thing of the past. fzf (and consequently fzf.vim), Neosnippet.vim, Deoplete.vim, and Neomake are examples of vim plugins which can only be described as ‘blazing fast’.

Embedded Terminal

Open a split, type :terminal and enter commands all without leaving the editor. It’s a nice workflow that has proved to be useful on several occasions. There is also a t namespace for key bindings that only work in the terminal, e.g. tnoremap.

As with all software, not everything is sunshine and roses. Here are some reasons you may not want to use Neovim:


Vim is rocking it’s 8th major release however, as of the time of writing this blog post, Neovim is currently sitting at version 0.1.7.

This may excite or scare you, depending on the type of person you are. Bugs will occur, and features are still yet to come.

If you don’t like trying out immature software, then Neovim is probably not for you.

(A few) workarounds

To navigate my splits easier, like most vim users, I remapped the keybindings to feel more natural.

In Neovim, remapping ctrl-h doesn’t work as expected. A workaround is required for expected behaviour, while the bug is being worked on.

Below is my workaround (macOS):

if has(‘nvim’)

  ” Hack to get C-h working in neovim

  nmap <BS> <C-W>h



Muyiwa Olu, software developer for independent car buying website carwow

Muyiwa Olu, software developer for independent car buying website carwow

Summary thoughts

Neovim is awesome.

It fixes little niggling issues that Vim has, while not straying away from the true Vim philosophywhich is vital.

The maintainers are also dedicated to making the codebase a lot cleaner and easier to contribute to for newcomers.

The future looks bright for the project and I hope the contributors continue to make life easier for developers who believe in the Vim philosophy.