Github GitHub - Dewdrops/evil-exchange: Port of vim-exchange
source link: https://github.com/Dewdrops/evil-exchange
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
English is not my first language, so feel free to correct any of my mistake.
evil-exchange
Easy text exchange operator for Evil. This is the port of vim-exchange by Tom McDonald.
Default bindings
gx
(evil-exchange)
On the first use, define (and highlight) the first {motion} to exchange. On the second use, define the second {motion} and perform the exchange.
gX
(evil-exchange-cancel)
Clear any {motion} pending for exchange.
Notes
gx
(andgX
) can also be used from visual mode, which is sometimes easier than coming up with the right {motion}- If you're using the same motion again (e.g. exchanging two words using
gxiw
), you can use.
(evil-repeat) the second time. gxx
works as you expect.
Highlights
- Unlike the original vim plugin's buffer local behaviour, this extension allows you to exchange texts across buffers.
- Works correctly even when text insertion/deletion occurs between two
evil-exchange
invokes.
Installation
(require 'evil-exchange) ;; change default key bindings (if you want) HERE ;; (setq evil-exchange-key (kbd "zx")) (evil-exchange-install)
evil-exchange is also available in melpa and is shipped with spacemacs.
Customization
You can change the default bindings by customizing evil-exchange-key
and/or evil-exchange-cancel-key
BEFORE evil-exchange-install
is called.
Vim-compatible key bindings
Due to the way how evil (and emacs) implements key bindings, evil-exchange
can't be bound to cx
(which is the default bindings of the original
vim plugin) by customizing evil-exchange-key
option. If you prefer the key bindings suggested by vim-exchange, you can try the settings below:
(require 'evil-exchange) (evil-exchange-cx-install)
The evil-exchange-cx-install
function tries to mimic the original vim plugin's behaviour, i.e. cx
in normal state bound to evil-exchange
,
cxc
in normal state bound to evil-exchange-cancel
, and X
in visual state bound to evil-exchange
.
Known Issues
- Some packages may redefine
c
(evil-change
) in normal state or/andx
in operator state, which will conflict with the vim style bindings (cx
andcxc
). In this case, you may have to unbind them to makeevil-exchange-cx-install
work. Any PRs are welcome for compatibility.
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK