Skip to main content

Neovim Documentation

Neovim is a hyperextensible, Lua-powered text editor built on Vim's foundation. It is the standard modern choice for terminal-based development, server administration, and DevOps configuration editing.

Who This Track Is For
  • Developers who want a fast, keyboard-driven editor that works everywhere SSH reaches
  • Server operators editing configs, scripts, and code directly on remote machines
  • Engineers wanting a fully configured IDE inside a terminal — without a GUI
  • Anyone moving from basic nano/vim to a professional Neovim setup
What You Will Build
  • A fluent understanding of modal editing and Vim motions
  • A complete Lua-based Neovim configuration from scratch
  • A full IDE setup: LSP, autocompletion, file navigation, Git, and syntax highlighting
  • Repeatable, scripted configuration deployable across any server
How To Use This Track
  • Modules 1–4 focus on core editing — master these before touching plugins
  • Modules 5–6 cover configuration — build your own init.lua
  • Modules 7–11 add IDE features via plugins
  • Modules 12–14 target language-specific and workflow patterns
  • Module 15 is the cheatsheet for daily reference
  • Module 16 is the popular plugins catalog — browse when looking for new tools

Learning Path

ModuleFocusLessons
1. IntroductionWhat Neovim is, installation, vim philosophy4
2. Modal EditingModes, navigation, insert, visual4
3. Text Objects and MotionsText objects, operators, combinations3
4. Editing CommandsUndo/redo, search/replace, macros, marks4
5. Buffers, Windows, and TabsWorkspace management3
6. Configuration with Luainit.lua, options, keymaps, Lua basics4
7. Plugin Managementlazy.nvim setup and patterns3
8. LSP and Completionnvim-lspconfig, nvim-cmp, diagnostics3
9. TreesitterSyntax, highlighting, code folding2
10. File NavigationTelescope, Neo-tree, Harpoon3
11. Git IntegrationGitsigns, Neogit, diff workflows3
12. Terminal and WorkflowTerminal mode, tmux integration3
13. Language-Specific SetupLua, Python, JS, PHP/WordPress3
14. TroubleshootingErrors, LSP debugging, performance3
15. CheatsheetMotions, commands, plugin shortcuts3
16. Popular PluginsUI, editing, code quality, AI, data, productivity9

Architecture at a Glance

flowchart TD
CORE[Neovim Core]
CORE --> MODAL[Modal Editing]
CORE --> LUA[Lua Config Engine]
LUA --> PLUGINS[Plugin Ecosystem]
PLUGINS --> LSP[LSP: nvim-lspconfig]
PLUGINS --> CMP[Completion: nvim-cmp]
PLUGINS --> TS[Treesitter: Syntax]
PLUGINS --> TEL[Telescope: Search]
PLUGINS --> GIT[Git: Gitsigns]
PLUGINS --> TREE[Neo-tree: File Browser]
PLUGINS --> LAZY[lazy.nvim: Plugin Manager]

How Neovim Relates to Vim

flowchart LR
VIM[Vim: 1991] --> NEOVIM[Neovim: 2014+]
NEOVIM --> LUA2[First-class Lua API]
NEOVIM --> LSP2[Built-in LSP client]
NEOVIM --> TS2[Built-in Treesitter]
NEOVIM --> ASYNC[Async job control]
NEOVIM --> COM[Active community]

Quick Start

install-and-launch.sh
# Install on Debian/Ubuntu
sudo apt install -y neovim

# Or install latest stable via AppImage
curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz
tar -C /opt -xzf nvim-linux-x86_64.tar.gz
ln -s /opt/nvim-linux-x86_64/bin/nvim /usr/local/bin/nvim

# Check version (need 0.9+ for this track)
nvim --version

# Open a file
nvim myfile.txt
warning

Press i to enter Insert mode and type text. Press Esc to return to Normal mode. Press :wq to save and quit. This is the most critical habit from day one.

The Modal Editing Mental Model

stateDiagram-v2
direction LR
NORMAL: Normal Mode
INSERT: Insert Mode
VISUAL: Visual Mode
COMMAND: Command Mode

[*] --> NORMAL: nvim opens
NORMAL --> INSERT: i / a / o
INSERT --> NORMAL: Esc
NORMAL --> VISUAL: v / V / Ctrl+v
VISUAL --> NORMAL: Esc
NORMAL --> COMMAND: :
COMMAND --> NORMAL: Enter or Esc

Neovim vs Other Editors

FeatureNeovimVS CodeVimnano
SSH usable✅ Native⚠️ SSH extension
Modal editing⚠️ Extension
Lua scripting⚠️ NodeJS❌ VimL
Built-in LSP✅ Native
Memory usage~30MB~300MB+~15MB~5MB
Startup speedFast (~50ms)Slow (~3s)Very fastInstant
Learning curveSteepLowSteepNone

Prerequisites

  • Comfortable with Linux terminal basics
  • SSH access to practice on (or local Linux/macOS)
  • Optional: basic Vim exposure (helpful but not required)

Success Criteria

By the end of this track, you can:

  • Edit files efficiently using modal editing (no arrow keys, no mouse)
  • Build and maintain a full Lua-based Neovim configuration
  • Use LSP for autocompletion, diagnostics, and go-to-definition
  • Navigate large codebases with Telescope and Harpoon
  • Manage Git operations without leaving Neovim

Next Step

Start with What is Neovim.