This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
spacemacs/layers/+misc/multiple-cursors
Maximilian Wolff be908875cb
Change newly added which-key bindings to use keymap api
The newly added bindings had side effects for
magit. This was caused by which-keys replacement
working on bindings which are identical between
various modes.

To fix this I have changed the api to use the newly
added keymap based replacements which avoid these
issues.

As a side effect they are a ton faster as which
key does not have to compare all available bindings
everytime it opens its help window.

I have also fixed some more missing which-key
description in magit status buffer.
2020-11-27 22:46:56 +01:00
..
config.el update copyright to 2020 2020-09-23 21:25:01 +02:00
funcs.el update copyright to 2020 2020-09-23 21:25:01 +02:00
packages.el Change newly added which-key bindings to use keymap api 2020-11-27 22:46:56 +01:00
README.org documentation formatting: Fri Nov 22 19:37:23 UTC 2019 2019-11-22 22:47:35 +01:00

multiple-cursors layer

Description

Features:

  • support for multiple cursors.

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

Currently supported backends are:

To set your choice of backend, configure multiple-cursors-backend variable of the layer.

  (setq-default dotspacemacs-configuration-layers '(
    (multiple-cursors :variables multiple-cursors-backend 'evil-mc))

Key bindings

evil-mc

The evil-mc package provides the following key bindings:

Key binding Description
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

Make cursors from a selection

When the following commands are called from a:

  • character or line selection, then the cursors are created at the beginning or at the end of each line with a selection.
  • block selection, then the cursors are created before or after the selection blocks left or right most column.
Key binding Description
g r A evil-mc-make-cursor-in-visual-selection-end
g r I evil-mc-make-cursor-in-visual-selection-beg

Additional key bindings

For easy navigation you also have the following:

Key binding Description
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

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.

  (setq-default dotspacemacs-configuration-layers '(
    (multiple-cursors :variables
                      multiple-cursors-backend 'mc
                      mc/cmds-to-run-once '(upcase-region))))