# iedit contribution layer for Spacemacs
**Table of Contents**
- [iedit contribution layer for Spacemacs](#iedit-contribution-layer-for-spacemacs)
- [Install](#install)
- [Key bindings](#key-bindings)
- [State transitions](#state-transitions)
- [In iedit state](#in-iedit-state)
- [In iedit-insert state](#in-iedit-insert-state)
- [Examples](#examples)
This layer replaces [auto-highlight-symbol][] back end by [iedit][].
It comes with two new evil states:
- iedit state
- iedit-insert state
These states color code is `red`.
It has also a nice integration with [expand-region][] for quick edit
of the current selected text by pressing e.
## Install
To use this contribution add it to your `~/.spacemacs`
```elisp
(setq-default dotspacemacs-configuration-layers '(iedit)
"List of contribution to load."
)
```
## Key bindings
### State transitions
Key Binding | From | To
-------------------|:------------------:|:-------------------------:
SPC s e | normal or visual | iedit
e | expand-region | iedit
ESC | iedit | normal
C-g | iedit | normal
fd | iedit | normal
ESC | iedit-insert | iedit
C-g | iedit-insert | normal
fd | iedit-insert | normal
To sum-up, in `iedit-insert state` you have to press ESC twice to
go back to the `normal state`. You can also at any time press C-g
or fd to return to `normal state`.
**Note:** evil commands which switch to `insert state` will switch in
`iedit-insert state`.
### In iedit state
`iedit state` inherits from `normal state`, the following key bindings are
specific to `iedit state`.
Key Binding | Description
------------------|------------------------------------------------------------
ESC | go back to `normal state`
TAB | toggle current occurrence
0 | go to the beginning of the current occurrence
$ | go to the end of the current occurrence
# | prefix all occurrences with an increasing number (SPC u to choose the starting number).
A | go to the end of the current occurrence and switch to `iedit-insert state`
D | delete the occurrences
F | restrict the scope to the function
gg | go to first occurrence
G | go to last occurrence
I | go to the beginning of the current occurrence and switch to `iedit-insert state`
J | increase the edition scope by one line below
K | increase the edition scope by one line above
L | restrict the scope to the current line
n | go to next occurrence
N | go to previous occurrence
p | replace occurrences with last yanked (copied) text
S | (substitute) delete the occurrences and switch to `iedit-insert state`
V | toggle visibility of lines with no occurrence
U | Up-case the occurrences
C-U | down-case the occurrences
**Note:** 0, $, A and I have the
default Vim behavior when used outside of an occurrence.
### In iedit-insert state
Key Binding | Description
---------------------------|------------------------------------------------------------
ESC | go back to `iedit state`
C-g | go back to `normal state`
## Examples
- manual selection of several words then replace: v w w SPC s e S "toto" ESC ESC
- append text to a word on two lines: v i w SPC s e J i "toto" ESC ESC
- substitute symbol _with expand-region_: SPC v v e S "toto" ESC ESC
- replace symbol with yanked (copied) text _with expand region_: SPC v e p ESC ESC
[auto-highlight-symbol]: https://github.com/gennad/auto-highlight-symbol
[iedit]: https://github.com/tsdh/iedit
[expand-region]: https://github.com/magnars/expand-region.el