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​

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​

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.

In LazyVim​

LazyVim Context

LazyVim is a pre-configured distribution of Neovim. It uses the exact same architecture as described above (Lua, LSP, Treesitter), but all the moving parts are already wired together for you. It's built around lazy.nvim (hence the name) and serves as an excellent reference or daily driver if you don't want to build from scratch.

AspectVanilla NeovimLazyVim
Out-of-the-box experienceBare terminal text editorFull IDE experience
Plugin managementNeeds manual setup (lazy.nvim)Pre-configured lazy.nvim with curated plugins
LSP & syntaxNeeds manual setupIncluded and auto-configured
Learning curveHigh (must understand internals)Medium (must learn LazyVim specific conventions)

What's Next​