01The Editor, Honestly Explained

Neovim is a fork of Vim, and Vim is a fork of vi, and vi shipped on Unix systems before most of its current users were born. That lineage explains a lot: the modal editing model — where the same keys do different things depending on whether you're inserting text or commanding the editor — is not a quirk but a philosophy. Normal mode is where you spend most of your time. Insert mode is where you type. That distinction clicks slowly and then all at once.

Past the 'how do I quit' memes.

Install it through your package manager: sudo apt install neovim, sudo dnf install neovim, or sudo pacman -S neovim. The packaged version is fine to start. When you open it with nvim, you land in Normal mode. The keys h j k l move the cursor left, down, up, right — hold that thought, because arrow keys work too, and there is no shame in using them while you find your feet. To enter Insert mode, press i. To return to Normal mode, press Escape. To quit without saving, type :q! in Normal mode. To save and quit, type :wq. That is the entire surface you need on day one.

02A Config That Doesn't Require a PhD

Neovim reads its configuration from ~/.config/nvim/init.lua — or init.vim if you prefer the older Vimscript syntax, but Lua has been the idiomatic choice since Neovim 0.5 introduced a proper Lua API. Create the directory and the file if they don't exist:

mkdir -p ~/.config/nvim
touch ~/.config/nvim/init.lua

A minimal init.lua worth having:

lua
vim.opt.number = true          -- line numbers
vim.opt.relativenumber = true  -- relative line numbers
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true       -- spaces, not tabs
vim.opt.wrap = false
vim.opt.termguicolors = true

That is eleven lines. The editor now has numbered gutters, sane indentation, and colour support. Stop there until you feel the friction that demands something more.

0.5Neovim version that introduced the stable Lua API

03Plugins Without the Overwhelm

The temptation is to immediately clone someone's six-hundred-line config from GitHub. Resist it. You will configure features you cannot name for problems you have not encountered.

When you genuinely want plugins, lazy.nvim is the modern plugin manager of choice — it handles lazy-loading (loading a plugin only when you first need it) and keeps startup time honest. Install it by bootstrapping from within your init.lua using the few lines from its README; the project's documentation is clear and current.

Start with one plugin at a time. A colour scheme is a reasonable first pick — catppuccin and gruvbox are both popular and maintained. After that, nvim-treesitter gives you syntax highlighting that actually understands code structure. After that, maybe a file explorer. Not all at once.

The wider draw of Neovim for developers is its native Language Server Protocol support: hook up nvim-lspconfig and a language server such as pyright or clangd, and the editor gains go-to-definition, diagnostics, and completion without a heavyweight IDE. That is a third session's project, not a first night's.

Neovim rewards patience the same way the terminal does. The investment is real but so is the payoff — an editor that runs anywhere, starts instantly, and eventually bends to exactly how you think.

The players

Neovim

Community

community-maintained fork of Vim, focused on extensibility and Lua scripting

lazy.nvim

Reference

modern Neovim plugin manager with lazy-loading support

nvim-treesitter

Reference

Neovim plugin providing structured, grammar-based syntax highlighting

nvim-lspconfig

Reference

official helper plugin for configuring Neovim's built-in LSP client