evil-exchange
- Description
- Exchange text more easily within Evil
- Latest
- evil-exchange-0.41.tar (.sig), 2024-Mar-31, 20.0 KiB
- Maintainer
- Dewdrops <v_v_4474@126.com>
- Atom feed
- evil-exchange.xml
- Website
- http://github.com/Dewdrops/evil-exchange
- Browse ELPA's repository
- CGit or Gitweb
- Badge
To install this package from Emacs, use package-install or list-packages.
Full description
English is not my first language, so feel free to correct me of any 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. gxxworks 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-exchangeinvokes.
Installation
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.
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:
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.
Known Issues
- Some packages may redefine
c(evil-change) in normal state or/andxin operator state, which will conflict with the vim style bindings (cxandcxc). In this case, you may have to unbind them to makeevil-exchange-cx-installwork. Any PRs are welcome for compatibility.
