Vim is a modal text editor descended from Vi, with Neovim serving as a modern, extensible fork that adds built-in LSP support, Lua scripting, and a robust plugin ecosystem. Unlike traditional editors, Vim operates through distinct modes—Normal, Insert, Visual, and Command-line—enabling rapid text manipulation through composable commands. The core philosophy is editing at the speed of thought: operators combine with motions and text objects to form a grammar (ciw = change inner word), making complex edits concise and repeatable. Neovim 0.12 (released March 2026) added a built-in plugin manager (vim.pack), native insert-mode auto-completion, expanded LSP defaults, and the :lsp command—reducing the need for third-party plugins significantly.
What This Cheat Sheet Covers
This topic spans 31 focused tables and 321 indexed concepts, 150 flashcards. Below is a complete table-by-table outline of this topic, spanning foundational concepts through advanced details.
A jump-to index of every table row in this cheat sheet.
An interactive map of every table and concept in this topic.
Table 1: Modes and Mode Switching
Everything in Vim begins with understanding modes—the single idea that trips up newcomers and unlocks the editor once it clicks. Normal mode is home base for commands, Insert mode is where you actually type, Visual mode selects, and Command-line mode runs Ex commands; learning to move between them fluidly is the first real skill.
| Mode | Example | Description | |
|---|---|---|---|
<Esc> or <C-[> | • Default mode for navigation and commands • no text is inserted directly. Press <Esc> from any mode to return here. | ||
i | • Enters insert before cursor • a appends after cursor• o opens a new line below. Type text normally in this mode. | ||
v | • Character-wise selection • V selects entire lines• <C-v> enters Visual Block mode for rectangular column selection. | ||
: | • Execute Ex commands like :w (write), :q (quit), :s (substitute)• prefix with : from Normal mode. | ||
R | • Overwrite characters under cursor • press <Esc> to exit. Single-character replace uses r{char} in Normal mode. | ||
<C-o> in Insert | • Execute one Normal mode command without leaving Insert mode • cursor returns to Insert automatically after. | ||
:terminal then i | • Neovim only—all input sent to embedded terminal process • <C-\><C-n> exits to Normal mode. |