Neovim Motions
0.10Complete reference for Neovim movement and navigation commands
Official docs →Motions are the verbs of Neovim's movement language. Every motion moves the cursor from one position to another, and that alone makes them useful — but the real magic is that motions compose with operators. d (delete) isn't a command on its own. w (word) isn't an edit. But dw? That's "delete to the start of the next word." Learn the motions on this page and you'll be able to combine them with d, c, y, >, <, =, gU, gu, and any other operator. The combinations multiply — a handful of motions and operators gives you hundreds of commands for free.
This page is the deep dive. If you want the overview, check the main Neovim cheatsheet.
Character Motions
The most basic motions. Your fingers live on these keys.
You'll hear people say "never use the arrow keys." That's mostly about efficiency — hjkl keeps your hands on home row. But the real upgrade is that j and k accept counts: 5j moves down 5 lines. Arrow keys can't do that. Turn on relativenumber and you'll always know exactly what count to type.
Word Motions
Words are the most common unit of movement. Neovim has two definitions of a "word": a lowercase word (w, b, e) stops at punctuation, while a WORD (W, B, E) only stops at whitespace. Both are useful — lowercase for precision, uppercase for speed.
Consider the string obj.method(arg). With lowercase w, your cursor stops at obj, ., method, (, arg, ) — six stops. With uppercase W, it's just obj.method(arg) — one stop. Use W/B/E when you want to skip over dotted paths, URLs, file paths, or anything with punctuation you don't care about.
Line Motions
Moving within a line. These are some of the most-used motions in practice, especially 0, ^, and $.
Find Motions (In-Line Search)
These are surgical. They search within the current line for a specific character and jump straight to it. They're also repeatable with ; and ,, which makes them even more powerful.
f and t look similar but serve different purposes when combined with operators. df) deletes everything from the cursor through the ), including the parenthesis. dt) deletes everything up to but not including the ). This distinction is critical for precision editing — ct" changes text up to (but not including) the quote, leaving the quote in place. Think of t as "till" — it stops one character short.
Paragraph & Sentence Motions
These are your medium-range motions — bigger than words, smaller than the whole file. Paragraphs are separated by blank lines, which maps nicely to code blocks.
{ and } are extremely useful in code. Functions and blocks are typically separated by blank lines, so } hops you from function to function. Combine with operators: d} deletes from the cursor to the next blank line — perfect for deleting an entire code block. v} visually selects it first if you want to review before acting.
Screen Motions
These move the cursor to specific positions on the visible screen, or scroll the screen relative to the cursor. They don't move through the file's text — they move through what you can see.
File Motions
These jump to specific positions in the file as a whole.
Motions + Operators: The Composable Grammar
This is the core insight that makes Vim/Neovim click. Every command follows the pattern: operator + motion (or operator + text object). Here's how the math works.
The operators you know (d, c, y, >, <, =, gu, gU) work with every single motion on this page. You don't memorize dw, d$, d}, dG, df(, dt" as separate commands — you learn d once and combine it with any motion. That's the multiplier. If you know 7 operators and 20 motions, you have 140 commands. Learn one more motion, you get 7 more commands. This is why experienced Vim users barely think about keystrokes — they think in terms of "what do I want to do" and the grammar writes the command.