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.

KeybindingDescription
<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
Link to original

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.

KeybindingDescription
<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
Link to original

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.

KeybindingDescription
<leader><leader>jLine down
<leader><leader>kLine up
Link to original

Line motions target the beginning of lines, allowing for rapid vertical navigation.

Search motions

EasyMotion search motions

Jump to search matches forward or backward.

KeybindingDescription
<leader><leader>nNext search match forward
<leader><leader>NNext search match backward
Link to original

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.