Here's my section for Easymotion in my .vimrc:

let g:EasyMotion_do_mapping = 0
let g:EasyMotion_smartcase = 1
let g:EasyMotion_startofline = 0

nnoremap fw <Plug>(easymotion-bd-w)
nnoremap fW <Plug>(easymotion-bd-W)
nnoremap fe <Plug>(easymotion-bd-e)
nnoremap fE <Plug>(easymotion-bd-E)
nnoremap fb <Plug>(easymotion-bd-b)
nnoremap fB <Plug>(easymotion-bd-B)
nnoremap ff{char} <Plug>(easymotion-s)
nnoremap ft{char} <Plug>(easymotion-bd-t)
nnoremap F <Plug>(easymotion-repeat)
nnoremap <C-f> <Plug>(easymotion-next)
nnoremap <C-F> <Plug>(easymotion-prev)
nnoremap fj <Plug>(easymotion-sol-j)
nnoremap fk <Plug>(easymotion-sol-k)

Expected behavior: like the default bindings but replacing <Leader><Leader> with f.

Reality: pressing ff (and the other bindings) doesn't seem to do anything.

I've tried this with nnoremap and map but neither works. How should I fix this mapping?

  • 3
    Mappings to <Plug> entries need to be recursive, since the <Plug> entries themselves are mappings as well. Also, you don't really add {char} explicitly to your mapping. But I think there's more than that to your question...
    – filbranden
    Commented Apr 26, 2020 at 15:00

1 Answer 1


I've solved the problem by using map instead of nnoremap and removing the {char}s. The following code now works:

map fw <Plug>(easymotion-w)
map fW <Plug>(easymotion-W)
map fe <Plug>(easymotion-bd-e)
map fE <Plug>(easymotion-bd-E)
map fb <Plug>(easymotion-b)
map fB <Plug>(easymotion-B)
map ff <Plug>(easymotion-s)
map ft <Plug>(easymotion-bd-t)
map F <Plug>(easymotion-repeat)
map <C-f> <Plug>(easymotion-next)
map <C-F> <Plug>(easymotion-prev)
map fj <Plug>(easymotion-sol-j)
map fk <Plug>(easymotion-sol-k)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.