mirror of
https://github.com/doomemacs/doomemacs
synced 2025-09-06 15:13:33 -05:00
This is in preparation for general.el integration coming in 2.1.1. It is very likely that map! will change (and even more, be split into several macros). Not much, but change none-the-less. Specifically, the state keywords (e.g. :nvi, :n, :i) will be removed in favor of a :state property that takes a list, e.g. (normal visual insert). In any case, both map! and general are also relatively expensive compared to define-key and evil-define-key* (and the new define-key! macro), so use that when we can. This also means changes to either API won't affect Doom's modules in the long term.
:feature evil
This holy module brings the vim experience to Emacs.
Table of Contents TOC
Removing evil-mode
See the corresponding question in the FAQ.
Features
- A better
:g[lobal]
command with incremental highlighting. - Adds the
:al[ign]
ex command: offers an ex interface toalign-regexp
with incremental highlighting. - Support for more of vim's filename modifiers in ex commands (like
:p
,:p:h
or:t
) than vanilla evil-mode offers. -
A list of new text objects:
- Blocks:
B
(fromevil-textobj-anyblock
) - Args:
a
(fromevil-args
) - Indentation:
i
/I
/J
(fromevil-indent-plus
)
- Blocks:
-
Incorporates vim functionality ported to evil:
vim-commentary
=>evil-commentary
vim-easymotion
=>evil-easymotion
vim-multiedit
=>evil-multiedit
vim-multiple-cursors
=>evil-mc
&evil-multiedit
vim-seek
orvim-sneak
=>evil-snipe
vim-surround
=>evil-embrace
&evil-surround
NERDTree
equivalent is available in:tools neotree
Multiple-cursors
Two multiple-cursor implementations exist in this module: evil-mc
and
evil-multiedit
. Together, these provide the functionality of
vim-multiple-cursors
.
The former lets you place "clone" cursors. The latter lets you interactively
edit many regions at once (like an interactive version of :%s
).
A hybrid code-folding system
This module combines evil-vimish-fold
and hideshow
. The former allows
arbitrary folds and the latter allows folds on markers and indentation.
Together, they create a more consistent (and feature-complete) code-folding
system.
Most vim folding keys should work, e.g. zr
, zm
, za
, zo
, etc.
Hacks
- Automatically moves to new window when splitting
- From visual mode,
*
and#
will search for the current selection instead of the word-at-point.
Differences from vim
- Column-wise ranges in ex commands are enabled by default. i.e. the range in
:'<,'>s/a/b
will only affects the visual selection, not full lines (seeevil-ex-visual-char-range
). :g
will incrementally highlight buffer matches.