HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
terryma
vim-multiple-cursors
Vim Script2013–2021
terryma / vim-multiple-cursors

vim-multiple-cursors

True Sublime Text style multiple selections for Vim

26Distinct people
26Mentions
0Explicit recommenders
7.9KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

True Sublime Text style multiple selections for Vim

GitHub

Where it is used

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

What people are saying

No recommendation phrase was found in the indexed comments.

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 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 4:00:59 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 year26 dated mentions

Observed mentions: 2013-04-14 04:52:00 UTC to 2021-05-26 16:56:58 UTC.

02462013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments20132014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments20172018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2021

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
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC514
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC303
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC303
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC000
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC606
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC202
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC312
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC303
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC101

From the project README

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

Read the project’s introduction
❗ This plugin is deprecated, use vim-visual-multi instead ❗ vim-multiple-cursors Contents About Installation Quick Start Mapping Settings Interactions with other plugins Highlight FAQ Contributing Credit About There have been many attempts at bringing Sublime Text's awesome multiple selection feature into Vim, but none so far have been in my opinion a faithful port that is simplistic to use, yet powerful and intuitive enough for an existing Vim user. vim-multiple-cursors is yet another attempt at that. It's great for quick refactoring Vim command sequence: fp<C-n><C-n><C-n>cname Add a cursor to each line of your visual selection Vim command sequence: vip<C-n>i"<Right><Right><Right>",<Esc>vipgJ$r]Idays = [ Match characters from visual selection Vim command sequence: df[$r,0f,v<C-n>…<C-n>c<CR><Up><Del><Right><Right><Right><Del> Use the command to match regexp To see what keystrokes are used for the above examples, see the wiki page. Installation Install using Pathogen, Vundle, Neobundle, vim-plug, or your favorite Vim package manager. Requires vim 7.4 or newer for full functionality. vim-plug instructions Paste this block into the top of ~/.vimrc. call plug#begin() Plug 'terryma/vim-multiple-cursors' call plug#end() Start vim and execute :PlugInstall. Quick Start normal mode / visual mode start: <C-n> start multicursor and add a virtual cursor + selection on the match next: <C-n> add a new virtual cursor + selection on the next match skip: <C-x> skip the next match prev: <C-p> remove current virtual cursor + selection and go back on previous match select all: <A-n> start multicursor and directly select all matches You can now change the virtual cursors + selection with visual mode commands. For instance: c, s, I, A work without any issues. You could also go to normal mode by pressing v and use normal commands there. At any time, you can press <Esc> to exit back to regular Vim. NOTE: start with g<C-n> to match without boundaries (behaves like g* instead of *) visual mode when multiple lines are selected start: <C-n> add virtual cursors on each line You can now change the virtual cursors with normal mode commands. For instance: ciw. command The command MultipleCursorsFind accepts a range and a pattern (regexp), it creates a visual cursor at the end of each match. If no range is passed in, then it defaults to the entire buffer. Mapping If you don't like the plugin taking over your key bindings, you can turn it off and reassign them the way you want: let g:multi_cursor_use_default_mapping=0 " Default mapping let g:multi_cursor_start_word_key = '<C-n>' let g:multi_cursor_select_all_word_key = '<A-n>' let g:multi_cursor_start_key = 'g<C-n>' let g:multi_cursor_select_all_key = 'g<A-n>' let g:multi_cursor_next_key = '<C-n>' let g:multi_cursor_prev_key = '<C-p>' let g:multi_cursor_skip_key = '<C-x>' let g:multi_cursor_quit_key = '<Esc>' NOTE: Please make sure to always map something to g:multi_cursor_quit_key, otherwise you'll have a tough time quitting from multicursor mode. Settings Currently there are four additional global settings one can tweak: g:multi_cursor_support_imap (Default: 1) If set to 0, insert mappings won't be supported in Insert mode anymore. g:multi_cursor_exit_from_visual_mode (Default: 0) If set to 1, then pressing g:multi_cursor_quit_key in Visual mode will quit and delete all existing cursors, just skipping normal mode with multiple cursors. g:multi_cursor_exit_from_insert_mode (Default: 0) If set to 1, then pressing g:multi_cursor_quit_key in Insert mode will quit and delete all existing cursors, just skipping normal mode with multiple cursors. g:multi_cursor_normal_maps (Default: see below) {'@': 1, 'F': 1, 'T': 1, '[': 1, '\': 1, ']': 1, '!': 1, '"': 1, 'c': 1, 'd': 1, 'f': 1, 'g': 1, 'm': 1, 'q': 1, 'r': 1, 't': 1, 'y': 1, 'z': 1, '<': 1, '=': 1, '>': 1} Any key in this map (values are ignored) will cause multi-cursor Normal mode to pause for map completion just like normal vim. Otherwise keys mapped in normal mode will "fail to replay" when multiple cursors are active. For example: {'d':1} makes normal-mode command dw work in multi-cursor mode. The default list contents should work for anybody, unless they have remapped a key from an operator-pending command to a non-operator-pending command or vice versa. These keys must be manually listed because vim doesn't provide a way to automatically see which keys start mappings, and trying to run motion commands such as j as if they were operator-pending commands can break things. g:multi_cursor_visual_maps (Default: see below) {'T': 1, 'a': 1, 't': 1, 'F': 1, 'f': 1, 'i': 1} Same principle as g:multi_cursor_normal_maps Interactions with other plugins Multiple_cursors_before/Multiple_cursors_after (Default: nothing) Other plugins may be incompatible in insert mode. That is why we provide hooks to disable those plug-ins when vim-multiple-cursors is active: For example, if you are using Neocomplete, add this to your vimrc to prevent conflict: function! Multiple_cursors_before() if exists(':NeoCompleteLock')==2 exe 'NeoCompleteLock' endif endfunction function! Multiple_cursors_after() if exists(':NeoCompleteUnlock')==2 exe 'NeoCompleteUnlock' endif endfunction Plugins themselves can register User autocommands on MultipleCursorsPre and MultipleCursorsPost for automatic integration. Highlight The plugin uses the highlight group multiple_cursors_cursor and multiple_cursors_visual to highlight the virtual cursors and their visual selections respectively. You can customize them by putting something similar like the following in your vimrc: " Default highlighting (see help :highlight and help :highlight-link) highlight multiple_cursors_cursor term=reverse cterm=reverse gui=reverse highlight link multiple_cursors_visual Visual FAQ Q Pressing i after selecting words with C-n makes the plugin hang, why
Read the full README on GitHub

What Hacker News says

3 sources
For your use case there are a lot of ways to do that in Vim without using the multi cursor, here[0] is one thing I just recorded to show you a glimpse of what's possible with just a search and replace: I just find a pattern and replace it with a part of the same pattern. > Here is a good video example (https://youtu.be/iomWEDMBlcE) Again, you can do everything here without using multicursors, just record a macro for one line and repeat with a count and you're set. Now if you absolutely want the multicursor feature, there are more than one plugin[1][2] for that, but I never felt the urge to use multiple cursors in Vim. 0: https://youtu.be/YR7rRC-vwj4 1: https://github.com/terryma/vim-multiple-cursors 2: https://github.com/paradigm/vim-multicursor
In How Did Vim Become So Popular?
There's a couple of ways you could tackle editing that depending on what your json looks like. For example you could use the visual block mode (ctrl-v) and highlight to the end of the line using $ and then use A to edit the end of every line at the same time. That works with lines of different length. Or you could use a regex inside of a block selection. Or there's a multi-cursor plugin available for the same approach as you're currently using in VSCode: https://github.com/terryma/vim-multiple-cursors Vim Golf is an excellent resource for seeing how to efficiently edit things in Vim: https://www.vimgolf.com/
In How Did Vim Become So Popular?

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.