multiple-cursors

https://github.com/magnars/multiple-cursors.el.git

git clone 'git://github.com/magnars/multiple-cursors.el.git'
727

multiple-cursors.el Build Status

Multiple cursors for Emacs. This is some pretty crazy functionality, so yes, there are kinks. Don't be afraid tho, I've been using it since 2011 with great success and much merriment.

Installation

I highly recommend installing multiple-cursors through elpa.

It's available on marmalade and melpa:

M-x package-install multiple-cursors

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

Juggle around with the current cursors

Mark many occurrences

Special

Tips and tricks

BTW, I highly recommend adding mc/mark-next-like-this to a key binding that's right next to the key for er/expand-region.

Binding mouse events

To override a mouse event, you will likely have to also unbind the down-mouse part of the event. Like this:

(global-unset-key (kbd "M-<down-mouse-1>"))
(global-set-key (kbd "M-<mouse-1>") 'mc/add-cursor-on-click)

Or you can do like me and find an unused, but less convenient, binding:

(global-set-key (kbd "C-S-<mouse-1>") 'mc/add-cursor-on-click)

Unknown commands

Multiple-cursors uses two lists of commands to know what to do: the run-once list and the run-for-all list. It comes with a set of defaults, but it would be beyond silly to try and include all the known Emacs commands.

So that's why multiple-cursors occasionally asks what to do about a command. It will then remember your choice by saving it in ~/.emacs.d/.mc-lists.el. You can change the location with:

(setq mc/list-file "/my/preferred/file")

NB! Make sure to do so before requiring multiple-cursors.

Known limitations

Contribute

Yes, please do. There's a suite of tests, so remember to add tests for your specific feature, or I might break it later.

You'll find the repo at:

https://github.com/magnars/multiple-cursors.el

To fetch the test dependencies, install cask if you haven't already, then:

$ cd /path/to/multiple-cursors
$ cask

Run the tests with:

$ ./run-tests.sh

Contributors

Thanks!

License

Copyright (C) 2012 Magnar Sveen

Author: Magnar Sveen mailto:magnars@gmail.com Keywords: editing cursors

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.