HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
easymotion
vim-easymotion
Vim Script2011–2025
easymotion / vim-easymotion

vim-easymotion

Vim motions on speed!

35Distinct people
38Mentions
2Explicit recommenders
7.7KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Vim motions on speed!

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

Truly - moving off my triple headed desktop to my X1 carbon is always jarring, especially with merging. A few things that have helped me working with constrained real estate:…

RobSpectre used a recommendation phrase. 2 indexed comments match. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 7:56:55 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year38 dated mentions

Observed mentions: 2011-10-17 18:37:10 UTC to 2025-03-18 04:49:57 UTC.

02462011-01-01 00:00:00 UTC to 2012-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20112012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 6 mentions; 1 submissions, 5 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20112011-01-01 00:00:00 UTC2012-01-01 00:00:00 UTC101
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC404
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC615
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC606
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC101
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC505
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC303
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC101
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC303
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC000
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC404
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC303
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC000
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC000
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC101

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
Vim motion on speed! About the authors Authors Kim Silkebækken https://github.com/Lokaltog haya14busa https://github.com/haya14busa The EasyMotion project, revived! Starting from version 2.0 haya14busa will be taking over the project from Lokaltog. He's improved the default motions, implemented many useful new features, and fixed some bugs. EasyMotion is now completely: Well-behaved: It's consistent with the default motions of Vim and works well in all modes. And it now supports repeating with the dot operator. Configurable: You can easily configure its behavior and map it to any key Sophisticated: Provide flawless, smooth and fast motions with minimal keystrokes Even though some default behaviors were modified and many new features were added, I carefully considered backward compatibility. So those of you updating from older versions can do so without worry and start benefiting immediately from all the new features! Introduction EasyMotion provides a much simpler way to use some motions in vim. It takes the <number> out of <number>w or <number>f{char} by highlighting all possible choices and allowing you to press one key to jump directly to the target. When one of the available motions is triggered, all visible text preceding or following the cursor is faded, and motion targets are highlighted. EasyMotion is triggered by the provided mappings. This readme only covers the basics; please refer to :help easymotion.txt to see all the available mappings. Important notes Default bindings The default leader has been changed to <Leader><Leader> to avoid conflicts with other plugins you may have installed. This can easily be changed back to pre-1.3 behavior by rebinding the leader in your vimrc: map <Leader> <Plug>(easymotion-prefix) All motions will then be triggered with <Leader> by default, e.g. <Leader>s, <Leader>gE. For users of the forked version SelectLines and SelectPhrase are not actually motions, so I've moved them into separate plugins. https://github.com/haya14busa/vim-easyoperator-line https://github.com/haya14busa/vim-easyoperator-phrase Usage example for the base features <cursor>Lorem ipsum dolor sit amet. Type <Leader><Leader>w(<Plug>(easymotion-w)) to trigger the word motion w. When the motion is triggered, the text is updated (no braces are actually added, the text is highlighted in red by default): <cursor>Lorem {a}psum {b}olor {c}it {d}met. Press c to jump to the beginning of the word "sit": Lorem ipsum dolor <cursor>sit amet. Similarly, if you're looking for an "o", you can use the f motion. Type <Leader><Leader>fo, and all "o" characters are highlighted: <cursor>L{a}rem ipsum d{b}l{c}r sit amet. Press b to jump to the second "o": Lorem ipsum d<cursor>olor sit amet. Jeffrey Way of Nettuts+ has also written a tutorial about EasyMotion. New features in version 3.0 Overwin motions EasyMotion now supports moving cursor across/over window. Since it doesn't make sense that moving cursor to other window while Visual or Operator-pending mode, overwin motions only provides mappings for Normal mode. Please use nmap to use overwin motions. Overwin motions only supports bi-directional motions. Example configuration " <Leader>f{char} to move to {char} map <Leader>f <Plug>(easymotion-bd-f) nmap <Leader>f <Plug>(easymotion-overwin-f) " s{char}{char} to move to {char}{char} nmap s <Plug>(easymotion-overwin-f2) " Move to line map <Leader>L <Plug>(easymotion-bd-jk) nmap <Leader>L <Plug>(easymotion-overwin-line) " Move to word map <Leader>w <Plug>(easymotion-bd-w) nmap <Leader>w <Plug>(easymotion-overwin-w) Integration with incsearch.vim haya14busa/incsearch.vim haya14busa/incsearch-easymotion.vim " You can use other keymappings like <C-l> instead of <CR> if you want to " use these mappings as default search and sometimes want to move cursor with " EasyMotion. function! s:incsearch_config(...) abort return incsearch#util#deepextend(deepcopy({ \ 'modules': [incsearch#config#easymotion#module({'overwin': 1})], \ 'keymap': { \ "\<CR>": '<Over>(easymotion)' \ }, \ 'is_expr': 0 \ }), get(a:, 1, {})) endfunction noremap <silent><expr> / incsearch#go(<SID>incsearch_config()) noremap <silent><expr> ? incsearch#go(<SID>incsearch_config({'command': '?'})) noremap <silent><expr> g/ incsearch#go(<SID>incsearch_config({'is_stay': 1})) Bonus fuzzy-search with EasyMotion haya14busa/incsearch.vim haya14busa/incsearch-fuzzy.vim haya14busa/incsearch-easymotion.vim function! s:config_easyfuzzymotion(...) abort return extend(copy({ \ 'converters': [incsearch#config#fuzzyword#converter()], \ 'modules': [incsearch#config#easymotion#module({'overwin': 1})], \ 'keymap': {"\<CR>": '<Over>(easymotion)'}, \ 'is_expr': 0, \ 'is_stay': 1 \ }), get(a:, 1, {})) endfunction noremap <silent><expr> <Space>/ incsearch#go(<SID>config_easyfuzzymotion()) New features in version 2.0 Two key highlighting When EasyMotion runs out of single characters to highlight movement targets, it immediately shows you the keys you have to press. In previous versions you could not see the next character you would need to press until you entered the first one. This made movement over long distances less fluid. Now you can see at a glance exactly which characters to select to get to your destination. Bidirectional motions All motions now come in bidirectional variants (e.g. <Plug>(easymotion-s), <Plug>(easymotion-bd-w) and so forth). By default, you can already jump forward or backward with <Leader>s. A useful trick is to map nmap s <Plug>(easymotion-s) to use s instead and save one keystroke! 2-character search motion You can now also perform a 2-character search, similar to vim-seek/vim-sneak with <Plug>(easymotion-s2). For example, you can highlight all words that start with fu. " Gif config nmap s <Plug>(easymotion-s2) nmap t <Plug>(easymotion-t2) n-character search motion You can also search for n characters, which can be used to replace the default sea
Read the full README on GitHub

What Hacker News says

4 sources
Pretty season's Vim user here. This editor looks awesome, and I would love to give it a whirl, but I feel like I can't switch without these plugins. I'm sure they exist, if someone could point me to one that would be excellent. + Syntastic [https://github.com/scrooloose/syntastic/] eclipse-like real-time linter. Gives me compile errors and warnings. + Tag bar [http://majutsushi.github.com/tagbar/] navigate tags in the code + Not as essential, but EasyMotion is pretty awesome [https://github.com/Lokaltog/vim-easymotion]
In Sublime Text 2.0 Released
I also never used that feature and I've been a heavy vim user for maybe 8 years. Thanks to the relative line numbers patch being merged in finally (:set rnu and now you show line numbers relative to your cursor) you get easy moving up and down. I prefer the easymotion plugin (https://github.com/Lokaltog/vim-easymotion/) that annotates your file with little markers (like the vimperator/pentadactyl/vimium browser plugins use to click links with the keyboard) that allow you to jump around extraordinarily quickly. It was, and still is, a learning curve since it adds to so many basic vim commands that are muscle memory for me by now but it's worth it.
In Vim clutch
I'm currently using Xcode for everything iOS / OSX (most of my work actually) and am going back and forth between Vim and Sublime for everything else. I've been using Vim for years and Sublime really shines in some regards. However, it lacks some plugins that I really like about Vim (like EasyMotion https://github.com/Lokaltog/vim-easymotion) which is why I'm deciding on a project basis which editor to use. (Also, I really like to be able to browse for files without having to reach for the mouse). Btw. In that regard, I find it fantastic that the Vim bindings start to become some sort of unofficial text editor control standard; more and more editors are adding Vim bindings (like http://www.jetbrains.com/objc/ it has a Vim Plugin too).
In Poll: Which text editor do you use daily?

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.