vim · modal · cheatsheet · local

Essential Vim commands

Searchable reference of 102 core Vim commands across movement, editing, search, visual mode, splits, buffers, and exits. Click any command to copy.

Vim Cheatsheet
102 matches
Visible
102
all
Total
102
commands
Sections
7
groups
Status
ready
local
Search
syntax · commands
Movement
Move cursor left
Move cursor down
Move cursor up
Move cursor right
Jump to start of next word
Jump to next WORD (whitespace-delimited)
Jump to end of current/next word
Jump to start of previous word
Jump to previous WORD
Move to start of line
Move to first non-blank character on line
Move to end of line
Go to first line of file
Go to last line of file
Go to line {count}
Scroll half page down
Scroll half page up
Page down
Page up
Move to top of screen
Move to middle of screen
Move to bottom of screen
Jump to matching bracket/paren
Move to next occurrence of char on line
Move till before next char on line
Repeat last f/t search forward
Repeat last f/t search backward
Editing
Insert before cursor
Insert at start of line
Append after cursor
Append at end of line
Open new line below
Open new line above
Replace single character
Enter replace mode
Delete character under cursor
Delete character before cursor
Delete (cut) current line
Delete to end of line
Delete to start of next word
Delete to end of line
Yank (copy) current line
Yank word
Paste after cursor
Paste before cursor
Undo
Redo
Repeat last change
Indent line right
Indent line left
Join current and next line
Change inside braces
Yank inside parens
Delete around brackets (incl. brackets)
Search & replace
Search forward for pattern
Search backward for pattern
Repeat search in same direction
Repeat search in opposite direction
Search for word under cursor (forward)
Search for word under cursor (backward)
Replace all occurrences in file
Replace all with confirmation
Replace in visual selection
Clear current search highlighting
Visual mode
Start character-wise visual selection
Start line-wise visual selection
Start block (column) visual selection
Reselect last visual selection
Yank selection
Delete selection
Change selection
Indent selection right
Indent selection left
Windows & splits
Horizontal split
Vertical split
Switch window left/down/up/right
Cycle through windows
Close current window
Close all other windows
Equalize window sizes
Maximize window height
Maximize window width
Resize height up/down
Buffers & tabs
List all open buffers
Go to next buffer
Go to previous buffer
Switch to buffer by name/number
Delete (close) current buffer
Open new tab
Switch to next tab
Switch to previous tab
Close current tab
Files & exiting
Open or reload file
Save (write) current file
Save as new file
Save all modified buffers
Quit current window
Quit without saving
Save and quit
Save and quit (normal mode)
Quit without saving (normal mode)
Save if modified and quit
example usage
Movement
—
—
—
—
—
—
—
—
—
—
—
—
—
—
42G
—
—
—
—
—
—
—
—
fa
—
—
—
Editing
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
—
ci"
—
—
Search & replace
—
—
—
—
—
—
—
—
—
—
Visual mode
—
—
—
—
—
—
—
—
—
Windows & splits
—
—
—
—
—
—
—
—
—
—
Buffers & tabs
—
—
—
—
—
—
—
—
—
Files & exiting
—
—
—
—
—
—
—
—
—
—
Quick Start

How to find a Vim command fast

Type a keyword or partial command in the filter. Matches narrow both rows and visible sections — click any command to copy it.

  1. 01

    Search keyword

    e.g. "delete", ":wq", "dd".

    Inputs are treated as UTF-8 throughout the pipeline and validated client-side as you type — nothing dispatches until the value is well-formed.

    searchinpututf-8client-sidevalidated
    search · textdelete · set
    dd · D · dw
    loaded · parsedclient-side
  2. 02

    Scan rows

    Commands grouped by section: movement, editing, search, etc.

    Each toggle re-computes through a memoised hook, so flipping options never resets your input and the UI stays snappy on large inputs.

    scanoptionslivememoisedtoggles
    sections · memoised7 · live
    Movement
    options set · memoisedlive
  3. 03

    Read examples

    Right panel shows concrete usage for parameterized commands.

    Randomness — where used — comes from crypto.getRandomValues, never Math.random. Heavy work sits in useMemo.

    readcomputeinstantlocaldeterministic
    example · instant42G · computed
    42G
    computed · instantinstant
  4. 04

    Copy

    Click any command to copy it to clipboard.

    Copy writes through navigator.clipboard and downloads use a Blob — zero network traffic. Same input plus same options always yield the same bytes.

    copydownloadzero-networkreproducible
    ok · copiedready · copied
    Copied dd
    shipped · ready to shipsuccess
Pro tips

Pro tips for everyday utilities

Reach for crypto.getRandomValues

Cryptographically random for IDs, tokens, salts. Math.random is for animation and games, not security.

Sort IDs lexicographically

UUID v4 has no time ordering. Use ULID or UUID v7 if you need sorted IDs.

Mock data with seeds

Faker-style libraries can be seeded so tests are reproducible. Embed the seed in the fixture file.

Reference cards beat memory

Cheatsheets for Vim, Git, Docker, Linux signals are faster than man pages when you’re mid-flow.

Browser APIs vary

Touch events, gamepads, and clipboard differ across vendors. Feature-detect before use.

Persist in the right place

localStorage for user preferences, sessionStorage for transient state, IndexedDB for structured data.

Use Cases

When to consult the cheatsheet

Learn Vim, refresh muscle memory, teach.

Learning Vim

One-page overview of the essentials. Random values come from crypto.getRandomValues — cryptographically secure for tokens, salts, and session IDs. Math.random is deterministic enough for animations but predictable enough to be a security bug.

CSPRNG-backed

Pair programming

Quick reference while screen sharing. Pair with hashids, ULID, or UUID v7 when you need both random and sortable — useful for primary keys, public-facing IDs, and event log ordering without a sequence column.

reproducible

Muscle memory

Refresh seldom-used commands. Output is deterministic given the same seed, so fixtures and tests stay reproducible across CI runs and contributor machines. Embed the seed in the fixture file for full replay.

snappy

Cross-tool moves

Find the Vim equivalent of an IDE shortcut. Heavy work runs through useMemo so the UI stays snappy on large inputs. Same input + same options yields identical bytes — the kind of stability snapshot tests rely on.

feature-detected

Quick lookup

Faster than :help. Storage tools persist to the right backend: localStorage for user preferences, sessionStorage for transient state, IndexedDB for structured data. Pick the right shelf and quota worries disappear.

deterministic

Teaching

Pin as a class handout. Browser feature detection: clipboard, fullscreen, gamepad, and Web Bluetooth APIs gracefully fall back when unavailable. No surprise white screens on Safari or older Firefox.

production-ready
FAQ

Frequently asked questions

Vim-compatible commands — they all work in Neovim too.
Plugin commands vary — see the plugin's own docs.
Try vimtutor — built into every Vim install.
Focus is on the universal core that works in any terminal Vim.
Yes — the reference is bundled in JS. Nothing is sent to a server.
Suggest a tool

Something missing?

Tell us what you need. We ship the top requests every two weeks.

Sent straight to the maintainers · no account needed
47 in queue·8 shipped this month
Request queued. Thanks!