Skip to main content

What is Neovim

Neovim is a refactored, extensible, and actively maintained fork of Vim designed to modernize the editor's internals while preserving full Vimscript compatibility and adding a powerful Lua API.

Core Idea

Neovim keeps everything great about Vim — modal editing, speed, SSH-native operation — and adds first-class Lua scripting, a built-in LSP client, and Treesitter integration. The result is a full modern IDE in your terminal.

Why Neovim Was Created

Vim was created in 1991 by Bram Moolenaar. By 2014, the codebase had grown difficult to maintain. Neovim was forked with explicit goals:

GoalWhat it means in practice
Refactor the codebaseCleaner code, easier contributions
First-class async supportNon-blocking plugins, no "frozen" editor
Lua as the scripting languageFaster, better-documented plugins
Built-in LSP clientIDE-grade code intelligence, natively
EmbeddableUse Neovim as a library in other apps

Neovim vs Vim vs VS Code

flowchart LR
VIM[Vim 1991\nVimscript only\nSynchronous] --> NVIM[Neovim 2014+\nLua + Vimscript\nAsync + LSP + Treesitter]
VSCODE[VS Code\nElectron-based\nHeavyweight IDE] --- NVIM
NVIM -->|SSH-native| SERVER[Remote Server]
VSCODE -->|Needs extension| SERVER
FeatureNeovimVimVS Code
Config languageLua + VimscriptVimscriptJSON + JS/TS
Built-in LSP
Built-in Treesitter
Plugin ecosystemModern (Lua)Legacy (Vimscript)Massive
SSH native⚠️ Extension
Memory (~MB)~30~15~300+
Startup (ms)~50~20~3000
Learning curveSteepSteepLow

The Neovim Architecture

flowchart TD
subgraph CORE [Neovim Core]
direction LR
MODAL[Modal Editor Engine]
API[Msgpack RPC API]
LUA_RT[Lua Runtime - LuaJIT]
LSP_CLIENT[Built-in LSP Client]
TREE_CLIENT[Built-in Treesitter]
end
CORE --> TERM[Terminal / SSH Client]
CORE --> GUI[GUI Frontends: Neovide, etc.]
CORE --> PLUGINS[Lua Plugin Ecosystem]

What "Modal" Means

Neovim (like Vim) is a modal editor. Its behavior changes depending on its mode.

Most editors (VS Code, nano) are always in "insert mode" — pressing any key types text. In Neovim:

  • Normal mode — keys perform commands (navigate, copy, delete, search)
  • Insert mode — keys type text
  • Visual mode — keys select text
  • Command mode — you type : commands
The Most Common Beginner Mistake

Opening Neovim and immediately typing — your text ends up in the wrong place or triggers commands. Always be aware of which mode you are in. The mode is shown in the bottom-left of the screen.

Why Learn Neovim in 2025+

  1. Works anywhere SSH reaches — edit files on remote servers with full IDE features
  2. Faster than any GUI editor for keyboard-centric workflows
  3. Infinitely configurable via Lua — your editor becomes exactly what you need
  4. Community-driven — new plugins and features release constantly
  5. The keyboard skills transfer — Vim motions work in VS Code, JetBrains, Obsidian, etc.
  6. Resources available everywhere — edit configs on any Linux server without installing anything (system vim is always present as a fallback)

The Neovim Ecosystem Today

CategoryPopular choices
Plugin managerlazy.nvim, packer.nvim
LSPnvim-lspconfig, mason.nvim
Completionnvim-cmp, blink.cmp
Syntaxnvim-treesitter
File searchtelescope.nvim
File treeneo-tree.nvim, nvim-tree
Gitgitsigns.nvim, neogit
Status linelualine.nvim
Starter configsLazyVim, AstroNvim, NvChad

Starter Distros vs DIY Config

ApproachProsCons
LazyVim / NvChadWorks instantly, batteries includedHarder to understand, can be opaque
DIY from scratchFull understanding of every lineTakes time to build
Recommendation for This Track

This track teaches DIY configuration from scratch. You will understand every option. After finishing, you can also appreciate and modify any starter distro.

What's Next