EasyMotion (inspired by vim-easymotion and hop.nvim) provides a way to jump to any visible position in the editor with minimal keystrokes. Instead of repeating w or f to reach a target, you trigger a motion, type a search character (if required), and then type a one or two-character label that appears over the target.
Find motions
EasyMotion find motions
Jump to specific characters forward, backward, or in both directions.
Link to original
Keybinding Description <leader><leader>f{char}Find {char}forward<leader><leader>F{char}Find {char}backward<leader><leader>s{char}Find {char}in both directions<leader><leader>t{char}Till before {char}forward<leader><leader>T{char}Till after {char}backward
Find motions allow jumping to specific characters. When triggered, you type a single character to search for, and labels appear over every occurrence of that character within the visible viewport.
Word motions
EasyMotion word motions
Jump to word starts or ends across the visible editor.
Link to original
Keybinding Description <leader><leader>wWord start forward <leader><leader>bWord start backward <leader><leader>eEnd of word forward <leader><leader>geEnd of word backward <leader><leader>WWORD start forward <leader><leader>BWORD start backward <leader><leader>EEnd of WORD forward <leader><leader>gEEnd of WORD backward
Word motions target the beginning of words. Like standard Vim, these distinguish between “words” (sequences of letters, numbers, and underscores) and “WORDS” (sequences of non-blank characters).
Line motions
EasyMotion line motions
Jump directly to lines above or below the cursor.
Link to original
Keybinding Description <leader><leader>jLine down <leader><leader>kLine up
Line motions target the beginning of lines, allowing for rapid vertical navigation.
Search motions
EasyMotion search motions
Jump to search matches forward or backward.
Link to original
Keybinding Description <leader><leader>nNext search match forward <leader><leader>NNext search match backward
Search motions use the last search pattern (from / or ?) to generate jump targets. This is useful for jumping between complex patterns or specific terms already in the search register.
Visual mode
EasyMotion integrates natively with visual mode. Pressing v or V followed by an EasyMotion trigger allows you to extend the selection to the jump target.
v+ EasyMotion: Extends the character-wise selection head to the target.V+ EasyMotion: Extends the line-wise selection to include the target line.
Operator-pending mode
EasyMotion supports operator-pending mode for d, c, and y. This allows for powerful combinations like d + <leader><leader>w + {label} to delete from the cursor to a specific word.
Info
Operator-pending support requires the bundled fork mode (Obsidian’s built-in Vim mode disabled). It uses the fork’s async motion support to resolve the jump target before applying the operator.
Note
Dot-repeat (
.) does not currently replay operator-pending EasyMotion operations.
Live Preview awareness
The EasyMotion engine is specifically tuned for Obsidian’s Live Preview mode:
- Syntax exclusion: Hidden Markdown syntax (like URLs in
[text](url)or formatting marks) is excluded from target scanning to prevent jumping to invisible characters. - Label collision detection: If multiple targets are close together, labels are automatically offset vertically to prevent overlap.
- Vertical stacking: Labels for nearby targets are stacked to ensure every jump target remains reachable and legible.
Configuration
You can customize EasyMotion behavior in Settings → Vim Motions → Jump navigation:
- Label characters: Define the characters used for jump labels (default:
asdghklqwertyuiopzxcvbnmfj). - Dimming: Toggle whether the editor text dims when EasyMotion is active.
- Font size: Adjust the size of the jump labels.
To remap EasyMotion triggers in your .obsidian.vimrc, use the internal command names. See settings > Jump navigation for details.
See known-limitations > EasyMotion for detailed technical limitations.