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/vimto 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
| Module | Focus | Lessons |
|---|---|---|
| 1. Introduction | What Neovim is, installation, vim philosophy | 4 |
| 2. Modal Editing | Modes, navigation, insert, visual | 4 |
| 3. Text Objects and Motions | Text objects, operators, combinations | 3 |
| 4. Editing Commands | Undo/redo, search/replace, macros, marks | 4 |
| 5. Buffers, Windows, and Tabs | Workspace management | 3 |
| 6. Configuration with Lua | init.lua, options, keymaps, Lua basics | 4 |
| 7. Plugin Management | lazy.nvim setup and patterns | 3 |
| 8. LSP and Completion | nvim-lspconfig, nvim-cmp, diagnostics | 3 |
| 9. Treesitter | Syntax, highlighting, code folding | 2 |
| 10. File Navigation | Telescope, Neo-tree, Harpoon | 3 |
| 11. Git Integration | Gitsigns, Neogit, diff workflows | 3 |
| 12. Terminal and Workflow | Terminal mode, tmux integration | 3 |
| 13. Language-Specific Setup | Lua, Python, JS, PHP/WordPress | 3 |
| 14. Troubleshooting | Errors, LSP debugging, performance | 3 |
| 15. Cheatsheet | Motions, commands, plugin shortcuts | 3 |
| 16. Popular Plugins | UI, editing, code quality, AI, data, productivity | 9 |
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
| Feature | Neovim | VS Code | Vim | nano |
|---|---|---|---|---|
| SSH usable | ✅ Native | ⚠️ SSH extension | ✅ | ✅ |
| Modal editing | ✅ | ⚠️ Extension | ✅ | ❌ |
| Lua scripting | ✅ | ⚠️ NodeJS | ❌ VimL | ❌ |
| Built-in LSP | ✅ | ✅ Native | ❌ | ❌ |
| Memory usage | ~30MB | ~300MB+ | ~15MB | ~5MB |
| Startup speed | Fast (~50ms) | Slow (~3s) | Very fast | Instant |
| Learning curve | Steep | Low | Steep | None |
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.