spacemacs/layers/+misc/multiple-cursors/README.org

111 lines
4.2 KiB
Org Mode
Raw Normal View History

2018-10-27 10:40:57 +00:00
#+TITLE: multiple-cursors layer
2019-05-02 21:49:30 +00:00
#+TAGS: layer|misc
2019-05-07 20:05:06 +00:00
* Table of Contents :TOC_5_gh:noexport:
2018-10-27 10:40:57 +00:00
- [[#description][Description]]
2018-11-08 20:21:30 +00:00
- [[#features][Features:]]
2018-10-27 10:40:57 +00:00
- [[#install][Install]]
- [[#configuration][Configuration]]
- [[#key-bindings][Key bindings]]
- [[#evil-mc][=evil-mc=]]
2019-05-24 18:30:10 +00:00
- [[#multiple-cursors][=multiple-cursors=]]
- [[#notes][Notes]]
- [[#multiple-cursors-1][=multiple-cursors=]]
2018-10-27 10:40:57 +00:00
* Description
2018-11-08 20:06:33 +00:00
** Features:
- support for multiple cursors.
2018-10-27 10:40:57 +00:00
* Install
To use this configuration layer, add it to your =~/.spacemacs=. You will need to
add =multiple-cursors= to the existing =dotspacemacs-configuration-layers= list in this
file.
* Configuration
2019-05-24 18:30:10 +00:00
Currently supported backends are:
- [[https://github.com/gabesoft/evil-mc][evil-mc]] (default)
- [[https://github.com/magnars/multiple-cursors.el][mc]]
To set your choice of backend, configure =multiple-cursors-backend= variable of
the layer.
2018-10-27 10:40:57 +00:00
#+BEGIN_SRC emacs-lisp
2018-11-08 20:21:30 +00:00
(setq-default dotspacemacs-configuration-layers '(
2019-05-24 18:30:10 +00:00
(multiple-cursors :variables multiple-cursors-backend 'mc))
2018-10-27 10:40:57 +00:00
#+END_SRC
* Key bindings
** =evil-mc=
The =evil-mc= package provides the following key bindings:
| Key binding | Description |
2018-10-27 10:40:57 +00:00
|-------------+------------------------------------|
| ~g r f~ | evil-mc-make-and-goto-first-cursor |
| ~g r h~ | evil-mc-make-cursor-here |
| ~g r j~ | evil-mc-make-cursor-move-next-line |
| ~g r k~ | evil-mc-make-cursor-move-prev-line |
| ~g r l~ | evil-mc-make-and-goto-last-cursor |
| ~g r m~ | evil-mc-make-all-cursors |
| ~g r n~ | evil-mc-skip-and-goto-next-match |
| ~g r N~ | evil-mc-skip-and-goto-next-cursor |
| ~g r p~ | evil-mc-skip-and-goto-prev-match |
| ~g r P~ | evil-mc-skip-and-goto-prev-cursor |
| ~g r r~ | evil-mc-resume-cursors |
| ~g r s~ | evil-mc-pause-cursors |
| ~g r q~ | evil-mc-undo-all-cursors |
| ~g r u~ | evil-mc-undo-last-added-cursor |
2018-10-27 10:40:57 +00:00
For easy navigation you also have the following:
| Key binding | Description |
2018-10-27 11:43:02 +00:00
|-------------+------------------------------------|
| ~M-n~ | evil-mc-make-and-goto-next-cursor |
| ~M-p~ | evil-mc-make-and-goto-prev-cursor |
| ~C-n~ | evil-mc-make-and-goto-next-match |
| ~C-p~ | evil-mc-make-and-goto-prev-match |
| ~C-t~ | evil-mc-skip-and-goto-next-match |
| ~C-M-j~ | evil-mc-make-cursor-move-next-line |
| ~C-M-k~ | evil-mc-make-cursor-move-prev-line |
2019-05-24 18:30:10 +00:00
** =multiple-cursors=
The =multiple-cursors= backend provides the following key bindings to
insert new cursors:
| Key binding | Description |
|-------------+---------------------------------|
| ~SPC s m a~ | mc/mark-all-dwim |
| ~SPC s m b~ | mc/mark-all-like-this |
| ~SPC s m m~ | mc/mark-more-like-this-extended |
| ~SPC s m r~ | mc/edit-lines |
These special bindings manipulate text under cursors:
| Key binding | Description |
|---------------+-------------------------------|
| ~SPC s m s l~ | mc/insert-letters |
| ~SPC s m s m~ | mc/mark-sgml-tag-pair |
| ~SPC s m s n~ | mc/insert-numbers |
| ~SPC s m s r~ | set-rectangular-region-anchor |
| ~SPC s m s s~ | mc/sort-regions |
| ~SPC s m s t~ | mc/reverse-regions |
* Notes
** =multiple-cursors=
Some commands executed during =multiple-cursors= enabled may lead Emacs to go frenzy.
Commands like window manipulation will be executed multiple times if =mc= is active.
Not all Emacs commands may be compatible with =mc=.
To run interactive ~M-x~ commands with =mc=, run the command first. This will result
with application of the command to the leading cursor. Then press =C-:= to apply the
command to consequtive cursors. If this is not the case or you want a command to be
executed only once, configure the =mc/cmds-to-run-once= variable of the layer like
in the following example.
#+BEGIN_SRC emacs-lisp
(setq-default dotspacemacs-configuration-layers '(
(multiple-cursors :variables
multiple-cursors-backend 'mc
mc/cmds-to-run-once '(upcase-region))))
#+END_SRC