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
- Press
<Leader><Leader>followed by a motion key (e.g.,w,b,f,j) - Every possible target for that motion gets a colored letter label overlaid on the screen
- 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