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.
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:
| Goal | What it means in practice |
|---|---|
| Refactor the codebase | Cleaner code, easier contributions |
| First-class async support | Non-blocking plugins, no "frozen" editor |
| Lua as the scripting language | Faster, better-documented plugins |
| Built-in LSP client | IDE-grade code intelligence, natively |
| Embeddable | Use 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
| Feature | Neovim | Vim | VS Code |
|---|---|---|---|
| Config language | Lua + Vimscript | Vimscript | JSON + JS/TS |
| Built-in LSP | ✅ | ❌ | ✅ |
| Built-in Treesitter | ✅ | ❌ | ✅ |
| Plugin ecosystem | Modern (Lua) | Legacy (Vimscript) | Massive |
| SSH native | ✅ | ✅ | ⚠️ Extension |
| Memory (~MB) | ~30 | ~15 | ~300+ |
| Startup (ms) | ~50 | ~20 | ~3000 |
| Learning curve | Steep | Steep | Low |
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
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+
- Works anywhere SSH reaches — edit files on remote servers with full IDE features
- Faster than any GUI editor for keyboard-centric workflows
- Infinitely configurable via Lua — your editor becomes exactly what you need
- Community-driven — new plugins and features release constantly
- The keyboard skills transfer — Vim motions work in VS Code, JetBrains, Obsidian, etc.
- Resources available everywhere — edit configs on any Linux server without installing anything (system vim is always present as a fallback)
The Neovim Ecosystem Today
| Category | Popular choices |
|---|---|
| Plugin manager | lazy.nvim, packer.nvim |
| LSP | nvim-lspconfig, mason.nvim |
| Completion | nvim-cmp, blink.cmp |
| Syntax | nvim-treesitter |
| File search | telescope.nvim |
| File tree | neo-tree.nvim, nvim-tree |
| Git | gitsigns.nvim, neogit |
| Status line | lualine.nvim |
| Starter configs | LazyVim, AstroNvim, NvChad |
Starter Distros vs DIY Config
| Approach | Pros | Cons |
|---|---|---|
| LazyVim / NvChad | Works instantly, batteries included | Harder to understand, can be opaque |
| DIY from scratch | Full understanding of every line | Takes time to build |
This track teaches DIY configuration from scratch. You will understand every option. After finishing, you can also appreciate and modify any starter distro.