Programming Neovim
Neovim is a fork of vim which aims at doing a major refactoring of the codebase with a focus on modern development workflows and making vim more extensible. (Check the Neovim documentation which describes Neovim’s vision.)
The notes below describe how you can program Neovim - the text editor itself - and customize it to your heart’s content from changing basic configuration, to custom key mappings, and how to create your own plugins. For additional notes on neovim see:
Table of Contents
Get started programming Neovim
Although Neovim supports vimscript, the original scripting language used to program Vim, one of the biggest innovations brought forward by the Neovim team is the adoption of Lua as the core scripting language for Neovim. This design decision has started a renaissance of plugin development for Neovim and has brought lots of energy and vibrance into the Neovim community.
A handful of great resources to have in handy before you start your journey programming Neovim are:
- Learn lua in Y minutes
- The Lua reference manual. An adapted version of the reference manual is also available within Neovim via
:h luaref
- The neovim lua guide available within Neovim via
:h lua-guide
and the neovim lua engine docs also available viah lua
.
The simplest way to get started programming Neovim with lua is to use the :lua
ex-command. Type
TODO
Neovim lua apis
- Vim api
- Nvim api
- Lua api
The Nvim API is written in C for use in remote plugins and GUIs. It lives under the vim.api
namespace. May of its functions start with nvim
as in nvim_create_namespace
and will often appear in the Neovim documentation without the namespace. So make sure to remember to call any nvim_
function including the namespace vim.api.nvim_create_namespace
. For more information refer to :h api
.
Setting up a great Neovim development environment
TODO
Options
TODO
Keymaps
TODO
Additional resources
- Learn lua in Y minutes
- The Lua reference manual
- The neovim lua guide available within Neovim via
:h lua-guide

Written by Jaime González García , dad, husband, software engineer, ux designer, amateur pixel artist, tinkerer and master of the arcane arts. You can also find him on Twitter jabbering about random stuff.