An excerpt from the repository, fetched Nov 13, 2026.
Read the project’s introduction
multiple-cursors.el
Multiple cursors for Emacs. This is some pretty crazy functionality, so yes,
there are kinks. Don't be afraid though, I've been using it since 2011 with
great success and much merriment.
Maintenance warning
I use this package every day, and have been doing so for years. It just works.
At least, it works for all my use cases. And if it breaks somehow, I fix it.
However, it has become painfully clear to me that I don't have time to fix
problems I don't have. It's been years since I could keep pace with the issues
and pull requests. Whenever I try, I keep getting feedback that my fix isn't
good enough by some standard I don't particularly care about.
So, I have closed the issue tracker and the pull requests. I hope you can
happily use this package, just like I do. If it doesn't work for you, then I'm
sorry. Thankfully Emacs is infinitely malleable, you can probably fix it
yourself.
TLDR: I am still maintaining this package, but I am no longer crowdsourcing a list of issues.
Installation
I highly recommend installing multiple-cursors through package.el.
It's available on MELPA, MELPA Stable and
NonGNU ELPA (enabled by default
from Emacs 28 onwards):
M-x package-install multiple-cursors
The package depends on the cl-lib package, so if you do not use
package.el or have a recent Emacs, you would need to install that
too: see GNU ELPA.
Basic usage
Start out with:
(require 'multiple-cursors)
Then you have to set up your keybindings - multiple-cursors doesn't presume to
know how you'd like them laid out. Here are some examples:
When you have an active region that spans multiple lines, the following will
add a cursor to each line:
(global-set-key (kbd "C-S-c C-S-c") 'mc/edit-lines)
When you want to add multiple cursors not based on continuous lines, but based on
keywords in the buffer, use:
(global-set-key (kbd "C->") 'mc/mark-next-like-this)
(global-set-key (kbd "C-<") 'mc/mark-previous-like-this)
(global-set-key (kbd "C-c C-<") 'mc/mark-all-like-this)
First mark the word, then add more cursors.
To get out of multiple-cursors-mode, press <return> or C-g. The latter will
first disable multiple regions before disabling multiple cursors. If you want to
insert a newline in multiple-cursors-mode, use C-j.
Video
You can watch an intro to multiple-cursors at Emacs Rocks.
Command overview
Mark one more occurrence
Command
Description
mc/mark-next-like-this
Adds a cursor and region at the next part of the buffer forwards that matches the current region.
mc/mark-next-like-this-word
Adds a cursor and region at the next part of the buffer forwards that matches the current region, if no region is selected it selects the word at the point.
mc/mark-next-like-this-symbol
Adds a cursor and region at the next part of the buffer forwards that matches the current region, if no region is selected it selects the symbol at the point.
mc/mark-next-word-like-this
Like mc/mark-next-like-this but only for whole words.
mc/mark-next-symbol-like-this
Like mc/mark-next-like-this but only for whole symbols.
mc/mark-previous-like-this
Adds a cursor and region at the next part of the buffer backwards that matches the current region.
mc/mark-previous-like-this-word
Adds a cursor and region at the next part of the buffer backwards that matches the current region, if no region is selected it selects the word at the point.
mc/mark-previous-like-this-symbol
Adds a cursor and region at the next part of the buffer backwards that matches the current region, if no region is selected it selects the symbol at the point.
mc/mark-previous-word-like-this
Like mc/mark-previous-like-this but only for whole words.
mc/mark-previous-symbol-like-this
Like mc/mark-previous-like-this but only for whole symbols.
mc/mark-more-like-this-extended
Use arrow keys to quickly mark/skip next/previous occurrences.
mc/add-cursor-on-click
Bind to a mouse event to add cursors by clicking. See tips-section.
mc/mark-pop
Set a cursor at the current point and move to the next (different) position on the mark stack. This allows for fine grained control over the placement of cursors.
Juggle around with the current cursors
Command
Description
mc/unmark-next-like-this
Remove the cursor furthest down in the buffer.
mc/unmark-previous-like-this
Remove the cursor furthest up in the buffer.
mc/skip-to-next-like-this
Remove the cursor furthest down, marking the next occurrence down.
mc/skip-to-previous-like-this
Remove the cursor furthest up, marking the next occurrence up.
Mark many occurrences
Command
Description
mc/edit-lines
Adds one cursor to each line in the current region.
mc/edit-beginnings-of-lines
Adds a cursor at the start of each line in the current region.
mc/edit-ends-of-lines
Adds a cursor at the end of each line in the current region.
mc/mark-all-like-this
Marks all parts of the buffer that matches the current region.
mc/mark-all-words-like-this
Like mc/mark-all-like-this but only for whole words.
mc/mark-all-symbols-like-this
Like mc/mark-all-like-this but only for whole symbols.
mc/mark-all-in-region
Prompts for a string to match in the region, adding cursors to all of them.
mc/mark-all-like-this-in-defun
Marks all parts of the current defun that matches the current region.
mc/mark-all-words-like-this-in-defun
Like mc/mark-all-like-this-in-defun but only for whole words.
mc/mark-all-symbols-like-this-in-defun
Like mc/mark-all-like-this-in-defun but only for whole symbols.
mc/mark-all-dwim
Tries to be smart about marking everything you want. Can be pressed multiple times.
Special
Command
Description
set-rectangular-region-anchor
Think of this one as set-mark except you're marking a rectangular region.
mc/mark-sgml-tag-pair
Mark the current opening and closing tag.
mc/insert-numbers
Insert increasing numbers for each cursor, top to bottom.
mc/insert-letters
Insert increasing letters for each cursor, top to bottom.
mc/sort-regions
Sort the ma
Read the full README on GitHub