1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
|
Overview
========
Evil is an extensible vi layer for Emacs. It emulates the main
features of Vim, [#vim]_ turning Emacs into a modal editor. Like Emacs in
general, Evil is extensible in Emacs Lisp.
Installation via package.el
---------------------------
Evil is available as a package from MELPA stable, MELPA unstable and
NonGNU ELPA. This is the recommended way of installing Evil.
To set up `package.el` to work with one of the MELPA repositories, you
can follow the instructions on `melpa.org
<https://melpa.org/#/getting-started>`_.
Alternatively you can use NonGNU ELPA. It is part of the default
package archives as of Emacs 28. For older Emacs versions you'll need
to add it yourself:
.. code-block:: elisp
(add-to-list 'package-archives
(cons "nongnu" (format "http%s://elpa.nongnu.org/nongnu/"
(if (gnutls-available-p) "s" ""))))
Once that is done, you can execute the following commands::
M-x package-refresh-contents
M-x package-install RET evil RET
Finally, add the following lines to your Emacs init file:
.. code-block:: elisp
(require 'evil)
(evil-mode 1)
Manual installation
-------------------
First, install `goto-chg` and `cl-lib`. If you have an Emacs version
of 24.3 or newer, you should already have `cl-lib`.
Evil lives in a git repository. To download Evil, do::
git clone --depth 1 https://github.com/emacs-evil/evil.git
Then add the following lines to your Emacs init file:
.. code-block:: elisp
(add-to-list 'load-path "path/to/evil")
(require 'evil)
(evil-mode 1)
Ensure that your replace ``path/to/evil`` with the actual path to
where you cloned Evil.
Modes and states
----------------
The next time Emacs is started, it will come up in *normal state*,
denoted by ``<N>`` in the mode line. This is where the main vi
bindings are defined. Note that you can always disable normal state
with :kbd:`C-z`, which switches to an "Emacs state" (denoted by
``<E>``) in which vi keys are completely disabled. Press :kbd:`C-z`
again to switch back to normal state.
state
Evil uses the term *state* for what is called a "mode" in regular vi
usage, because *modes* are understood in Emacs terms to mean
something else.
Evil defines a number of states by default:
normal state (``<N>``)
This is the default "resting state" of Evil, in which the main body
of vi bindings are defined.
insert state (``<I>``)
This is the state for insertion of text, where non-modified keys
will insert the corresponding character in the buffer.
visual state (``<V>``)
A state for selecting text regions. Motions are available for
modifying the selected region, and operators are available for
acting on it.
replace state (``<R>``)
A special state mostly similar to insert state, except it replaces
text instead of inserting.
operator-pending state (``<O>``)
A special state entered after launching an operator, but before
specifying the corresponding motion or text object.
motion state (``<M>``)
A special state useful for buffers that are read-only, where motions
are available but editing operations are not.
Emacs state (``<E>``)
A state that as closely as possible mimics default Emacs behaviour,
by eliminating all vi bindings, except for :kbd:`C-z`, to re-enter
normal state.
.. rubric:: Footnotes
.. [#vim] Vim is the most popular version of *vi*, a modal text editor
with many implementations. Vim also adds some functions of its
own, like visual selection and text objects. For more information
see `the official Vim website <https://vim.org>`_.
|