Vim's faster, more modern sibling — modal editing on steroids, Lua config, and a plugin ecosystem that's basically witchcraft.
Neovim's real power comes from its Lua config. Here's a progression from minimal to a practical starter setup using lazy.nvim (the most popular plugin manager in 2026).
-- ~/.config/nvim/init.lua
vim.g.mapleader = " " -- Space as leader key
vim.opt.number = true -- Line numbers
vim.opt.relativenumber = true -- Relative numbers
vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true -- Spaces instead of tabs
vim.opt.termguicolors = true -- Better colors
vim.opt.mouse = "a" -- Mouse support
-- Simple keymaps
vim.keymap.set("n", "w", ":w", { desc = "Save file" })
vim.keymap.set("n", "q", ":q", { desc = "Quit" })
-- ~/.config/nvim/init.lua
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git",
"--branch=stable", lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup({
-- Colorscheme
{ "catppuccin/nvim", name = "catppuccin", priority = 1000 },
-- Fuzzy finder
{ "nvim-telescope/telescope.nvim", dependencies = { "nvim-lua/plenary.nvim" } },
-- LSP basics
{ "neovim/nvim-lspconfig" },
{ "hrsh7th/nvim-cmp" }, -- Autocompletion
-- Treesitter for syntax
{ "nvim-treesitter/nvim-treesitter", build = ":TSUpdate" },
})
-- Load colorscheme
vim.cmd.colorscheme("catppuccin")
-- Telescope keymap example
local builtin = require('telescope.builtin')
vim.keymap.set('n', 'ff', builtin.find_files, { desc = "Find files" })