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, 11:00:58 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

6 sources
The biggest thing that helped me to learn to use vim fluently by building up muscle memory (and making commands automatic) was playing Vim Adventures, a browser based adventure game that gradually teaches you vim commands: http://vim-adventures.com/ I haven't tried the full (paid) version yet, but the demo was enough to get me moving around text quickly. Now I finally understand why people use this crazy thing. :) Also, if you really want to fly through text, try out https://github.com/Lokaltog/vim-easymotion
In Two Simple Steps Helped Me Learn Vim
The EasyMotion plugin for vim has a feature similar to this. When I start searching it matches incrementally, highlighting matches on each screen which I can cycle through with tab. When I see a screen with the match I want, I press enter and then the first 1 or 2 characters of each match are replaced with something like a, b, or ;a. Pressing the appropriate key combination jumps straight to the desired word. However, if you're just editing text on the same screen you can skip the search. I have it set up so that I press ,w and then every word after my cursor has its first one or two characters replaced. I can jump to any word by pressing those. There's also a hybrid mode where pressing one key and then the first letter of the desired word highlights only those matching words on the entire screen, which I can then jump to. https://github.
Read the rest
In Emacs and Vim
or alternatively try the easymotion plugin[1] which you press <leader><leader>j (or whatever you map it to) and then it will highlight each potential line with a letter that you press to go to that line. j is one of the worst examples, it's nice if you are doing a dw so you don't have to count the words, you would just do d<leader><leader><motion> and it will highlight to the potential places. [1] https://github.com/Lokaltog/vim-easymotion
In Best of Vim Tips
RobSpectre·Mar 21, 2014Recommendation phrase
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: 1) Terminal font choice - I switched to Inconsolata last year for my road laptop. Can drop font size to 10 and save serious column space without murdering your eyes. 2) High contrast syntax highlighting with light and dark themes - While I love Solarized on my desktop, glare can make it tough to read. I often switch to Tomorrow (http://chriskempson.github.io/base16/#tomorrow) dark or light depending on the conditions. 3) Buffer navigation plugins - The biggest productivity sink of the small, horizontal laptop screen is the reduced real estate for code. You end up spending way more time navigating up and down a file than on a bigger screen. As I use vim, I use Eas
Read the rest
yMotion (https://github.com/Lokaltog/vim-easymotion) to make that navigation fast. Repeating the last motion in particular is super useful. Hope that helps.
In The Road Coder's Survival Kit

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.