How to perform an easy transition from vim to neovim? The step had to come as vim’s code base is a mess as many have written already. These days evil-mode in Emacs felt even better than the early love. Let’s get on it and enjoy asynchronous job control and lua scripting.

Neovim’s advantages over vim:

  • asynchronous job control
  • asynchronous job control (yepp, this is intentional)
  • (mostly) compatible with vim pluggins
  • embedded terminal emulator
  • and many more

Installation on Ubuntu

Get the unstable neovim (I need a higher than Ubuntu 18.04 batteries-included NVIM v0.2.2 version) ppa:

sudo add-apt-repository ppa:neovim-ppa/unstable
sudo apt-get update
sudo apt-get install neovim

For instance vim-go requires at least NVIM v0.3.1.

Assuming you are using the fantastic plugin manager vim-plug, let’s get vim almost to the migration done mark:

Configuration

Copy your configuration over to the neovim standard directories. Most things will work.

cp -r ~/.vim/plugged ~/.config/nvim/plugged/
cp -r ~/.vim/autoload ~/.config/nvim/autoload/
cp ~/.vim/.vimrc ~/.config/nvim/init.vim                   # or wherever your vimrc resides

If you want to keep the same config for both, vim and nvim, use this in your ~/.config/nvim/init.vim:

set runtimepath^=~/.vim runtimepath+=~/.vim/after
let &packpath = &runtimepath
source ~/.vimrc

Getting Started

Get started with:

:help vim-differences

PS: After I read the above, I decided to start with a blank init.vim and discarded the steps above to do a major clean up and deprecate my .vimrc. 🤷