• ↑↓ to navigate
  • ↵ to open
  • ⟶ to select
  • ⌘ ⌥ ↵ to open in a panel
  • ←→ to navigate
  • esc to dismiss
⌘ '
keyboard shortcuts

The Problem

Standard text editors map most keystrokes directly to characters on screen. Vim is a modal editor where keystrokes have different meanings depending on the current mode. This design allows efficient keyboard-driven editing without modifier keys, but requires learning mode switching.

Core Idea

Vim uses modal editing — different keystrokes do different things depending on the current mode. The main modes are Normal (for commands), Insert (for typing), and Visual (for selection).

How It Works

  • Normal mode: Default mode. Keystrokes are commands (move, delete, yank, etc.). Press ESC to return here from other modes.
  • Insert mode: Type characters literally. Press i from Normal to enter, ESC to exit.
  • Visual mode: Select text for operations. Enter with v (character-wise), V (line-wise), or <C-v> (block-wise).

Key mappings:

KeyAction
iEnter Insert mode before cursor
aEnter Insert mode after cursor
ESCReturn to Normal mode

Key Properties

  • Vim starts in Normal mode by default
  • Mode switching is explicit — no hold-to-edit like Ctrl in conventional editors
  • Visual mode has three variants: character, line, and block
  • : 进入 Ex 命令行 mode (also considered a mode)

Edge Cases & Gotchas

  • Accidental key presses in Normal mode can cause unintended edits (e.g., i in the middle of a word inserts before it, not split it — use s or a instead)
  • Caps Lock matters: i is insert, I is different command
  • :help mode shows current mode help

Visual Explanation

aliases___mode__normal_mode__insert_mode__visual_mode__command_mode_ A Aliases: [Mode, Norm Input B Aliases: [Mode, Norm Core Mechanism A->B triggers C Aliases: [Mode, Norm Output B->C produces

Semantic Network

semantic_aliases___mode__normal_mode__insert_mode__visual_mode__command_mode_ THIS Aliases: [Mode, Norm REL1 Related Concept THIS--REL1 related REL2 Builds Into THIS--REL2 builds into

Connections