To install this package, run in Emacs:
M-x package-install RET evil-exchange RET
English is not my first language, so feel free to correct me of any mistake.
Easy text exchange operator for Evil. This is the port of vim-exchange by Tom McDonald.
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.
gx
(and gX
) can also be used from visual mode, which is sometimes easier than coming
up with the right {motion}gxiw
), you can use .
(evil-repeat) the second time.gxx
works as you expect.evil-exchange
invokes.lisp
(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.
You can change the default bindings by customizing evil-exchange-key
and/or evil-exchange-cancel-key
BEFORE evil-exchange-install
is called.
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:
lisp
(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
.
c
(evil-change
) in normal state or/and x
in operator state, which will conflict with the vim style bindings (cx
and cxc
). In this case, you may have to unbind them to make evil-exchange-cx-install
work. Any PRs are welcome for compatibility.