vimtricks.wiki Concise Vim tricks, one at a time.

How do I jump to any visible word or character on screen instantly in Vim?

Answer

<Leader><Leader>w

Explanation

The vim-easymotion plugin replaces Vim's default motion commands with a visual overlay system that lets you jump to any visible position on screen in just two or three keystrokes. Instead of counting lines or words to build a motion like 15j or 7w, easymotion highlights every possible target with a letter label — press that letter and your cursor teleports there.

How it works

  1. Press <Leader><Leader> followed by a motion key (e.g., w, b, f, j)
  2. Every possible target for that motion gets a colored letter label overlaid on the screen
  3. Press the label letter to jump directly to that position

Core motions

<Leader><Leader>w     " jump to the beginning of any word forward
<Leader><Leader>b     " jump to the beginning of any word backward
<Leader><Leader>e     " jump to the end of any word forward
<Leader><Leader>j     " jump to any line below (beginning of line)
<Leader><Leader>k     " jump to any line above (beginning of line)
<Leader><Leader>f{c}  " jump to any occurrence of character {c} forward
<Leader><Leader>F{c}  " jump to any occurrence of character {c} backward
<Leader><Leader>s{c}  " bidirectional character search (searches both directions)

Example

Given the text with your cursor at the beginning:

The quick brown fox jumps over the lazy dog

Pressing <Leader><Leader>w overlays labels on every word start:

a   b     c     d   e     f    g   h    i
The quick brown fox jumps over the lazy dog

Press d and your cursor jumps directly to fox — no counting required.

Two-character search

For the most precise jumping, use the two-character search variant. Press <Leader><Leader>s followed by two characters to narrow targets dramatically:

<Plug>(easymotion-s2)    " search by two characters bidirectionally
<Plug>(easymotion-sn)    " search by n characters (integrates with / search)

Map the two-character search for rapid access:

nmap s <Plug>(easymotion-s2)

Now pressing s followed by fo highlights only the positions where fo appears on screen, and you press one label key to jump there.

Recommended configuration

" Disable default mappings
let g:EasyMotion_do_mapping = 0

" Bidirectional two-character search
nmap s <Plug>(easymotion-s2)

" Turn on case-insensitive matching
let g:EasyMotion_smartcase = 1

" JK motions: line motions
map <Leader>j <Plug>(easymotion-j)
map <Leader>k <Plug>(easymotion-k)

Overwin motions

Easymotion can jump across all visible windows and splits, not just the current buffer:

nmap <Leader>f <Plug>(easymotion-overwin-f2)

This highlights targets in every visible window simultaneously, letting you jump to any split without first switching to it with <C-w>.

Tips

  • Use <Plug>(easymotion-sn) to combine easymotion with Vim's / search — type your full search pattern, press <CR>, and easymotion labels every match for instant jumping
  • For Neovim users, leap.nvim and hop.nvim provide similar functionality with better performance and a more modern API
  • Easymotion works with operators: d<Leader><Leader>w + label deletes from cursor to the labeled word
  • Set let g:EasyMotion_keys = 'asdfjkl;ghqwertyuiopzxcvbnm' to prioritize home-row keys for labels, reducing finger travel
  • The plugin supports repeat with . when combined with vim-repeat

Next

How do I edit multiple lines at once using multiple cursors in Vim?