annotate man/vip.texi @ 38212:6b14cc47a4f2

Major rewrite. Sections Tags, Emerge, Change Log and Authors moved to maintaining.texi. Some sections reordered. Node Misc for Programs moved to just before the language-specific sections. New node Defuns contains an intro plus the old Defuns node (now renamed Moving by Defuns) as well as Imenu, Which Function, and a node Left Margin Paren to explain the convention about this. New node Parentheses now documents M-x check-parens. It contains subnodes Expressions, Moving by Parens, and Matching. Expressions and Moving by Parens contain the material formerly in Lists and List Commands, but divided up differently. The section Balanced Editing has been deleted. Most of the C indentation customization (all except c-set-style), has been replaced with a reference to the C Modes manual. Documentation now is divided into three subsections. Some rewrites in the Program Indent section about C-u TAB and C-M-q.
author Richard M. Stallman <rms@gnu.org>
date Tue, 26 Jun 2001 13:43:32 +0000
parents 39cfe73648c8
children 0a70200bde27
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
1 \input texinfo
Dave Love <fx@gnu.org>
parents:
diff changeset
2
Dave Love <fx@gnu.org>
parents:
diff changeset
3 @setfilename ../info/vip
Dave Love <fx@gnu.org>
parents:
diff changeset
4 @settitle VIP
Dave Love <fx@gnu.org>
parents:
diff changeset
5
30009
95bdbefcdac6 Use dircategory `Emacs'.
Gerd Moellmann <gerd@gnu.org>
parents: 29713
diff changeset
6 @dircategory Emacs
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
7 @direntry
Dave Love <fx@gnu.org>
parents:
diff changeset
8 * VIP: (vip). An older VI-emulation for Emacs.
Dave Love <fx@gnu.org>
parents:
diff changeset
9 @end direntry
Dave Love <fx@gnu.org>
parents:
diff changeset
10
Dave Love <fx@gnu.org>
parents:
diff changeset
11 @iftex
Dave Love <fx@gnu.org>
parents:
diff changeset
12 @finalout
Dave Love <fx@gnu.org>
parents:
diff changeset
13 @end iftex
Dave Love <fx@gnu.org>
parents:
diff changeset
14
Dave Love <fx@gnu.org>
parents:
diff changeset
15 @titlepage
Dave Love <fx@gnu.org>
parents:
diff changeset
16 @sp 10
Dave Love <fx@gnu.org>
parents:
diff changeset
17 @center @titlefont{VIP}
Dave Love <fx@gnu.org>
parents:
diff changeset
18 @sp 1
Dave Love <fx@gnu.org>
parents:
diff changeset
19 @center A Vi Package for GNU Emacs
Dave Love <fx@gnu.org>
parents:
diff changeset
20 @center (Version 3.5, September 15, 1987)
Dave Love <fx@gnu.org>
parents:
diff changeset
21 @sp 2
Dave Love <fx@gnu.org>
parents:
diff changeset
22 @center Masahiko Sato
Dave Love <fx@gnu.org>
parents:
diff changeset
23 @sp 2
Dave Love <fx@gnu.org>
parents:
diff changeset
24 @end titlepage
Dave Love <fx@gnu.org>
parents:
diff changeset
25
Dave Love <fx@gnu.org>
parents:
diff changeset
26 @unnumbered Distribution
Dave Love <fx@gnu.org>
parents:
diff changeset
27
37405
36711f1790e0 Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents: 30009
diff changeset
28 Copyright @copyright{} 1987, 2001 Free Software Foundation, Inc.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
29
37405
36711f1790e0 Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents: 30009
diff changeset
30 Permission is granted to copy, distribute and/or modify this document
36711f1790e0 Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents: 30009
diff changeset
31 under the terms of the GNU Free Documentation License, Version 1.1 or
36711f1790e0 Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents: 30009
diff changeset
32 any later version published by the Free Software Foundation; with no
36711f1790e0 Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents: 30009
diff changeset
33 Invariant Sections, with the Front-Cover texts being ``A GNU
36711f1790e0 Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents: 30009
diff changeset
34 Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
36711f1790e0 Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents: 30009
diff changeset
35 license is included in the section entitled ``GNU Free Documentation
36711f1790e0 Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents: 30009
diff changeset
36 License'' in the Emacs manual.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
37
37405
36711f1790e0 Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents: 30009
diff changeset
38 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
36711f1790e0 Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents: 30009
diff changeset
39 this GNU Manual, like GNU software. Copies published by the Free
36711f1790e0 Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents: 30009
diff changeset
40 Software Foundation raise funds for GNU development.''
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
41
37405
36711f1790e0 Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents: 30009
diff changeset
42 This document is part of a collection distributed under the GNU Free
36711f1790e0 Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents: 30009
diff changeset
43 Documentation License. If you want to distribute this document
36711f1790e0 Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents: 30009
diff changeset
44 separately from the collection, you can do so by adding a copy of the
36711f1790e0 Use GNU Free Documentation License.
Gerd Moellmann <gerd@gnu.org>
parents: 30009
diff changeset
45 license to the document, as described in section 6 of the license.
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
46
Dave Love <fx@gnu.org>
parents:
diff changeset
47 @ifinfo
Dave Love <fx@gnu.org>
parents:
diff changeset
48 @node Top, Survey,, (DIR)
Dave Love <fx@gnu.org>
parents:
diff changeset
49 @top VIP
Dave Love <fx@gnu.org>
parents:
diff changeset
50
Dave Love <fx@gnu.org>
parents:
diff changeset
51 VIP is a Vi emulating package written in Emacs Lisp. VIP implements most
Dave Love <fx@gnu.org>
parents:
diff changeset
52 Vi commands including Ex commands. It is therefore hoped that this package
Dave Love <fx@gnu.org>
parents:
diff changeset
53 will enable you to do Vi style editing under the powerful GNU Emacs
Dave Love <fx@gnu.org>
parents:
diff changeset
54 environment. This info file describes the usage of VIP assuming that you
Dave Love <fx@gnu.org>
parents:
diff changeset
55 are fairly accustomed to Vi but not so much with Emacs. Also we will
Dave Love <fx@gnu.org>
parents:
diff changeset
56 concentrate mainly on differences from Vi, especially features unique to
Dave Love <fx@gnu.org>
parents:
diff changeset
57 VIP.
Dave Love <fx@gnu.org>
parents:
diff changeset
58
Dave Love <fx@gnu.org>
parents:
diff changeset
59 It is recommended that you read nodes on survey and on customization before
Dave Love <fx@gnu.org>
parents:
diff changeset
60 you start using VIP. Other nodes may be visited as needed.
Dave Love <fx@gnu.org>
parents:
diff changeset
61
Dave Love <fx@gnu.org>
parents:
diff changeset
62 Comments and bug reports are welcome. Please send messages to
Dave Love <fx@gnu.org>
parents:
diff changeset
63 @code{ms@@Sail.Stanford.Edu} if you are outside of Japan and to
Dave Love <fx@gnu.org>
parents:
diff changeset
64 @code{masahiko@@sato.riec.tohoku.junet} if you are in Japan.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
65
Dave Love <fx@gnu.org>
parents:
diff changeset
66 @end ifinfo
Dave Love <fx@gnu.org>
parents:
diff changeset
67
Dave Love <fx@gnu.org>
parents:
diff changeset
68 @menu
Dave Love <fx@gnu.org>
parents:
diff changeset
69 * Survey:: A survey of VIP.
Dave Love <fx@gnu.org>
parents:
diff changeset
70 * Vi Commands:: Details of Vi commands.
Dave Love <fx@gnu.org>
parents:
diff changeset
71 * Ex Commands:: Details of Ex commands.
Dave Love <fx@gnu.org>
parents:
diff changeset
72 * Customization:: How to customize VIP.
Dave Love <fx@gnu.org>
parents:
diff changeset
73 @end menu
Dave Love <fx@gnu.org>
parents:
diff changeset
74 @iftex
Dave Love <fx@gnu.org>
parents:
diff changeset
75 @unnumbered Introduction
Dave Love <fx@gnu.org>
parents:
diff changeset
76
Dave Love <fx@gnu.org>
parents:
diff changeset
77 VIP is a Vi emulating package written in Emacs Lisp. VIP implements most
Dave Love <fx@gnu.org>
parents:
diff changeset
78 Vi commands including Ex commands. It is therefore hoped that this package
Dave Love <fx@gnu.org>
parents:
diff changeset
79 will enable you to do Vi style editing under the powerful GNU Emacs
Dave Love <fx@gnu.org>
parents:
diff changeset
80 environment. This manual describes the usage of VIP assuming that you are
Dave Love <fx@gnu.org>
parents:
diff changeset
81 fairly accustomed to Vi but not so much with Emacs. Also we will
Dave Love <fx@gnu.org>
parents:
diff changeset
82 concentrate mainly on differences from Vi, especially features unique to
Dave Love <fx@gnu.org>
parents:
diff changeset
83 VIP.
Dave Love <fx@gnu.org>
parents:
diff changeset
84
Dave Love <fx@gnu.org>
parents:
diff changeset
85 It is recommended that you read chapters on survey and on customization
Dave Love <fx@gnu.org>
parents:
diff changeset
86 before you start using VIP. Other chapters may be used as future
Dave Love <fx@gnu.org>
parents:
diff changeset
87 references.
Dave Love <fx@gnu.org>
parents:
diff changeset
88
Dave Love <fx@gnu.org>
parents:
diff changeset
89 Comments and bug reports are welcome. Please send messages to
Dave Love <fx@gnu.org>
parents:
diff changeset
90 @code{ms@@Sail.Stanford.Edu} if you are outside of Japan and to
Dave Love <fx@gnu.org>
parents:
diff changeset
91 @code{masahiko@@unsun.riec.tohoku.junet} if you are in Japan.
Dave Love <fx@gnu.org>
parents:
diff changeset
92 @end iftex
Dave Love <fx@gnu.org>
parents:
diff changeset
93
Dave Love <fx@gnu.org>
parents:
diff changeset
94 @node Survey, Basic Concepts, Top, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
95 @chapter A Survey of VIP
Dave Love <fx@gnu.org>
parents:
diff changeset
96
Dave Love <fx@gnu.org>
parents:
diff changeset
97 In this chapter we describe basics of VIP with emphasis on the features not
Dave Love <fx@gnu.org>
parents:
diff changeset
98 found in Vi and on how to use VIP under GNU Emacs.
Dave Love <fx@gnu.org>
parents:
diff changeset
99
Dave Love <fx@gnu.org>
parents:
diff changeset
100 @menu
Dave Love <fx@gnu.org>
parents:
diff changeset
101 * Basic Concepts:: Basic concepts in Emacs.
Dave Love <fx@gnu.org>
parents:
diff changeset
102 * Loading VIP:: How to load VIP automatically.
Dave Love <fx@gnu.org>
parents:
diff changeset
103 * Modes in VIP:: VIP has three modes, which are orthogonal to modes
Dave Love <fx@gnu.org>
parents:
diff changeset
104 in Emacs.
Dave Love <fx@gnu.org>
parents:
diff changeset
105 * Differences from Vi:: Differences of VIP from Vi is explained.
Dave Love <fx@gnu.org>
parents:
diff changeset
106 @end menu
Dave Love <fx@gnu.org>
parents:
diff changeset
107
Dave Love <fx@gnu.org>
parents:
diff changeset
108 @node Basic Concepts, Loading VIP, Survey, Survey
Dave Love <fx@gnu.org>
parents:
diff changeset
109 @section Basic Concepts
Dave Love <fx@gnu.org>
parents:
diff changeset
110
Dave Love <fx@gnu.org>
parents:
diff changeset
111 We begin by explaining some basic concepts of Emacs. These concepts are
Dave Love <fx@gnu.org>
parents:
diff changeset
112 explained in more detail in the GNU Emacs Manual.
Dave Love <fx@gnu.org>
parents:
diff changeset
113
Dave Love <fx@gnu.org>
parents:
diff changeset
114 @cindex buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
115 @cindex point
Dave Love <fx@gnu.org>
parents:
diff changeset
116 @cindex mark
Dave Love <fx@gnu.org>
parents:
diff changeset
117 @cindex text
Dave Love <fx@gnu.org>
parents:
diff changeset
118 @cindex looking at
Dave Love <fx@gnu.org>
parents:
diff changeset
119 @cindex end (of buffer)
Dave Love <fx@gnu.org>
parents:
diff changeset
120 @cindex region
Dave Love <fx@gnu.org>
parents:
diff changeset
121
Dave Love <fx@gnu.org>
parents:
diff changeset
122 Conceptually, a @dfn{buffer} is just a string of ASCII characters and two
Dave Love <fx@gnu.org>
parents:
diff changeset
123 special characters @key{PNT} (@dfn{point}) and @key{MRK} (@dfn{mark}) such
Dave Love <fx@gnu.org>
parents:
diff changeset
124 that the character @key{PNT} occurs exactly once and @key{MRK} occurs at
Dave Love <fx@gnu.org>
parents:
diff changeset
125 most once. The @dfn{text} of a buffer is obtained by deleting the
Dave Love <fx@gnu.org>
parents:
diff changeset
126 occurrences of @key{PNT} and @key{MRK}. If, in a buffer, there is a
Dave Love <fx@gnu.org>
parents:
diff changeset
127 character following @key{PNT} then we say that point is @dfn{looking at}
Dave Love <fx@gnu.org>
parents:
diff changeset
128 the character; otherwise we say that point is @dfn{at the end of buffer}.
Dave Love <fx@gnu.org>
parents:
diff changeset
129 @key{PNT} and @key{MRK} are used
Dave Love <fx@gnu.org>
parents:
diff changeset
130 to indicate positions in a buffer and they are not part of the text of the
Dave Love <fx@gnu.org>
parents:
diff changeset
131 buffer. If a buffer contains a @key{MRK} then the text between @key{MRK}
Dave Love <fx@gnu.org>
parents:
diff changeset
132 and @key{PNT} is called the @dfn{region} of the buffer.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
133
Dave Love <fx@gnu.org>
parents:
diff changeset
134 @cindex window
Dave Love <fx@gnu.org>
parents:
diff changeset
135
Dave Love <fx@gnu.org>
parents:
diff changeset
136 Emacs provides (multiple) @dfn{windows} on the screen, and you can see the
Dave Love <fx@gnu.org>
parents:
diff changeset
137 content of a buffer through the window associated with the buffer. The
Dave Love <fx@gnu.org>
parents:
diff changeset
138 cursor of the screen is always positioned on the character after @key{PNT}.
Dave Love <fx@gnu.org>
parents:
diff changeset
139 @refill
Dave Love <fx@gnu.org>
parents:
diff changeset
140
Dave Love <fx@gnu.org>
parents:
diff changeset
141 @cindex mode
Dave Love <fx@gnu.org>
parents:
diff changeset
142 @cindex keymap
Dave Love <fx@gnu.org>
parents:
diff changeset
143 @cindex local keymap
Dave Love <fx@gnu.org>
parents:
diff changeset
144 @cindex global keymap
Dave Love <fx@gnu.org>
parents:
diff changeset
145
Dave Love <fx@gnu.org>
parents:
diff changeset
146 A @dfn{keymap} is a table that records the bindings between characters and
Dave Love <fx@gnu.org>
parents:
diff changeset
147 command functions. There is the @dfn{global keymap} common to all the
Dave Love <fx@gnu.org>
parents:
diff changeset
148 buffers. Each buffer has its @dfn{local keymap} that determines the
Dave Love <fx@gnu.org>
parents:
diff changeset
149 @dfn{mode} of the buffer. Local keymap overrides global keymap, so that if
Dave Love <fx@gnu.org>
parents:
diff changeset
150 a function is bound to some key in the local keymap then that function will
Dave Love <fx@gnu.org>
parents:
diff changeset
151 be executed when you type the key. If no function is bound to a key in the
Dave Love <fx@gnu.org>
parents:
diff changeset
152 local map, however, the function bound to the key in the global map becomes
Dave Love <fx@gnu.org>
parents:
diff changeset
153 in effect.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
154
Dave Love <fx@gnu.org>
parents:
diff changeset
155 @node Loading VIP, Modes in VIP, Basic Concepts, Survey
Dave Love <fx@gnu.org>
parents:
diff changeset
156 @section Loading VIP
Dave Love <fx@gnu.org>
parents:
diff changeset
157
Dave Love <fx@gnu.org>
parents:
diff changeset
158 The recommended way to load VIP automatically is to include the line:
Dave Love <fx@gnu.org>
parents:
diff changeset
159 @example
Dave Love <fx@gnu.org>
parents:
diff changeset
160 (load "vip")
Dave Love <fx@gnu.org>
parents:
diff changeset
161 @end example
Dave Love <fx@gnu.org>
parents:
diff changeset
162 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
163 in your @file{.emacs} file. The @file{.emacs} file is placed in your home
Dave Love <fx@gnu.org>
parents:
diff changeset
164 directory and it will be executed every time you invoke Emacs. If you wish
Dave Love <fx@gnu.org>
parents:
diff changeset
165 to be in vi mode whenever Emacs starts up, you can include the following
Dave Love <fx@gnu.org>
parents:
diff changeset
166 line in your @file{.emacs} file instead of the above line:
Dave Love <fx@gnu.org>
parents:
diff changeset
167 @example
Dave Love <fx@gnu.org>
parents:
diff changeset
168 (setq term-setup-hook 'vip-mode)
Dave Love <fx@gnu.org>
parents:
diff changeset
169 @end example
Dave Love <fx@gnu.org>
parents:
diff changeset
170 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
171 (@xref{Vi Mode}, for the explanation of vi mode.)
Dave Love <fx@gnu.org>
parents:
diff changeset
172
Dave Love <fx@gnu.org>
parents:
diff changeset
173 Even if your @file{.emacs} file does not contain any of the above lines,
Dave Love <fx@gnu.org>
parents:
diff changeset
174 you can load VIP and enter vi mode by typing the following from within
Dave Love <fx@gnu.org>
parents:
diff changeset
175 Emacs.
Dave Love <fx@gnu.org>
parents:
diff changeset
176 @example
Dave Love <fx@gnu.org>
parents:
diff changeset
177 M-x vip-mode
Dave Love <fx@gnu.org>
parents:
diff changeset
178 @end example
Dave Love <fx@gnu.org>
parents:
diff changeset
179 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
180
Dave Love <fx@gnu.org>
parents:
diff changeset
181 @node Modes in VIP, Emacs Mode, Loading VIP, Survey
Dave Love <fx@gnu.org>
parents:
diff changeset
182 @section Modes in VIP
Dave Love <fx@gnu.org>
parents:
diff changeset
183
Dave Love <fx@gnu.org>
parents:
diff changeset
184 @kindex 032 @kbd{C-z} (@code{vip-change-mode-to-vi})
Dave Love <fx@gnu.org>
parents:
diff changeset
185 @kindex 0301 @kbd{C-x C-z} (@code{suspend-emacs})
Dave Love <fx@gnu.org>
parents:
diff changeset
186
Dave Love <fx@gnu.org>
parents:
diff changeset
187 Loading VIP has the effect of globally binding @kbd{C-z} (@kbd{Control-z})
Dave Love <fx@gnu.org>
parents:
diff changeset
188 to the function @code{vip-change-mode-to-vi}. The default binding of @kbd{C-z}
Dave Love <fx@gnu.org>
parents:
diff changeset
189 in GNU Emacs is @code{suspend-emacs}, but, you can also call
Dave Love <fx@gnu.org>
parents:
diff changeset
190 @code{suspend-emacs} by typing @kbd{C-x C-z}. Other than this, all the
Dave Love <fx@gnu.org>
parents:
diff changeset
191 key bindings of Emacs remain the same after loading VIP.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
192
Dave Love <fx@gnu.org>
parents:
diff changeset
193 @cindex vi mode
Dave Love <fx@gnu.org>
parents:
diff changeset
194
Dave Love <fx@gnu.org>
parents:
diff changeset
195 Now, if you hit @kbd{C-z}, the function @code{vip-change-mode-to-vi} will be
Dave Love <fx@gnu.org>
parents:
diff changeset
196 called and you will be in @dfn{vi mode}. (Some major modes may locally bind
Dave Love <fx@gnu.org>
parents:
diff changeset
197 @kbd{C-z} to some special functions. In such cases, you can call
Dave Love <fx@gnu.org>
parents:
diff changeset
198 @code{vip-change-mode-to-vi} by @code{execute-extended-command} which is
Dave Love <fx@gnu.org>
parents:
diff changeset
199 invoked by @kbd{M-x}. Here @kbd{M-x} means @kbd{Meta-x}, and if your
Dave Love <fx@gnu.org>
parents:
diff changeset
200 terminal does not have a @key{META} key you can enter it by typing
Dave Love <fx@gnu.org>
parents:
diff changeset
201 @kbd{@key{ESC} x}. The same effect can also be achieve by typing
Dave Love <fx@gnu.org>
parents:
diff changeset
202 @kbd{M-x vip-mode}.)@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
203
Dave Love <fx@gnu.org>
parents:
diff changeset
204 @cindex mode line
Dave Love <fx@gnu.org>
parents:
diff changeset
205
Dave Love <fx@gnu.org>
parents:
diff changeset
206 You can observe the change of mode by looking at the @dfn{mode line}. For
Dave Love <fx@gnu.org>
parents:
diff changeset
207 instance, if the mode line is:@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
208 @example
Dave Love <fx@gnu.org>
parents:
diff changeset
209 -----Emacs: *scratch* (Lisp Interaction)----All------------
Dave Love <fx@gnu.org>
parents:
diff changeset
210 @end example
Dave Love <fx@gnu.org>
parents:
diff changeset
211 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
212 then it will change to:
Dave Love <fx@gnu.org>
parents:
diff changeset
213 @example
Dave Love <fx@gnu.org>
parents:
diff changeset
214 -----Vi: *scratch* (Lisp Interaction)----All------------
Dave Love <fx@gnu.org>
parents:
diff changeset
215 @end example
Dave Love <fx@gnu.org>
parents:
diff changeset
216 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
217 Thus the word @samp{Emacs} in the mode line will change to @samp{Vi}.
Dave Love <fx@gnu.org>
parents:
diff changeset
218
Dave Love <fx@gnu.org>
parents:
diff changeset
219 @cindex insert mode
Dave Love <fx@gnu.org>
parents:
diff changeset
220 @cindex emacs mode
Dave Love <fx@gnu.org>
parents:
diff changeset
221
Dave Love <fx@gnu.org>
parents:
diff changeset
222 You can go back to the original @dfn{emacs mode} by typing @kbd{C-z} in
Dave Love <fx@gnu.org>
parents:
diff changeset
223 vi mode. Thus @kbd{C-z} toggles between these two modes.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
224
Dave Love <fx@gnu.org>
parents:
diff changeset
225 Note that modes in VIP exist orthogonally to modes in Emacs. This means
Dave Love <fx@gnu.org>
parents:
diff changeset
226 that you can be in vi mode and at the same time, say, shell mode.
Dave Love <fx@gnu.org>
parents:
diff changeset
227
Dave Love <fx@gnu.org>
parents:
diff changeset
228 Vi mode corresponds to Vi's command mode. From vi mode you can enter
Dave Love <fx@gnu.org>
parents:
diff changeset
229 @dfn{insert mode} (which corresponds to Vi's insert mode) by usual Vi command
Dave Love <fx@gnu.org>
parents:
diff changeset
230 keys like @kbd{i}, @kbd{a}, @kbd{o} @dots{} etc.
Dave Love <fx@gnu.org>
parents:
diff changeset
231
Dave Love <fx@gnu.org>
parents:
diff changeset
232 In insert mode, the mode line will look like this:
Dave Love <fx@gnu.org>
parents:
diff changeset
233 @example
Dave Love <fx@gnu.org>
parents:
diff changeset
234 -----Insert *scratch* (Lisp Interaction)----All------------
Dave Love <fx@gnu.org>
parents:
diff changeset
235 @end example
Dave Love <fx@gnu.org>
parents:
diff changeset
236 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
237 You can exit from insert mode by hitting @key{ESC} key as you do in Vi.
Dave Love <fx@gnu.org>
parents:
diff changeset
238
Dave Love <fx@gnu.org>
parents:
diff changeset
239 That VIP has three modes may seem very complicated, but in fact it is not
Dave Love <fx@gnu.org>
parents:
diff changeset
240 so. VIP is implemented so that you can do most editing remaining only
Dave Love <fx@gnu.org>
parents:
diff changeset
241 in the two modes for Vi (that is vi mode and insert mode).
Dave Love <fx@gnu.org>
parents:
diff changeset
242
Dave Love <fx@gnu.org>
parents:
diff changeset
243 @ifinfo
Dave Love <fx@gnu.org>
parents:
diff changeset
244 The figure below shows the transition of three modes in VIP.
Dave Love <fx@gnu.org>
parents:
diff changeset
245 @display
Dave Love <fx@gnu.org>
parents:
diff changeset
246
Dave Love <fx@gnu.org>
parents:
diff changeset
247
Dave Love <fx@gnu.org>
parents:
diff changeset
248 === C-z ==> == i,o ... ==>
Dave Love <fx@gnu.org>
parents:
diff changeset
249 emacs mode vi mode insert mode
Dave Love <fx@gnu.org>
parents:
diff changeset
250 <== X-z === <=== ESC ====
Dave Love <fx@gnu.org>
parents:
diff changeset
251 @end display
Dave Love <fx@gnu.org>
parents:
diff changeset
252 @end ifinfo
Dave Love <fx@gnu.org>
parents:
diff changeset
253
Dave Love <fx@gnu.org>
parents:
diff changeset
254 @menu
Dave Love <fx@gnu.org>
parents:
diff changeset
255 * Emacs Mode:: This is the mode you should know better.
Dave Love <fx@gnu.org>
parents:
diff changeset
256 * Vi Mode:: Vi commands are executed in this mode.
Dave Love <fx@gnu.org>
parents:
diff changeset
257 * Insert Mode:: You can enter text, and also can do editing if you
Dave Love <fx@gnu.org>
parents:
diff changeset
258 know enough Emacs commands.
Dave Love <fx@gnu.org>
parents:
diff changeset
259 @end menu
Dave Love <fx@gnu.org>
parents:
diff changeset
260
Dave Love <fx@gnu.org>
parents:
diff changeset
261 @node Emacs Mode, Vi Mode, Modes in VIP, Modes in VIP
Dave Love <fx@gnu.org>
parents:
diff changeset
262 @subsection Emacs Mode
Dave Love <fx@gnu.org>
parents:
diff changeset
263
Dave Love <fx@gnu.org>
parents:
diff changeset
264 @kindex 032 @kbd{C-z} (@code{vip-change-mode-to-vi})
Dave Love <fx@gnu.org>
parents:
diff changeset
265
Dave Love <fx@gnu.org>
parents:
diff changeset
266 You will be in this mode just after you loaded VIP. You can do all
Dave Love <fx@gnu.org>
parents:
diff changeset
267 normal Emacs editing in this mode. Note that the key @kbd{C-z} is globally
Dave Love <fx@gnu.org>
parents:
diff changeset
268 bound to @code{vip-change-mode-to-vi}. So, if you type @kbd{C-z} in this mode
Dave Love <fx@gnu.org>
parents:
diff changeset
269 then you will be in vi mode.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
270
Dave Love <fx@gnu.org>
parents:
diff changeset
271 @node Vi Mode, Insert Mode, Emacs Mode, Modes in VIP
Dave Love <fx@gnu.org>
parents:
diff changeset
272 @subsection Vi Mode
Dave Love <fx@gnu.org>
parents:
diff changeset
273
Dave Love <fx@gnu.org>
parents:
diff changeset
274 This mode corresponds to Vi's command mode. Most Vi commands work as they
Dave Love <fx@gnu.org>
parents:
diff changeset
275 do in Vi. You can go back to emacs mode by typing @kbd{C-z}. You can
Dave Love <fx@gnu.org>
parents:
diff changeset
276 enter insert mode, just as in Vi, by typing @kbd{i}, @kbd{a} etc.
Dave Love <fx@gnu.org>
parents:
diff changeset
277
Dave Love <fx@gnu.org>
parents:
diff changeset
278 @node Insert Mode, Differences from Vi, Vi Mode, Modes in VIP
Dave Love <fx@gnu.org>
parents:
diff changeset
279 @subsection Insert Mode
Dave Love <fx@gnu.org>
parents:
diff changeset
280
Dave Love <fx@gnu.org>
parents:
diff changeset
281 The key bindings in this mode is the same as in the emacs mode except for
Dave Love <fx@gnu.org>
parents:
diff changeset
282 the following 4 keys. So, you can move around in the buffer and change
Dave Love <fx@gnu.org>
parents:
diff changeset
283 its content while you are in insert mode.
Dave Love <fx@gnu.org>
parents:
diff changeset
284
Dave Love <fx@gnu.org>
parents:
diff changeset
285 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
286 @item @key{ESC}
Dave Love <fx@gnu.org>
parents:
diff changeset
287 @kindex 033 @kbd{ESC} (@code{vip-change-mode-to-vi}) (insert mode)
Dave Love <fx@gnu.org>
parents:
diff changeset
288 This key will take you back to vi mode.
Dave Love <fx@gnu.org>
parents:
diff changeset
289 @item C-h
Dave Love <fx@gnu.org>
parents:
diff changeset
290 @kindex 010 @kbd{C-h} (@code{vip-delete-backward-char}) (insert mode)
Dave Love <fx@gnu.org>
parents:
diff changeset
291 Delete previous character.
Dave Love <fx@gnu.org>
parents:
diff changeset
292 @item C-w
Dave Love <fx@gnu.org>
parents:
diff changeset
293 @kindex 027 @kbd{C-w} (@code{vip-delete-backward-word}) (insert mode)
Dave Love <fx@gnu.org>
parents:
diff changeset
294 Delete previous word.
Dave Love <fx@gnu.org>
parents:
diff changeset
295 @item C-z
Dave Love <fx@gnu.org>
parents:
diff changeset
296 @kindex 032 @kbd{C-z} (@code{vip-ESC}) (insert mode)
Dave Love <fx@gnu.org>
parents:
diff changeset
297 Typing this key has the same effect as typing @key{ESC} in emacs mode.
Dave Love <fx@gnu.org>
parents:
diff changeset
298 Thus typing @kbd{C-z x} in insert mode will have the same effect as typing
Dave Love <fx@gnu.org>
parents:
diff changeset
299 @kbd{ESC x} in emacs mode.
Dave Love <fx@gnu.org>
parents:
diff changeset
300 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
301
Dave Love <fx@gnu.org>
parents:
diff changeset
302 @node Differences from Vi, Undoing, Insert Mode, Survey
Dave Love <fx@gnu.org>
parents:
diff changeset
303 @section Differences from Vi
Dave Love <fx@gnu.org>
parents:
diff changeset
304
Dave Love <fx@gnu.org>
parents:
diff changeset
305 The major differences from Vi are explained below.
Dave Love <fx@gnu.org>
parents:
diff changeset
306
Dave Love <fx@gnu.org>
parents:
diff changeset
307 @menu
Dave Love <fx@gnu.org>
parents:
diff changeset
308 * Undoing:: You can undo more in VIP.
Dave Love <fx@gnu.org>
parents:
diff changeset
309 * Changing:: Commands for changing the text.
Dave Love <fx@gnu.org>
parents:
diff changeset
310 * Searching:: Search commands.
Dave Love <fx@gnu.org>
parents:
diff changeset
311 * z Command:: You can now use zH, zM and zL as well as z- etc.
Dave Love <fx@gnu.org>
parents:
diff changeset
312 * Counts:: Some Vi commands which do not accept a count now
Dave Love <fx@gnu.org>
parents:
diff changeset
313 accept one.
Dave Love <fx@gnu.org>
parents:
diff changeset
314 * Marking:: You can now mark the current point, beginning of
Dave Love <fx@gnu.org>
parents:
diff changeset
315 the buffer etc.
Dave Love <fx@gnu.org>
parents:
diff changeset
316 * Region Commands:: You can now give a region as an argument for delete
Dave Love <fx@gnu.org>
parents:
diff changeset
317 commands etc.
Dave Love <fx@gnu.org>
parents:
diff changeset
318 * New Commands:: Some new commands not available in Vi are added.
Dave Love <fx@gnu.org>
parents:
diff changeset
319 * New Bindings:: Bindings of some keys are changed for the
Dave Love <fx@gnu.org>
parents:
diff changeset
320 convenience of editing under Emacs.
Dave Love <fx@gnu.org>
parents:
diff changeset
321 * Window Commands:: Commands for moving among windows etc.
Dave Love <fx@gnu.org>
parents:
diff changeset
322 * Buffer Commands:: Commands for selecting buffers etc.
Dave Love <fx@gnu.org>
parents:
diff changeset
323 * File Commands:: Commands for visiting files etc.
Dave Love <fx@gnu.org>
parents:
diff changeset
324 * Misc Commands:: Other useful commands.
Dave Love <fx@gnu.org>
parents:
diff changeset
325 @end menu
Dave Love <fx@gnu.org>
parents:
diff changeset
326
Dave Love <fx@gnu.org>
parents:
diff changeset
327 @node Undoing, Changing, Differences from Vi, Differences from Vi
Dave Love <fx@gnu.org>
parents:
diff changeset
328 @subsection Undoing
Dave Love <fx@gnu.org>
parents:
diff changeset
329
Dave Love <fx@gnu.org>
parents:
diff changeset
330 @kindex 165 @kbd{u} (@code{vip-undo})
Dave Love <fx@gnu.org>
parents:
diff changeset
331 @kindex 056 @kbd{.} (@code{vip-repeat})
Dave Love <fx@gnu.org>
parents:
diff changeset
332
Dave Love <fx@gnu.org>
parents:
diff changeset
333 You can repeat undoing by the @kbd{.} key. So, @kbd{u} will undo
Dave Love <fx@gnu.org>
parents:
diff changeset
334 a single change, while @kbd{u .@: .@: .@:}, for instance, will undo 4 previous
Dave Love <fx@gnu.org>
parents:
diff changeset
335 changes. Undo is undoable as in Vi. So the content of the buffer will
Dave Love <fx@gnu.org>
parents:
diff changeset
336 be the same before and after @kbd{u u}.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
337
Dave Love <fx@gnu.org>
parents:
diff changeset
338 @node Changing, Searching, Undoing, Differences from Vi
Dave Love <fx@gnu.org>
parents:
diff changeset
339 @subsection Changing
Dave Love <fx@gnu.org>
parents:
diff changeset
340
Dave Love <fx@gnu.org>
parents:
diff changeset
341 Some commands which change a small number of characters are executed
Dave Love <fx@gnu.org>
parents:
diff changeset
342 slightly differently. Thus, if point is at the beginning of a word
Dave Love <fx@gnu.org>
parents:
diff changeset
343 @samp{foo} and you wished to change it to @samp{bar} by typing @w{@kbd{c w}},
Dave Love <fx@gnu.org>
parents:
diff changeset
344 then VIP will prompt you for a new word in the minibuffer by the prompt
Dave Love <fx@gnu.org>
parents:
diff changeset
345 @samp{foo => }. You can then enter @samp{bar} followed by @key{RET} or
Dave Love <fx@gnu.org>
parents:
diff changeset
346 @key{ESC} to complete the command. Before you enter @key{RET} or
Dave Love <fx@gnu.org>
parents:
diff changeset
347 @key{ESC} you can abort the command by typing @kbd{C-g}. In general,
Dave Love <fx@gnu.org>
parents:
diff changeset
348 @kindex 007 @kbd{C-g} (@code{vip-keyboard-quit})
Dave Love <fx@gnu.org>
parents:
diff changeset
349 you can abort a partially formed command by typing @kbd{C-g}.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
350
Dave Love <fx@gnu.org>
parents:
diff changeset
351 @node Searching, z Command, Changing, Differences from Vi
Dave Love <fx@gnu.org>
parents:
diff changeset
352 @subsection Searching
Dave Love <fx@gnu.org>
parents:
diff changeset
353
Dave Love <fx@gnu.org>
parents:
diff changeset
354 @kindex 057 @kbd{/} (@code{vip-search-forward})
Dave Love <fx@gnu.org>
parents:
diff changeset
355 @kindex 077 @kbd{?} (@code{vip-search-backward})
Dave Love <fx@gnu.org>
parents:
diff changeset
356
Dave Love <fx@gnu.org>
parents:
diff changeset
357 As in Vi, searching is done by @kbd{/} and @kbd{?}. The string will be
Dave Love <fx@gnu.org>
parents:
diff changeset
358 searched literally by default. To invoke a regular expression search,
Dave Love <fx@gnu.org>
parents:
diff changeset
359 first execute the search command @kbd{/} (or @kbd{?}) with empty search
Dave Love <fx@gnu.org>
parents:
diff changeset
360 string. (I.e, type @kbd{/} followed by @key{RET}.)
Dave Love <fx@gnu.org>
parents:
diff changeset
361 A search for empty string will toggle the search mode between vanilla
Dave Love <fx@gnu.org>
parents:
diff changeset
362 search and regular expression search. You cannot give an offset to the
Dave Love <fx@gnu.org>
parents:
diff changeset
363 search string. (It is a limitation.) By default, search will wrap around
Dave Love <fx@gnu.org>
parents:
diff changeset
364 the buffer as in Vi. You can change this by rebinding the variable
Dave Love <fx@gnu.org>
parents:
diff changeset
365 @code{vip-search-wrap-around}. @xref{Customization}, for how to do this.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
366
Dave Love <fx@gnu.org>
parents:
diff changeset
367 @node z Command, Counts, Searching, Differences from Vi
Dave Love <fx@gnu.org>
parents:
diff changeset
368 @subsection z Command
Dave Love <fx@gnu.org>
parents:
diff changeset
369
Dave Love <fx@gnu.org>
parents:
diff changeset
370 @kindex 1723 @kbd{z H} (@code{vip-line-to-top})
Dave Love <fx@gnu.org>
parents:
diff changeset
371 @kindex 1721 @kbd{z RET} (@code{vip-line-to-top})
Dave Love <fx@gnu.org>
parents:
diff changeset
372 @kindex 1723 @kbd{z M} (@code{vip-line-to-middle})
Dave Love <fx@gnu.org>
parents:
diff changeset
373 @kindex 1722 @kbd{z .} (@code{vip-line-to-middle})
Dave Love <fx@gnu.org>
parents:
diff changeset
374 @kindex 1723 @kbd{z L} (@code{vip-line-to-bottom})
Dave Love <fx@gnu.org>
parents:
diff changeset
375 @kindex 1722 @kbd{z -} (@code{vip-line-to-bottom})
Dave Love <fx@gnu.org>
parents:
diff changeset
376
Dave Love <fx@gnu.org>
parents:
diff changeset
377 For those of you who cannot remember which of @kbd{z} followed by @key{RET},
Dave Love <fx@gnu.org>
parents:
diff changeset
378 @kbd{.}@: and @kbd{-} do what. You can also use @kbd{z} followed by @kbd{H},
Dave Love <fx@gnu.org>
parents:
diff changeset
379 @kbd{M} and @kbd{L} to place the current line in the Home (Middle, and
Dave Love <fx@gnu.org>
parents:
diff changeset
380 Last) line of the window.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
381
Dave Love <fx@gnu.org>
parents:
diff changeset
382 @node Counts, Marking, z Command, Differences from Vi
Dave Love <fx@gnu.org>
parents:
diff changeset
383 @subsection Counts
Dave Love <fx@gnu.org>
parents:
diff changeset
384
Dave Love <fx@gnu.org>
parents:
diff changeset
385 Some Vi commands which do not accept a count now accept one
Dave Love <fx@gnu.org>
parents:
diff changeset
386
Dave Love <fx@gnu.org>
parents:
diff changeset
387 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
388 @item p
Dave Love <fx@gnu.org>
parents:
diff changeset
389 @itemx P
Dave Love <fx@gnu.org>
parents:
diff changeset
390 @kindex 160 @kbd{p} (@code{vip-put-back})
Dave Love <fx@gnu.org>
parents:
diff changeset
391 @kindex 120 @kbd{P} (@code{vip-Put-back})
Dave Love <fx@gnu.org>
parents:
diff changeset
392 Given counts, text will be yanked (in Vi's sense) that many times. Thus
Dave Love <fx@gnu.org>
parents:
diff changeset
393 @kbd{3 p} is the same as @kbd{p p p}.
Dave Love <fx@gnu.org>
parents:
diff changeset
394 @item o
Dave Love <fx@gnu.org>
parents:
diff changeset
395 @itemx O
Dave Love <fx@gnu.org>
parents:
diff changeset
396 @kindex 157 @kbd{o} (@code{vip-open-line})
Dave Love <fx@gnu.org>
parents:
diff changeset
397 @kindex 117 @kbd{O} (@code{vip-Open-line})
Dave Love <fx@gnu.org>
parents:
diff changeset
398 Given counts, that many copies of text will be inserted. Thus
Dave Love <fx@gnu.org>
parents:
diff changeset
399 @kbd{o a b c @key{ESC}} will insert 3 lines of @samp{abc} below the current
Dave Love <fx@gnu.org>
parents:
diff changeset
400 line.
Dave Love <fx@gnu.org>
parents:
diff changeset
401 @item /
Dave Love <fx@gnu.org>
parents:
diff changeset
402 @itemx ?
Dave Love <fx@gnu.org>
parents:
diff changeset
403 @kindex 057 @kbd{/} (@code{vip-search-forward})
Dave Love <fx@gnu.org>
parents:
diff changeset
404 @kindex 077 @kbd{?} (@code{vip-search-backward})
Dave Love <fx@gnu.org>
parents:
diff changeset
405 Given a count @var{n}, @var{n}-th occurrence will be searched.
Dave Love <fx@gnu.org>
parents:
diff changeset
406 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
407
Dave Love <fx@gnu.org>
parents:
diff changeset
408 @node Marking, Region Commands, Counts, Differences from Vi
Dave Love <fx@gnu.org>
parents:
diff changeset
409 @subsection Marking
Dave Love <fx@gnu.org>
parents:
diff changeset
410
Dave Love <fx@gnu.org>
parents:
diff changeset
411 Typing an @kbd{m} followed by a lower-case character @var{ch} marks the
Dave Love <fx@gnu.org>
parents:
diff changeset
412 point to the register named @var{ch} as in Vi. In addition to these, we
Dave Love <fx@gnu.org>
parents:
diff changeset
413 have following key bindings for marking.
Dave Love <fx@gnu.org>
parents:
diff changeset
414
Dave Love <fx@gnu.org>
parents:
diff changeset
415 @kindex 155 @kbd{m} (@code{vip-mark-point})
Dave Love <fx@gnu.org>
parents:
diff changeset
416
Dave Love <fx@gnu.org>
parents:
diff changeset
417 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
418 @item m <
Dave Love <fx@gnu.org>
parents:
diff changeset
419 Set mark at the beginning of buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
420 @item m >
Dave Love <fx@gnu.org>
parents:
diff changeset
421 Set mark at the end of buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
422 @item m .
Dave Love <fx@gnu.org>
parents:
diff changeset
423 Set mark at point (and push old mark on mark ring).
Dave Love <fx@gnu.org>
parents:
diff changeset
424 @item m ,
Dave Love <fx@gnu.org>
parents:
diff changeset
425 Jump to mark (and pop mark off the mark ring).
Dave Love <fx@gnu.org>
parents:
diff changeset
426 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
427
Dave Love <fx@gnu.org>
parents:
diff changeset
428 @node Region Commands, New Commands, Marking, Differences from Vi
Dave Love <fx@gnu.org>
parents:
diff changeset
429 @subsection Region Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
430
Dave Love <fx@gnu.org>
parents:
diff changeset
431 @cindex region
Dave Love <fx@gnu.org>
parents:
diff changeset
432
Dave Love <fx@gnu.org>
parents:
diff changeset
433 Vi operators like @kbd{d}, @kbd{c} etc. are usually used in combination
Dave Love <fx@gnu.org>
parents:
diff changeset
434 with motion commands. It is now possible to use current region as the
Dave Love <fx@gnu.org>
parents:
diff changeset
435 argument to these operators. (A @dfn{region} is a part of buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
436 delimited by point and mark.) The key @kbd{r} is used for this purpose.
Dave Love <fx@gnu.org>
parents:
diff changeset
437 Thus @kbd{d r} will delete the current region. If @kbd{R} is used instead
Dave Love <fx@gnu.org>
parents:
diff changeset
438 of @kbd{r} the region will first be enlarged so that it will become the
Dave Love <fx@gnu.org>
parents:
diff changeset
439 smallest region containing the original region and consisting of whole
Dave Love <fx@gnu.org>
parents:
diff changeset
440 lines. Thus @kbd{m .@: d R} will have the same effect as @kbd{d d}.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
441
Dave Love <fx@gnu.org>
parents:
diff changeset
442 @node New Commands, New Bindings, Region Commands, Differences from Vi
Dave Love <fx@gnu.org>
parents:
diff changeset
443 @subsection Some New Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
444
Dave Love <fx@gnu.org>
parents:
diff changeset
445 Note that the keys below (except for @kbd{R}) are not used in Vi.
Dave Love <fx@gnu.org>
parents:
diff changeset
446
Dave Love <fx@gnu.org>
parents:
diff changeset
447 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
448 @item C-a
Dave Love <fx@gnu.org>
parents:
diff changeset
449 @kindex 001 @kbd{C-a} (@code{vip-beginning-of-line})
Dave Love <fx@gnu.org>
parents:
diff changeset
450 Move point to the beginning of line.
Dave Love <fx@gnu.org>
parents:
diff changeset
451 @item C-n
Dave Love <fx@gnu.org>
parents:
diff changeset
452 @kindex 016 @kbd{C-n} (@code{vip-next-window})
Dave Love <fx@gnu.org>
parents:
diff changeset
453 If you have two or more windows in the screen, this key will move point to
Dave Love <fx@gnu.org>
parents:
diff changeset
454 the next window.
Dave Love <fx@gnu.org>
parents:
diff changeset
455 @item C-o
Dave Love <fx@gnu.org>
parents:
diff changeset
456 @kindex 017 @kbd{C-o} (@code{vip-open-line-at-point})
Dave Love <fx@gnu.org>
parents:
diff changeset
457 Insert a newline and leave point before it, and then enter insert mode.
Dave Love <fx@gnu.org>
parents:
diff changeset
458 @item C-r
Dave Love <fx@gnu.org>
parents:
diff changeset
459 @kindex 022 @kbd{C-r} (@code{isearch-backward})
Dave Love <fx@gnu.org>
parents:
diff changeset
460 Backward incremental search.
Dave Love <fx@gnu.org>
parents:
diff changeset
461 @item C-s
Dave Love <fx@gnu.org>
parents:
diff changeset
462 @kindex 023 @kbd{C-s} (@code{isearch-forward})
Dave Love <fx@gnu.org>
parents:
diff changeset
463 Forward incremental search.
Dave Love <fx@gnu.org>
parents:
diff changeset
464 @item C-c
Dave Love <fx@gnu.org>
parents:
diff changeset
465 @itemx C-x
Dave Love <fx@gnu.org>
parents:
diff changeset
466 @itemx @key{ESC}
Dave Love <fx@gnu.org>
parents:
diff changeset
467 @kindex 003 @kbd{C-c} (@code{vip-ctl-c})
Dave Love <fx@gnu.org>
parents:
diff changeset
468 @kindex 0300 @kbd{C-x} (@code{vip-ctl-x})
Dave Love <fx@gnu.org>
parents:
diff changeset
469 @kindex 033 @kbd{ESC} (@code{vip-ESC})
Dave Love <fx@gnu.org>
parents:
diff changeset
470 These keys will exit from vi mode and return to emacs mode temporarily. If
Dave Love <fx@gnu.org>
parents:
diff changeset
471 you hit one of these keys, Emacs will be in emacs mode and will believe
Dave Love <fx@gnu.org>
parents:
diff changeset
472 that you hit that key in emacs mode. For example, if you hit @kbd{C-x}
Dave Love <fx@gnu.org>
parents:
diff changeset
473 followed by @kbd{2}, then the current window will be split into 2 and you
Dave Love <fx@gnu.org>
parents:
diff changeset
474 will be in vi mode again.
Dave Love <fx@gnu.org>
parents:
diff changeset
475 @item \
Dave Love <fx@gnu.org>
parents:
diff changeset
476 @kindex 134 @kbd{\} (@code{vip-escape-to-emacs})
Dave Love <fx@gnu.org>
parents:
diff changeset
477 Escape to emacs mode. Hitting @kbd{\} will take you to emacs mode, and you
Dave Love <fx@gnu.org>
parents:
diff changeset
478 can execute a single Emacs command. After executing the Emacs command you
Dave Love <fx@gnu.org>
parents:
diff changeset
479 will be in vi mode again. You can give a count before typing @kbd{\}.
Dave Love <fx@gnu.org>
parents:
diff changeset
480 Thus @kbd{5 \ *}, as well as @kbd{\ C-u 5 *}, will insert @samp{*****}
Dave Love <fx@gnu.org>
parents:
diff changeset
481 before point. Similarly @kbd{1 0 \ C-p} will move the point 10 lines above
Dave Love <fx@gnu.org>
parents:
diff changeset
482 the current line.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
483 @item K
Dave Love <fx@gnu.org>
parents:
diff changeset
484 @kindex 113 @kbd{K} (@code{vip-kill-buffer})
Dave Love <fx@gnu.org>
parents:
diff changeset
485 Kill current buffer if it is not modified. Useful when you selected a
Dave Love <fx@gnu.org>
parents:
diff changeset
486 buffer which you did not want.
Dave Love <fx@gnu.org>
parents:
diff changeset
487 @item Q
Dave Love <fx@gnu.org>
parents:
diff changeset
488 @itemx R
Dave Love <fx@gnu.org>
parents:
diff changeset
489 @kindex 121 @kbd{Q} (@code{vip-query-replace})
Dave Love <fx@gnu.org>
parents:
diff changeset
490 @kindex 122 @kbd{R} (@code{vip-replace-string})
Dave Love <fx@gnu.org>
parents:
diff changeset
491 @kbd{Q} is for query replace and @kbd{R} is for replace. By default,
Dave Love <fx@gnu.org>
parents:
diff changeset
492 string to be replaced are treated literally. If you wish to do a regular
Dave Love <fx@gnu.org>
parents:
diff changeset
493 expression replace, first do replace with empty string as the string to be
Dave Love <fx@gnu.org>
parents:
diff changeset
494 replaced. In this way, you can toggle between vanilla and regular
Dave Love <fx@gnu.org>
parents:
diff changeset
495 expression replacement.
Dave Love <fx@gnu.org>
parents:
diff changeset
496 @item v
Dave Love <fx@gnu.org>
parents:
diff changeset
497 @itemx V
Dave Love <fx@gnu.org>
parents:
diff changeset
498 @kindex 166 @kbd{v} (@code{vip-find-file})
Dave Love <fx@gnu.org>
parents:
diff changeset
499 @kindex 126 @kbd{V} (@code{vip-find-file-other-window})
Dave Love <fx@gnu.org>
parents:
diff changeset
500 These keys are used to Visit files. @kbd{v} will switch to a buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
501 visiting file whose name can be entered in the minibuffer. @kbd{V} is
Dave Love <fx@gnu.org>
parents:
diff changeset
502 similar, but will use window different from the current window.
Dave Love <fx@gnu.org>
parents:
diff changeset
503 @item #
Dave Love <fx@gnu.org>
parents:
diff changeset
504 @kindex 0430 @kbd{#} (@code{vip-command-argument})
Dave Love <fx@gnu.org>
parents:
diff changeset
505 If followed by a certain character @var{ch}, it becomes an operator whose
Dave Love <fx@gnu.org>
parents:
diff changeset
506 argument is the region determined by the motion command that follows.
Dave Love <fx@gnu.org>
parents:
diff changeset
507 Currently, @var{ch} can be one of @kbd{c}, @kbd{C}, @kbd{g}, @kbd{q} and
Dave Love <fx@gnu.org>
parents:
diff changeset
508 @kbd{s}.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
509 @item # c
Dave Love <fx@gnu.org>
parents:
diff changeset
510 @kindex 0432 @kbd{# c} (@code{downcase-region})
Dave Love <fx@gnu.org>
parents:
diff changeset
511 Change upper-case characters in the region to lower case
Dave Love <fx@gnu.org>
parents:
diff changeset
512 (@code{downcase-region}).
Dave Love <fx@gnu.org>
parents:
diff changeset
513 @item # C
Dave Love <fx@gnu.org>
parents:
diff changeset
514 @kindex 0431 @kbd{# C} (@code{upcase-region})
Dave Love <fx@gnu.org>
parents:
diff changeset
515 Change lower-case characters in the region to upper case. For instance,
Dave Love <fx@gnu.org>
parents:
diff changeset
516 @kbd{# C 3 w} will capitalize 3 words from the current point
Dave Love <fx@gnu.org>
parents:
diff changeset
517 (@code{upcase-region}).
Dave Love <fx@gnu.org>
parents:
diff changeset
518 @item # g
Dave Love <fx@gnu.org>
parents:
diff changeset
519 @kindex 0432 @kbd{# g} (@code{vip-global-execute})
Dave Love <fx@gnu.org>
parents:
diff changeset
520 Execute last keyboard macro for each line in the region
Dave Love <fx@gnu.org>
parents:
diff changeset
521 (@code{vip-global-execute}).@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
522 @item # q
Dave Love <fx@gnu.org>
parents:
diff changeset
523 @kindex 0432 @kbd{# q} (@code{vip-quote-region})
Dave Love <fx@gnu.org>
parents:
diff changeset
524 Insert specified string at the beginning of each line in the region
Dave Love <fx@gnu.org>
parents:
diff changeset
525 (@code{vip-quote-region}).
Dave Love <fx@gnu.org>
parents:
diff changeset
526 @item # s
Dave Love <fx@gnu.org>
parents:
diff changeset
527 @kindex 0432 @kbd{# s} (@code{spell-region})
Dave Love <fx@gnu.org>
parents:
diff changeset
528 Check spelling of words in the region (@code{spell-region}).
Dave Love <fx@gnu.org>
parents:
diff changeset
529 @item *
Dave Love <fx@gnu.org>
parents:
diff changeset
530 @kindex 052 @kbd{*} (@code{vip-call-last-kbd-macro})
Dave Love <fx@gnu.org>
parents:
diff changeset
531 Call last keyboard macro.
Dave Love <fx@gnu.org>
parents:
diff changeset
532 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
533
Dave Love <fx@gnu.org>
parents:
diff changeset
534 @node New Bindings, Window Commands, New Commands, Differences from Vi
Dave Love <fx@gnu.org>
parents:
diff changeset
535 @subsection New Key Bindings
Dave Love <fx@gnu.org>
parents:
diff changeset
536
Dave Love <fx@gnu.org>
parents:
diff changeset
537 In VIP the meanings of some keys are entirely different from Vi. These key
Dave Love <fx@gnu.org>
parents:
diff changeset
538 bindings are done deliberately in the hope that editing under Emacs will
Dave Love <fx@gnu.org>
parents:
diff changeset
539 become easier. It is however possible to rebind these keys to functions
Dave Love <fx@gnu.org>
parents:
diff changeset
540 which behave similarly as in Vi. @xref{Customizing Key Bindings}, for
Dave Love <fx@gnu.org>
parents:
diff changeset
541 details.
Dave Love <fx@gnu.org>
parents:
diff changeset
542
Dave Love <fx@gnu.org>
parents:
diff changeset
543 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
544 @item C-g
Dave Love <fx@gnu.org>
parents:
diff changeset
545 @itemx g
Dave Love <fx@gnu.org>
parents:
diff changeset
546 @kindex 007 @kbd{C-g} (@code{vip-keyboard-quit})
Dave Love <fx@gnu.org>
parents:
diff changeset
547 @kindex 147 @kbd{g} (@code{vip-info-on-file})
Dave Love <fx@gnu.org>
parents:
diff changeset
548 In Vi, @kbd{C-g} is used to get information about the file associated to
Dave Love <fx@gnu.org>
parents:
diff changeset
549 the current buffer. Here, @kbd{g} will do that, and @kbd{C-g} is
Dave Love <fx@gnu.org>
parents:
diff changeset
550 used to abort a command (this is for compatibility with emacs mode.)
Dave Love <fx@gnu.org>
parents:
diff changeset
551 @item SPC
Dave Love <fx@gnu.org>
parents:
diff changeset
552 @itemx @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
553 @kindex 040 @kbd{SPC} (@code{vip-scroll})
Dave Love <fx@gnu.org>
parents:
diff changeset
554 @kindex 015 @kbd{RET} (@code{vip-scroll-back})
Dave Love <fx@gnu.org>
parents:
diff changeset
555 Now these keys will scroll up and down the text of current window.
Dave Love <fx@gnu.org>
parents:
diff changeset
556 Convenient for viewing the text.
Dave Love <fx@gnu.org>
parents:
diff changeset
557 @item s
Dave Love <fx@gnu.org>
parents:
diff changeset
558 @itemx S
Dave Love <fx@gnu.org>
parents:
diff changeset
559 @kindex 163 @kbd{s} (@code{vip-switch-to-buffer})
Dave Love <fx@gnu.org>
parents:
diff changeset
560 @kindex 123 @kbd{S} (@code{vip-switch-to-buffer-other-window})
Dave Love <fx@gnu.org>
parents:
diff changeset
561 They are used to switch to a specified buffer. Useful for switching to
Dave Love <fx@gnu.org>
parents:
diff changeset
562 already existing buffer since buffer name completion is provided. Also
Dave Love <fx@gnu.org>
parents:
diff changeset
563 a default buffer will be given as part of the prompt, to which you can
Dave Love <fx@gnu.org>
parents:
diff changeset
564 switch by just typing @key{RET} key. @kbd{s} is used to select buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
565 in the current window, while @kbd{S} selects buffer in another window.
Dave Love <fx@gnu.org>
parents:
diff changeset
566 @item C
Dave Love <fx@gnu.org>
parents:
diff changeset
567 @itemx X
Dave Love <fx@gnu.org>
parents:
diff changeset
568 @kindex 103 @kbd{C} (@code{vip-ctl-c-equivalent})
Dave Love <fx@gnu.org>
parents:
diff changeset
569 @kindex 1300 @kbd{X} (@code{vip-ctl-x-equivalent})
Dave Love <fx@gnu.org>
parents:
diff changeset
570 These keys will exit from vi mode and return to emacs mode temporarily.
Dave Love <fx@gnu.org>
parents:
diff changeset
571 If you type @kbd{C} (@kbd{X}), Emacs will be in emacs mode and will believe
Dave Love <fx@gnu.org>
parents:
diff changeset
572 that you have typed @kbd{C-c} (@kbd{C-x}, resp.) in emacs mode. Moreover,
Dave Love <fx@gnu.org>
parents:
diff changeset
573 if the following character you type is an upper-case letter, then Emacs
Dave Love <fx@gnu.org>
parents:
diff changeset
574 will believe that you have typed the corresponding control character.
Dave Love <fx@gnu.org>
parents:
diff changeset
575 You will be in vi mode again after the command is executed. For example,
Dave Love <fx@gnu.org>
parents:
diff changeset
576 typing @kbd{X S} in vi mode is the same as typing @kbd{C-x C-s} in emacs
Dave Love <fx@gnu.org>
parents:
diff changeset
577 mode. You get the same effect by typing @kbd{C-x C-s} in vi mode, but
Dave Love <fx@gnu.org>
parents:
diff changeset
578 the idea here is that you can execute useful Emacs commands without typing
Dave Love <fx@gnu.org>
parents:
diff changeset
579 control characters. For example, if you hit @kbd{X} (or @kbd{C-x}) followed
Dave Love <fx@gnu.org>
parents:
diff changeset
580 by @kbd{2}, then the current window will be split into 2 and you will be in
Dave Love <fx@gnu.org>
parents:
diff changeset
581 vi mode again.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
582 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
583
Dave Love <fx@gnu.org>
parents:
diff changeset
584 In addition to these, @code{ctl-x-map} is slightly modified:
Dave Love <fx@gnu.org>
parents:
diff changeset
585
Dave Love <fx@gnu.org>
parents:
diff changeset
586 @kindex 1301 @kbd{X 3} (@code{vip-buffer-in-two-windows})
Dave Love <fx@gnu.org>
parents:
diff changeset
587
Dave Love <fx@gnu.org>
parents:
diff changeset
588 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
589 @item X 3
Dave Love <fx@gnu.org>
parents:
diff changeset
590 @itemx C-x 3
Dave Love <fx@gnu.org>
parents:
diff changeset
591 This is equivalent to @kbd{C-x 1 C-x 2} (1 + 2 = 3).
Dave Love <fx@gnu.org>
parents:
diff changeset
592 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
593
Dave Love <fx@gnu.org>
parents:
diff changeset
594 @node Window Commands, Buffer Commands, New Bindings, Differences from Vi
Dave Love <fx@gnu.org>
parents:
diff changeset
595 @subsection Window Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
596
Dave Love <fx@gnu.org>
parents:
diff changeset
597 In this and following subsections, we give a summary of key bindings for
Dave Love <fx@gnu.org>
parents:
diff changeset
598 basic functions related to windows, buffers and files.
Dave Love <fx@gnu.org>
parents:
diff changeset
599
Dave Love <fx@gnu.org>
parents:
diff changeset
600 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
601 @item C-n
Dave Love <fx@gnu.org>
parents:
diff changeset
602 @kindex 016 @kbd{C-n} (@code{vip-next-window})
Dave Love <fx@gnu.org>
parents:
diff changeset
603 Switch to next window.
Dave Love <fx@gnu.org>
parents:
diff changeset
604 @item X 1
Dave Love <fx@gnu.org>
parents:
diff changeset
605 @itemx C-x 1
Dave Love <fx@gnu.org>
parents:
diff changeset
606 @kindex 1301 @kbd{X 1} (@code{delete-other-windows})
Dave Love <fx@gnu.org>
parents:
diff changeset
607 Delete other windows.
Dave Love <fx@gnu.org>
parents:
diff changeset
608 @item X 2
Dave Love <fx@gnu.org>
parents:
diff changeset
609 @itemx C-x 2
Dave Love <fx@gnu.org>
parents:
diff changeset
610 @kindex 1301 @kbd{X 2} (@code{split-window-vertically})
Dave Love <fx@gnu.org>
parents:
diff changeset
611 Split current window into two windows.
Dave Love <fx@gnu.org>
parents:
diff changeset
612 @item X 3
Dave Love <fx@gnu.org>
parents:
diff changeset
613 @itemx C-x 3
Dave Love <fx@gnu.org>
parents:
diff changeset
614 @kindex 1301 @kbd{X 3} (@code{vip-buffer-in-two-windows})
Dave Love <fx@gnu.org>
parents:
diff changeset
615 Show current buffer in two windows.
Dave Love <fx@gnu.org>
parents:
diff changeset
616 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
617
Dave Love <fx@gnu.org>
parents:
diff changeset
618 @node Buffer Commands, File Commands, Window Commands, Differences from Vi
Dave Love <fx@gnu.org>
parents:
diff changeset
619 @subsection Buffer Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
620
Dave Love <fx@gnu.org>
parents:
diff changeset
621 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
622 @item s
Dave Love <fx@gnu.org>
parents:
diff changeset
623 @kindex 163 @kbd{s} (@code{vip-switch-to-buffer})
Dave Love <fx@gnu.org>
parents:
diff changeset
624 Switch to the specified buffer in the current window
Dave Love <fx@gnu.org>
parents:
diff changeset
625 (@code{vip-switch-to-buffer}).
Dave Love <fx@gnu.org>
parents:
diff changeset
626 @item S
Dave Love <fx@gnu.org>
parents:
diff changeset
627 @kindex 123 @kbd{S} (@code{vip-switch-to-buffer-other-window})
Dave Love <fx@gnu.org>
parents:
diff changeset
628 Switch to the specified buffer in another window
Dave Love <fx@gnu.org>
parents:
diff changeset
629 (@code{vip-switch-to-buffer-other-window}).
Dave Love <fx@gnu.org>
parents:
diff changeset
630 @item K
Dave Love <fx@gnu.org>
parents:
diff changeset
631 @kindex 113 @kbd{K} (@code{vip-kill-buffer})
Dave Love <fx@gnu.org>
parents:
diff changeset
632 Kill the current buffer if it is not modified.
Dave Love <fx@gnu.org>
parents:
diff changeset
633 @item X S
Dave Love <fx@gnu.org>
parents:
diff changeset
634 @itemx C-x C-s
Dave Love <fx@gnu.org>
parents:
diff changeset
635 @kindex 1302 @kbd{X S} (@code{save-buffer})
Dave Love <fx@gnu.org>
parents:
diff changeset
636 Save the current buffer in the file associated to the buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
637 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
638
Dave Love <fx@gnu.org>
parents:
diff changeset
639 @node File Commands, Misc Commands, Buffer Commands, Differences from Vi
Dave Love <fx@gnu.org>
parents:
diff changeset
640 @subsection File Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
641
Dave Love <fx@gnu.org>
parents:
diff changeset
642 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
643 @item v
Dave Love <fx@gnu.org>
parents:
diff changeset
644 @kindex 166 @kbd{v} (@code{vip-find-file})
Dave Love <fx@gnu.org>
parents:
diff changeset
645 Visit specified file in the current window.
Dave Love <fx@gnu.org>
parents:
diff changeset
646 @item V
Dave Love <fx@gnu.org>
parents:
diff changeset
647 @kindex 126 @kbd{V} (@code{vip-find-file-other-window})
Dave Love <fx@gnu.org>
parents:
diff changeset
648 Visit specified file in another window.
Dave Love <fx@gnu.org>
parents:
diff changeset
649 @item X W
Dave Love <fx@gnu.org>
parents:
diff changeset
650 @itemx C-x C-w
Dave Love <fx@gnu.org>
parents:
diff changeset
651 @kindex 1302 @kbd{X W} (@code{write-file})
Dave Love <fx@gnu.org>
parents:
diff changeset
652 Write current buffer into the specified file.
Dave Love <fx@gnu.org>
parents:
diff changeset
653 @item X I
Dave Love <fx@gnu.org>
parents:
diff changeset
654 @itemx C-x C-i
Dave Love <fx@gnu.org>
parents:
diff changeset
655 @kindex 1302 @kbd{X I} (@code{insert-file})
Dave Love <fx@gnu.org>
parents:
diff changeset
656
Dave Love <fx@gnu.org>
parents:
diff changeset
657 Insert specified file at point.
Dave Love <fx@gnu.org>
parents:
diff changeset
658 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
659
Dave Love <fx@gnu.org>
parents:
diff changeset
660 @node Misc Commands, Vi Commands, File Commands, Differences from Vi
Dave Love <fx@gnu.org>
parents:
diff changeset
661 @subsection Miscellaneous Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
662
Dave Love <fx@gnu.org>
parents:
diff changeset
663 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
664 @item X (
Dave Love <fx@gnu.org>
parents:
diff changeset
665 @itemx C-x (
Dave Love <fx@gnu.org>
parents:
diff changeset
666 @kindex 1301 @kbd{X (} (@code{start-kbd-macro})
Dave Love <fx@gnu.org>
parents:
diff changeset
667 Start remembering keyboard macro.
Dave Love <fx@gnu.org>
parents:
diff changeset
668 @item X )
Dave Love <fx@gnu.org>
parents:
diff changeset
669 @itemx C-x )
Dave Love <fx@gnu.org>
parents:
diff changeset
670 @kindex 1301 @kbd{X )} (@code{end-kbd-macro})
Dave Love <fx@gnu.org>
parents:
diff changeset
671 Finish remembering keyboard macro.
Dave Love <fx@gnu.org>
parents:
diff changeset
672 @item *
Dave Love <fx@gnu.org>
parents:
diff changeset
673 @kindex 052 @kbd{*} (@code{vip-call-last-kbd-macro})
Dave Love <fx@gnu.org>
parents:
diff changeset
674 Call last remembered keyboard macro.
Dave Love <fx@gnu.org>
parents:
diff changeset
675 @item X Z
Dave Love <fx@gnu.org>
parents:
diff changeset
676 @itemx C-x C-z
Dave Love <fx@gnu.org>
parents:
diff changeset
677 @kindex 1302 @kbd{X Z} (@code{suspend-emacs})
Dave Love <fx@gnu.org>
parents:
diff changeset
678 Suspend Emacs.
Dave Love <fx@gnu.org>
parents:
diff changeset
679 @item Z Z
Dave Love <fx@gnu.org>
parents:
diff changeset
680 Exit Emacs.
Dave Love <fx@gnu.org>
parents:
diff changeset
681 @itemx Q
Dave Love <fx@gnu.org>
parents:
diff changeset
682 Query replace.
Dave Love <fx@gnu.org>
parents:
diff changeset
683 @itemx R
Dave Love <fx@gnu.org>
parents:
diff changeset
684 Replace.
Dave Love <fx@gnu.org>
parents:
diff changeset
685 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
686
Dave Love <fx@gnu.org>
parents:
diff changeset
687 @node Vi Commands, Numeric Arguments, Misc Commands, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
688 @chapter Vi Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
689
Dave Love <fx@gnu.org>
parents:
diff changeset
690 This chapter describes Vi commands other than Ex commands implemented in
Dave Love <fx@gnu.org>
parents:
diff changeset
691 VIP. Except for the last section which discusses insert mode, all the
Dave Love <fx@gnu.org>
parents:
diff changeset
692 commands described in this chapter are to be used in vi mode.
Dave Love <fx@gnu.org>
parents:
diff changeset
693
Dave Love <fx@gnu.org>
parents:
diff changeset
694 @menu
Dave Love <fx@gnu.org>
parents:
diff changeset
695 * Numeric Arguments:: Many commands accept numeric arguments
Dave Love <fx@gnu.org>
parents:
diff changeset
696 * Important Keys:: Some very important keys.
Dave Love <fx@gnu.org>
parents:
diff changeset
697 * Buffers and Windows:: Commands for handling buffers and windows.
Dave Love <fx@gnu.org>
parents:
diff changeset
698 * Files:: Commands for handling files.
Dave Love <fx@gnu.org>
parents:
diff changeset
699 * Viewing the Buffer:: How you can view the current buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
700 * Mark Commands:: Marking positions in a buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
701 * Motion Commands:: Commands for moving point.
Dave Love <fx@gnu.org>
parents:
diff changeset
702 * Searching and Replacing:: Commands for searching and replacing.
Dave Love <fx@gnu.org>
parents:
diff changeset
703 * Modifying Commands:: Commands for modifying the buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
704 * Other Vi Commands:: Miscellaneous Commands.
Dave Love <fx@gnu.org>
parents:
diff changeset
705 * Commands in Insert Mode:: Commands for entering insert mode.
Dave Love <fx@gnu.org>
parents:
diff changeset
706 @end menu
Dave Love <fx@gnu.org>
parents:
diff changeset
707
Dave Love <fx@gnu.org>
parents:
diff changeset
708 @node Numeric Arguments, Important Keys, Vi Commands, Vi Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
709 @section Numeric Arguments
Dave Love <fx@gnu.org>
parents:
diff changeset
710
Dave Love <fx@gnu.org>
parents:
diff changeset
711 @cindex numeric arguments
Dave Love <fx@gnu.org>
parents:
diff changeset
712 @cindex count
Dave Love <fx@gnu.org>
parents:
diff changeset
713 @kindex 061 @kbd{1} (numeric argument)
Dave Love <fx@gnu.org>
parents:
diff changeset
714 @kindex 062 @kbd{2} (numeric argument)
Dave Love <fx@gnu.org>
parents:
diff changeset
715 @kindex 063 @kbd{3} (numeric argument)
Dave Love <fx@gnu.org>
parents:
diff changeset
716 @kindex 064 @kbd{4} (numeric argument)
Dave Love <fx@gnu.org>
parents:
diff changeset
717 @kindex 065 @kbd{5} (numeric argument)
Dave Love <fx@gnu.org>
parents:
diff changeset
718 @kindex 066 @kbd{6} (numeric argument)
Dave Love <fx@gnu.org>
parents:
diff changeset
719 @kindex 067 @kbd{7} (numeric argument)
Dave Love <fx@gnu.org>
parents:
diff changeset
720 @kindex 068 @kbd{8} (numeric argument)
Dave Love <fx@gnu.org>
parents:
diff changeset
721 @kindex 069 @kbd{9} (numeric argument)
Dave Love <fx@gnu.org>
parents:
diff changeset
722
Dave Love <fx@gnu.org>
parents:
diff changeset
723 Most Vi commands accept a @dfn{numeric argument} which can be supplied as
Dave Love <fx@gnu.org>
parents:
diff changeset
724 a prefix to the commands. A numeric argument is also called a @dfn{count}.
Dave Love <fx@gnu.org>
parents:
diff changeset
725 In many cases, if a count is given, the command is executed that many times.
Dave Love <fx@gnu.org>
parents:
diff changeset
726 For instance, @kbd{5 d d} deletes 5 lines while simple @kbd{d d} deletes a
Dave Love <fx@gnu.org>
parents:
diff changeset
727 line. In this manual the metavariable @var{n} will denote a count.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
728
Dave Love <fx@gnu.org>
parents:
diff changeset
729 @node Important Keys, Buffers and Windows, Numeric Arguments, Vi Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
730 @section Important Keys
Dave Love <fx@gnu.org>
parents:
diff changeset
731
Dave Love <fx@gnu.org>
parents:
diff changeset
732 The keys @kbd{C-g} and @kbd{C-l} are unique in that their associated
Dave Love <fx@gnu.org>
parents:
diff changeset
733 functions are the same in any of emacs, vi and insert mode.
Dave Love <fx@gnu.org>
parents:
diff changeset
734
Dave Love <fx@gnu.org>
parents:
diff changeset
735 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
736 @item C-g
Dave Love <fx@gnu.org>
parents:
diff changeset
737 @kindex 007 @kbd{C-g} (@code{vip-keyboard-quit})
Dave Love <fx@gnu.org>
parents:
diff changeset
738 Quit. Cancel running or partially typed command (@code{keyboard-quit}).
Dave Love <fx@gnu.org>
parents:
diff changeset
739 @item C-l
Dave Love <fx@gnu.org>
parents:
diff changeset
740 @kindex 014 @kbd{C-l} (@code{recenter})
Dave Love <fx@gnu.org>
parents:
diff changeset
741 Clear the screen and reprint everything (@code{recenter}).
Dave Love <fx@gnu.org>
parents:
diff changeset
742 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
743
Dave Love <fx@gnu.org>
parents:
diff changeset
744 In Emacs many commands are bound to the key strokes that start with
Dave Love <fx@gnu.org>
parents:
diff changeset
745 @kbd{C-x}, @kbd{C-c} and @key{ESC}. These commands can be
Dave Love <fx@gnu.org>
parents:
diff changeset
746 accessed from vi mode as easily as from emacs mode.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
747
Dave Love <fx@gnu.org>
parents:
diff changeset
748 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
749 @item C-x
Dave Love <fx@gnu.org>
parents:
diff changeset
750 @itemx C-c
Dave Love <fx@gnu.org>
parents:
diff changeset
751 @itemx @key{ESC}
Dave Love <fx@gnu.org>
parents:
diff changeset
752 @kindex 003 @kbd{C-c} (@code{vip-ctl-c})
Dave Love <fx@gnu.org>
parents:
diff changeset
753 @kindex 0300 @kbd{C-x} (@code{vip-ctl-x})
Dave Love <fx@gnu.org>
parents:
diff changeset
754 @kindex 033 @kbd{ESC} (@code{vip-ESC})
Dave Love <fx@gnu.org>
parents:
diff changeset
755 Typing one of these keys have the same effect as typing it in emacs mode.
Dave Love <fx@gnu.org>
parents:
diff changeset
756 Appropriate command will be executed according as the keys you type after
Dave Love <fx@gnu.org>
parents:
diff changeset
757 it. You will be in vi mode again after the execution of the command.
Dave Love <fx@gnu.org>
parents:
diff changeset
758 For instance, if you type @kbd{@key{ESC} <} (in vi mode) then the cursor will
Dave Love <fx@gnu.org>
parents:
diff changeset
759 move to the beginning of the buffer and you will still be in vi mode.
Dave Love <fx@gnu.org>
parents:
diff changeset
760 @item C
Dave Love <fx@gnu.org>
parents:
diff changeset
761 @itemx X
Dave Love <fx@gnu.org>
parents:
diff changeset
762 @kindex 103 @kbd{C} (@code{vip-ctl-c-equivalent})
Dave Love <fx@gnu.org>
parents:
diff changeset
763 @kindex 1300 @kbd{X} (@code{vip-ctl-x-equivalent})
Dave Love <fx@gnu.org>
parents:
diff changeset
764 Typing one of these keys have the effect of typing the corresponding
Dave Love <fx@gnu.org>
parents:
diff changeset
765 control character in emacs mode. Moreover, if you type an upper-case
Dave Love <fx@gnu.org>
parents:
diff changeset
766 character following it, that character will also be translated to the
Dave Love <fx@gnu.org>
parents:
diff changeset
767 corresponding control character. Thus typing @kbd{X W} in vi mode is the
Dave Love <fx@gnu.org>
parents:
diff changeset
768 same as typing @kbd{C-x C-w} in emacs mode. You will be in vi mode again
Dave Love <fx@gnu.org>
parents:
diff changeset
769 after the execution of a command.
Dave Love <fx@gnu.org>
parents:
diff changeset
770 @item \
Dave Love <fx@gnu.org>
parents:
diff changeset
771 @kindex 134 @kbd{\} (@code{vip-escape-to-emacs})
Dave Love <fx@gnu.org>
parents:
diff changeset
772 Escape to emacs mode. Hitting the @kbd{\} key will take you to emacs mode,
Dave Love <fx@gnu.org>
parents:
diff changeset
773 and you can execute a single Emacs command. After executing the
Dave Love <fx@gnu.org>
parents:
diff changeset
774 Emacs command you will be in vi mode again. You can give a count before
Dave Love <fx@gnu.org>
parents:
diff changeset
775 typing @kbd{\}. Thus @kbd{5 \ +}, as well as @kbd{\ C-u 5 +}, will insert
Dave Love <fx@gnu.org>
parents:
diff changeset
776 @samp{+++++} before point.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
777 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
778
Dave Love <fx@gnu.org>
parents:
diff changeset
779 @node Buffers and Windows, Files, Important Keys, Vi Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
780 @section Buffers and Windows
Dave Love <fx@gnu.org>
parents:
diff changeset
781
Dave Love <fx@gnu.org>
parents:
diff changeset
782 @cindex buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
783 @cindex selected buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
784 @cindex current buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
785
Dave Love <fx@gnu.org>
parents:
diff changeset
786 In Emacs the text you edit is stored in a @dfn{buffer}.
37987
39cfe73648c8 selected buffer <=> current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 37405
diff changeset
787 See GNU Emacs Manual, for details. There is always one @dfn{current}
39cfe73648c8 selected buffer <=> current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 37405
diff changeset
788 buffer, also called the @dfn{selected buffer}.@refill
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
789
Dave Love <fx@gnu.org>
parents:
diff changeset
790 @cindex window
Dave Love <fx@gnu.org>
parents:
diff changeset
791 @cindex modified (buffer)
Dave Love <fx@gnu.org>
parents:
diff changeset
792
Dave Love <fx@gnu.org>
parents:
diff changeset
793 You can see the contents of buffers through @dfn{windows} created by Emacs.
Dave Love <fx@gnu.org>
parents:
diff changeset
794 When you have multiple windows on the screen only one of them is selected.
Dave Love <fx@gnu.org>
parents:
diff changeset
795 Each buffer has a unique name, and each window has a mode line which shows
Dave Love <fx@gnu.org>
parents:
diff changeset
796 the name of the buffer associated with the window and other information
Dave Love <fx@gnu.org>
parents:
diff changeset
797 about the status of the buffer. You can change the format of the mode
Dave Love <fx@gnu.org>
parents:
diff changeset
798 line, but normally if you see @samp{**} at the beginning of a mode line it
Dave Love <fx@gnu.org>
parents:
diff changeset
799 means that the buffer is @dfn{modified}. If you write out the content of
Dave Love <fx@gnu.org>
parents:
diff changeset
800 the buffer to a file, then the buffer will become not modified. Also if
Dave Love <fx@gnu.org>
parents:
diff changeset
801 you see @samp{%%} at the beginning of the mode line, it means that the file
Dave Love <fx@gnu.org>
parents:
diff changeset
802 associated with the buffer is write protected.
Dave Love <fx@gnu.org>
parents:
diff changeset
803
Dave Love <fx@gnu.org>
parents:
diff changeset
804 We have the following commands related to windows and buffers.
Dave Love <fx@gnu.org>
parents:
diff changeset
805
Dave Love <fx@gnu.org>
parents:
diff changeset
806 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
807 @item C-n
Dave Love <fx@gnu.org>
parents:
diff changeset
808 @kindex 016 @kbd{C-n} (@code{vip-next-window})
Dave Love <fx@gnu.org>
parents:
diff changeset
809 Move cursor to the next-window (@code{vip-next-window}).
Dave Love <fx@gnu.org>
parents:
diff changeset
810 @item X 1
Dave Love <fx@gnu.org>
parents:
diff changeset
811 @kindex 1301 @kbd{X 1} (@code{delete-other-windows})
Dave Love <fx@gnu.org>
parents:
diff changeset
812 Delete other windows and make the selected window fill the screen
Dave Love <fx@gnu.org>
parents:
diff changeset
813 @*(@code{delete-other-windows}).
Dave Love <fx@gnu.org>
parents:
diff changeset
814 @item X 2
Dave Love <fx@gnu.org>
parents:
diff changeset
815 @kindex 1301 @kbd{X 2} (@code{split-window-vertically})
Dave Love <fx@gnu.org>
parents:
diff changeset
816 Split current window into two windows (@code{split-window-vertically}).
Dave Love <fx@gnu.org>
parents:
diff changeset
817 @item X 3
Dave Love <fx@gnu.org>
parents:
diff changeset
818 @kindex 1301 @kbd{X 3} (@code{vip-buffer-in-two-windows})
Dave Love <fx@gnu.org>
parents:
diff changeset
819 Show current buffer in two windows.
Dave Love <fx@gnu.org>
parents:
diff changeset
820 @item s @var{buffer} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
821 @kindex 163 @kbd{s} (@code{vip-switch-to-buffer})
Dave Love <fx@gnu.org>
parents:
diff changeset
822 Select or create a buffer named @var{buffer} (@code{vip-switch-to-buffer}).
Dave Love <fx@gnu.org>
parents:
diff changeset
823 @item S @var{buffer} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
824 @kindex 123 @kbd{S} (@code{vip-switch-to-buffer-other-window})
Dave Love <fx@gnu.org>
parents:
diff changeset
825 Similar but select a buffer named @var{buffer} in another window
Dave Love <fx@gnu.org>
parents:
diff changeset
826 @*(@code{vip-switch-to-buffer-other-window}).
Dave Love <fx@gnu.org>
parents:
diff changeset
827 @item K
Dave Love <fx@gnu.org>
parents:
diff changeset
828 @kindex 113 @kbd{K} (@code{vip-kill-buffer})
Dave Love <fx@gnu.org>
parents:
diff changeset
829 Kill the current buffer if it is not modified or if it is not associated
Dave Love <fx@gnu.org>
parents:
diff changeset
830 with a file @*(@code{vip-kill-buffer}).
Dave Love <fx@gnu.org>
parents:
diff changeset
831 @item X B
Dave Love <fx@gnu.org>
parents:
diff changeset
832 @kindex 1302 @kbd{X B} (@code{list-buffers})
Dave Love <fx@gnu.org>
parents:
diff changeset
833 List the existing buffers (@code{list-buffers}).
Dave Love <fx@gnu.org>
parents:
diff changeset
834 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
835
Dave Love <fx@gnu.org>
parents:
diff changeset
836 @cindex buffer name completion
Dave Love <fx@gnu.org>
parents:
diff changeset
837
Dave Love <fx@gnu.org>
parents:
diff changeset
838 As @dfn{buffer name completion} is provided, you have only to type in
Dave Love <fx@gnu.org>
parents:
diff changeset
839 initial substring of the buffer name which is sufficient to identify it
Dave Love <fx@gnu.org>
parents:
diff changeset
840 among names of existing buffers. After that, if you hit @key{TAB} the rest
Dave Love <fx@gnu.org>
parents:
diff changeset
841 of the buffer name will be supplied by the system, and you can confirm it
Dave Love <fx@gnu.org>
parents:
diff changeset
842 by @key{RET}. The default buffer name to switch to will also be prompted,
Dave Love <fx@gnu.org>
parents:
diff changeset
843 and you can select it by giving a simple @key{RET}. See GNU Emacs Manual
Dave Love <fx@gnu.org>
parents:
diff changeset
844 for details of completion.
Dave Love <fx@gnu.org>
parents:
diff changeset
845
Dave Love <fx@gnu.org>
parents:
diff changeset
846 @node Files, Viewing the Buffer, Buffers and Windows, Vi Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
847 @section Files
Dave Love <fx@gnu.org>
parents:
diff changeset
848
Dave Love <fx@gnu.org>
parents:
diff changeset
849 We have the following commands related to files. They are used to visit,
Dave Love <fx@gnu.org>
parents:
diff changeset
850 save and insert files.
Dave Love <fx@gnu.org>
parents:
diff changeset
851
Dave Love <fx@gnu.org>
parents:
diff changeset
852 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
853 @item v @var{file} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
854 @kindex 166 @kbd{v} (@code{vip-find-file})
Dave Love <fx@gnu.org>
parents:
diff changeset
855 Visit specified file in the current window (@code{vip-find-file}).
Dave Love <fx@gnu.org>
parents:
diff changeset
856 @item V @var{file} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
857 @kindex 126 @kbd{V} (@code{vip-find-file-other-window})
Dave Love <fx@gnu.org>
parents:
diff changeset
858 Visit specified file in another window (@code{vip-find-file-other-window}).
Dave Love <fx@gnu.org>
parents:
diff changeset
859 @item X S
Dave Love <fx@gnu.org>
parents:
diff changeset
860 @kindex 1302 @kbd{X S} (@code{save-buffer})
Dave Love <fx@gnu.org>
parents:
diff changeset
861 Save current buffer to the file associated with the buffer. If no file is
Dave Love <fx@gnu.org>
parents:
diff changeset
862 associated with the buffer, the name of the file to write out the content
Dave Love <fx@gnu.org>
parents:
diff changeset
863 of the buffer will be asked in the minibuffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
864 @item X W @var{file} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
865 @kindex 1302 @kbd{X W} (@code{write-file})
Dave Love <fx@gnu.org>
parents:
diff changeset
866 Write current buffer into a specified file.
Dave Love <fx@gnu.org>
parents:
diff changeset
867 @item X I @var{file} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
868 @kindex 1302 @kbd{X I} (@code{insert-file})
Dave Love <fx@gnu.org>
parents:
diff changeset
869 Insert a specified file at point.
Dave Love <fx@gnu.org>
parents:
diff changeset
870 @item g
Dave Love <fx@gnu.org>
parents:
diff changeset
871 @kindex 147 @kbd{g} (@code{vip-info-on-file})
Dave Love <fx@gnu.org>
parents:
diff changeset
872 Give information on the file associated with the current buffer. Tell you
Dave Love <fx@gnu.org>
parents:
diff changeset
873 the name of the file associated with the buffer, the line number of the
Dave Love <fx@gnu.org>
parents:
diff changeset
874 current point and total line numbers in the buffer. If no file is
Dave Love <fx@gnu.org>
parents:
diff changeset
875 associated with the buffer, this fact will be indicated by the null file
Dave Love <fx@gnu.org>
parents:
diff changeset
876 name @samp{""}.
Dave Love <fx@gnu.org>
parents:
diff changeset
877 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
878
Dave Love <fx@gnu.org>
parents:
diff changeset
879 @cindex visiting (a file)
Dave Love <fx@gnu.org>
parents:
diff changeset
880 @cindex default directory
Dave Love <fx@gnu.org>
parents:
diff changeset
881
Dave Love <fx@gnu.org>
parents:
diff changeset
882 In Emacs, you can edit a file by @dfn{visiting} it. If you wish to visit a
Dave Love <fx@gnu.org>
parents:
diff changeset
883 file in the current window, you can just type @kbd{v}. Emacs maintains the
Dave Love <fx@gnu.org>
parents:
diff changeset
884 @dfn{default directory} which is specific to each buffer. Suppose, for
Dave Love <fx@gnu.org>
parents:
diff changeset
885 instance, that the default directory of the current buffer is
Dave Love <fx@gnu.org>
parents:
diff changeset
886 @file{/usr/masahiko/lisp/}. Then you will get the following prompt in the
Dave Love <fx@gnu.org>
parents:
diff changeset
887 minibuffer.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
888 @example
Dave Love <fx@gnu.org>
parents:
diff changeset
889 visit file: /usr/masahiko/lisp/
Dave Love <fx@gnu.org>
parents:
diff changeset
890 @end example
Dave Love <fx@gnu.org>
parents:
diff changeset
891 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
892 @cindex file name completion
Dave Love <fx@gnu.org>
parents:
diff changeset
893 If you wish to visit, say, @file{vip.el} in this directory, then you can
Dave Love <fx@gnu.org>
parents:
diff changeset
894 just type @samp{vip.el} followed by @key{RET}. If the file @file{vip.el}
Dave Love <fx@gnu.org>
parents:
diff changeset
895 already exists in the directory, Emacs will visit that file, and if not,
Dave Love <fx@gnu.org>
parents:
diff changeset
896 the file will be created. Emacs will use the file name (@file{vip.el}, in
Dave Love <fx@gnu.org>
parents:
diff changeset
897 this case) as the name of the buffer visiting the file. In order to make
Dave Love <fx@gnu.org>
parents:
diff changeset
898 the buffer name unique, Emacs may append @samp{<2>}, @samp{<3>} etc., to
Dave Love <fx@gnu.org>
parents:
diff changeset
899 the buffer name. As the @dfn{file name completion} is provided here, you
Dave Love <fx@gnu.org>
parents:
diff changeset
900 can sometime save typing. For instance, suppose there is only one file in the
Dave Love <fx@gnu.org>
parents:
diff changeset
901 default directory whose name starts with @samp{v}, that is @samp{vip.el}.
Dave Love <fx@gnu.org>
parents:
diff changeset
902 Then if you just type @kbd{v @key{TAB}} then it will be completed to
Dave Love <fx@gnu.org>
parents:
diff changeset
903 @samp{vip.el}. Thus, in this case, you just have to type @kbd{v v @key{TAB}
Dave Love <fx@gnu.org>
parents:
diff changeset
904 @key{RET}} to visit @file{/usr/masahiko/lisp/vip.el}. Continuing the
Dave Love <fx@gnu.org>
parents:
diff changeset
905 example, let us now suppose that you wished to visit the file
Dave Love <fx@gnu.org>
parents:
diff changeset
906 @file{/usr/masahiko/man/vip.texinfo}. Then to the same prompt which you get
Dave Love <fx@gnu.org>
parents:
diff changeset
907 after you typed @kbd{v}, you can enter @samp{/usr/masahiko/man/vip.texinfo} or
Dave Love <fx@gnu.org>
parents:
diff changeset
908 @samp{../man/vip.texinfo} followed by @key{RET}.
Dave Love <fx@gnu.org>
parents:
diff changeset
909
Dave Love <fx@gnu.org>
parents:
diff changeset
910 Use @kbd{V} instead of @kbd{v}, if you wish to visit a file in another
Dave Love <fx@gnu.org>
parents:
diff changeset
911 window.
Dave Love <fx@gnu.org>
parents:
diff changeset
912
Dave Love <fx@gnu.org>
parents:
diff changeset
913 You can verify which file you are editing by typing @kbd{g}. (You can also
Dave Love <fx@gnu.org>
parents:
diff changeset
914 type @kbd{X B} to get nformation on other buffers too.) If you type
Dave Love <fx@gnu.org>
parents:
diff changeset
915 @kbd{g} you will get an information like below in the echo area:@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
916 @example
Dave Love <fx@gnu.org>
parents:
diff changeset
917 "/usr/masahiko/man/vip.texinfo" line 921 of 1949
Dave Love <fx@gnu.org>
parents:
diff changeset
918 @end example
Dave Love <fx@gnu.org>
parents:
diff changeset
919
Dave Love <fx@gnu.org>
parents:
diff changeset
920 After you edited the buffer (@samp{vip.texinfo}, in our example) for a while,
Dave Love <fx@gnu.org>
parents:
diff changeset
921 you may wish to save it in a file. If you wish to save it in the file
Dave Love <fx@gnu.org>
parents:
diff changeset
922 associated with the buffer (@file{/usr/masahiko/man/vip.texinfo}, in this
Dave Love <fx@gnu.org>
parents:
diff changeset
923 case), you can just say @kbd{X S}. If you wish to save it in another file,
Dave Love <fx@gnu.org>
parents:
diff changeset
924 you can type @kbd{X W}. You will then get a similar prompt as you get for
Dave Love <fx@gnu.org>
parents:
diff changeset
925 @kbd{v}, to which you can enter the file name.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
926
Dave Love <fx@gnu.org>
parents:
diff changeset
927 @node Viewing the Buffer, Mark Commands, Files, Vi Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
928 @section Viewing the Buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
929
Dave Love <fx@gnu.org>
parents:
diff changeset
930 In this and next section we discuss commands for moving around in the
Dave Love <fx@gnu.org>
parents:
diff changeset
931 buffer. These command do not change the content of the buffer. The
Dave Love <fx@gnu.org>
parents:
diff changeset
932 following commands are useful for viewing the content of the current
Dave Love <fx@gnu.org>
parents:
diff changeset
933 buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
934
Dave Love <fx@gnu.org>
parents:
diff changeset
935 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
936 @item @key{SPC}
Dave Love <fx@gnu.org>
parents:
diff changeset
937 @itemx C-f
Dave Love <fx@gnu.org>
parents:
diff changeset
938 @kindex 040 @kbd{SPC} (@code{vip-scroll})
Dave Love <fx@gnu.org>
parents:
diff changeset
939 @kindex 006 @kbd{C-f} (@code{vip-scroll-back})
Dave Love <fx@gnu.org>
parents:
diff changeset
940 Scroll text of current window upward almost full screen. You can go
Dave Love <fx@gnu.org>
parents:
diff changeset
941 @i{forward} in the buffer by this command (@code{vip-scroll}).
Dave Love <fx@gnu.org>
parents:
diff changeset
942 @item @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
943 @itemx C-b
Dave Love <fx@gnu.org>
parents:
diff changeset
944 @kindex 015 @kbd{RET} (@code{vip-scroll-back})
Dave Love <fx@gnu.org>
parents:
diff changeset
945 @kindex 002 @kbd{C-b} (@code{vip-scroll-back})
Dave Love <fx@gnu.org>
parents:
diff changeset
946 Scroll text of current window downward almost full screen. You can go
Dave Love <fx@gnu.org>
parents:
diff changeset
947 @i{backward} in the buffer by this command (@code{vip-scroll-back}).
Dave Love <fx@gnu.org>
parents:
diff changeset
948 @itemx C-d
Dave Love <fx@gnu.org>
parents:
diff changeset
949 @kindex 004 @kbd{C-d} (@code{vip-scroll-up})
Dave Love <fx@gnu.org>
parents:
diff changeset
950 Scroll text of current window upward half screen. You can go
Dave Love <fx@gnu.org>
parents:
diff changeset
951 @i{down} in the buffer by this command (@code{vip-scroll-down}).
Dave Love <fx@gnu.org>
parents:
diff changeset
952 @itemx C-u
Dave Love <fx@gnu.org>
parents:
diff changeset
953 @kindex 025 @kbd{C-u} (@code{vip-scroll-down})
Dave Love <fx@gnu.org>
parents:
diff changeset
954 Scroll text of current window downward half screen. You can go
Dave Love <fx@gnu.org>
parents:
diff changeset
955 @i{up} in the buffer by this command (@code{vip-scroll-up}).
Dave Love <fx@gnu.org>
parents:
diff changeset
956 @item C-y
Dave Love <fx@gnu.org>
parents:
diff changeset
957 @kindex 031 @kbd{C-y} (@code{vip-scroll-down-one})
Dave Love <fx@gnu.org>
parents:
diff changeset
958 Scroll text of current window upward by one line (@code{vip-scroll-down-one}).
Dave Love <fx@gnu.org>
parents:
diff changeset
959 @item C-e
Dave Love <fx@gnu.org>
parents:
diff changeset
960 @kindex 005 @kbd{C-e} (@code{vip-scroll-up-one})
Dave Love <fx@gnu.org>
parents:
diff changeset
961 Scroll text of current window downward by one line (@code{vip-scroll-up-one}).
Dave Love <fx@gnu.org>
parents:
diff changeset
962 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
963 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
964 You can repeat these commands by giving a count. Thus, @kbd{2 @key{SPC}}
Dave Love <fx@gnu.org>
parents:
diff changeset
965 has the same effect as @kbd{@key{SPC} @key{SPC}}.
Dave Love <fx@gnu.org>
parents:
diff changeset
966
Dave Love <fx@gnu.org>
parents:
diff changeset
967 The following commands reposition point in the window.
Dave Love <fx@gnu.org>
parents:
diff changeset
968
Dave Love <fx@gnu.org>
parents:
diff changeset
969 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
970 @item z H
Dave Love <fx@gnu.org>
parents:
diff changeset
971 @itemx z @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
972 @kindex 1723 @kbd{z H} (@code{vip-line-to-top})
Dave Love <fx@gnu.org>
parents:
diff changeset
973 @kindex 1721 @kbd{z RET} (@code{vip-line-to-top})
Dave Love <fx@gnu.org>
parents:
diff changeset
974 Put point on the top (@i{home}) line in the window. So the current line
Dave Love <fx@gnu.org>
parents:
diff changeset
975 becomes the top line in the window. Given a count @var{n}, point will be
Dave Love <fx@gnu.org>
parents:
diff changeset
976 placed in the @var{n}-th line from top (@code{vip-line-to-top}).
Dave Love <fx@gnu.org>
parents:
diff changeset
977 @item z M
Dave Love <fx@gnu.org>
parents:
diff changeset
978 @itemx z .
Dave Love <fx@gnu.org>
parents:
diff changeset
979 @kindex 1723 @kbd{z M} (@code{vip-line-to-middle})
Dave Love <fx@gnu.org>
parents:
diff changeset
980 @kindex 1722 @kbd{z .} (@code{vip-line-to-middle})
Dave Love <fx@gnu.org>
parents:
diff changeset
981 Put point on the @i{middle} line in the window. Given a count @var{n},
Dave Love <fx@gnu.org>
parents:
diff changeset
982 point will be placed in the @var{n}-th line from the middle line
Dave Love <fx@gnu.org>
parents:
diff changeset
983 (@code{vip-line-to-middle}).
Dave Love <fx@gnu.org>
parents:
diff changeset
984 @item z L
Dave Love <fx@gnu.org>
parents:
diff changeset
985 @itemx z -
Dave Love <fx@gnu.org>
parents:
diff changeset
986 @kindex 1723 @kbd{z L} (@code{vip-line-to-bottom})
Dave Love <fx@gnu.org>
parents:
diff changeset
987 @kindex 1722 @kbd{z -} (@code{vip-line-to-bottom})
Dave Love <fx@gnu.org>
parents:
diff changeset
988 Put point on the @i{bottom} line in the window. Given a count @var{n},
Dave Love <fx@gnu.org>
parents:
diff changeset
989 point will be placed in the @var{n}-th line from bottom
Dave Love <fx@gnu.org>
parents:
diff changeset
990 (@code{vip-line-to-bottom}).
Dave Love <fx@gnu.org>
parents:
diff changeset
991 @item C-l
Dave Love <fx@gnu.org>
parents:
diff changeset
992 Center point in window and redisplay screen (@code{recenter}).
Dave Love <fx@gnu.org>
parents:
diff changeset
993 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
994
Dave Love <fx@gnu.org>
parents:
diff changeset
995 @node Mark Commands, Motion Commands, Viewing the Buffer, Vi Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
996 @section Mark Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
997
Dave Love <fx@gnu.org>
parents:
diff changeset
998 The following commands are used to mark positions in the buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
999
Dave Love <fx@gnu.org>
parents:
diff changeset
1000 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1001 @item m @var{ch}
Dave Love <fx@gnu.org>
parents:
diff changeset
1002 @kindex 155 @kbd{m} (@code{vip-mark-point})
Dave Love <fx@gnu.org>
parents:
diff changeset
1003 Store current point in the register @var{ch}. @var{ch} must be a
Dave Love <fx@gnu.org>
parents:
diff changeset
1004 lower-case ASCII letter.
Dave Love <fx@gnu.org>
parents:
diff changeset
1005 @item m <
Dave Love <fx@gnu.org>
parents:
diff changeset
1006 Set mark at the beginning of current buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
1007 @item m >
Dave Love <fx@gnu.org>
parents:
diff changeset
1008 Set mark at the end of current buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
1009 @item m .
Dave Love <fx@gnu.org>
parents:
diff changeset
1010 Set mark at point.
Dave Love <fx@gnu.org>
parents:
diff changeset
1011 @item m ,
Dave Love <fx@gnu.org>
parents:
diff changeset
1012 Jump to mark (and pop mark off the mark ring).
Dave Love <fx@gnu.org>
parents:
diff changeset
1013 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1014
Dave Love <fx@gnu.org>
parents:
diff changeset
1015 @cindex mark ring
Dave Love <fx@gnu.org>
parents:
diff changeset
1016
Dave Love <fx@gnu.org>
parents:
diff changeset
1017 Emacs uses the @dfn{mark ring} to store marked positions. The commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1018 @kbd{m <}, @kbd{m >} and @kbd{m .}@: not only set mark but also add it as the
Dave Love <fx@gnu.org>
parents:
diff changeset
1019 latest element of the mark ring (replacing the oldest one). By repeating
Dave Love <fx@gnu.org>
parents:
diff changeset
1020 the command `@kbd{m ,}' you can visit older and older marked positions. You
Dave Love <fx@gnu.org>
parents:
diff changeset
1021 will eventually be in a loop as the mark ring is a ring.
Dave Love <fx@gnu.org>
parents:
diff changeset
1022
Dave Love <fx@gnu.org>
parents:
diff changeset
1023 @node Motion Commands, Searching and Replacing, Mark Commands, Vi Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1024 @section Motion Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1025
Dave Love <fx@gnu.org>
parents:
diff changeset
1026 Commands for moving around in the current buffer are collected here. These
Dave Love <fx@gnu.org>
parents:
diff changeset
1027 commands are used as an `argument' for the delete, change and yank commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1028 to be described in the next section.
Dave Love <fx@gnu.org>
parents:
diff changeset
1029
Dave Love <fx@gnu.org>
parents:
diff changeset
1030 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1031 @item h
Dave Love <fx@gnu.org>
parents:
diff changeset
1032 @kindex 150 @kbd{h} (@code{vip-backward-char})
Dave Love <fx@gnu.org>
parents:
diff changeset
1033 Move point backward by one character. Signal error if point is at the
Dave Love <fx@gnu.org>
parents:
diff changeset
1034 beginning of buffer, but (unlike Vi) do not complain otherwise
Dave Love <fx@gnu.org>
parents:
diff changeset
1035 (@code{vip-backward-char}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1036 @item l
Dave Love <fx@gnu.org>
parents:
diff changeset
1037 @kindex 154 @kbd{l} (@code{vip-forward-char})
Dave Love <fx@gnu.org>
parents:
diff changeset
1038 Move point backward by one character. Signal error if point is at the
Dave Love <fx@gnu.org>
parents:
diff changeset
1039 end of buffer, but (unlike Vi) do not complain otherwise
Dave Love <fx@gnu.org>
parents:
diff changeset
1040 (@code{vip-forward-char}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1041 @item j
Dave Love <fx@gnu.org>
parents:
diff changeset
1042 @kindex 152 @kbd{j} (@code{vip-next-line})
Dave Love <fx@gnu.org>
parents:
diff changeset
1043 Move point to the next line keeping the current column. If point is on the
Dave Love <fx@gnu.org>
parents:
diff changeset
1044 last line of the buffer, a new line will be created and point will move to
Dave Love <fx@gnu.org>
parents:
diff changeset
1045 that line (@code{vip-next-line}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1046 @item k
Dave Love <fx@gnu.org>
parents:
diff changeset
1047 @kindex 153 @kbd{k} (@code{vip-previous-line})
Dave Love <fx@gnu.org>
parents:
diff changeset
1048 Move point to the previous line keeping the current column
Dave Love <fx@gnu.org>
parents:
diff changeset
1049 (@code{vip-next-line}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1050 @item +
Dave Love <fx@gnu.org>
parents:
diff changeset
1051 @kindex 053 @kbd{+} (@code{vip-next-line-at-bol})
Dave Love <fx@gnu.org>
parents:
diff changeset
1052 Move point to the next line at the first non-white character. If point is
Dave Love <fx@gnu.org>
parents:
diff changeset
1053 on the last line of the buffer, a new line will be created and point will
Dave Love <fx@gnu.org>
parents:
diff changeset
1054 move to the beginning of that line (@code{vip-next-line-at-bol}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1055 @item -
Dave Love <fx@gnu.org>
parents:
diff changeset
1056 @kindex 055 @kbd{-} (@code{vip-previous-line-at-bol})
Dave Love <fx@gnu.org>
parents:
diff changeset
1057 Move point to the previous line at the first non-white character
Dave Love <fx@gnu.org>
parents:
diff changeset
1058 (@code{vip-previous-line-at-bol}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1059 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1060 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
1061 If a count is given to these commands, the commands will be repeated that
Dave Love <fx@gnu.org>
parents:
diff changeset
1062 many times.
Dave Love <fx@gnu.org>
parents:
diff changeset
1063
Dave Love <fx@gnu.org>
parents:
diff changeset
1064 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1065 @item 0
Dave Love <fx@gnu.org>
parents:
diff changeset
1066 @kindex 060 @kbd{0} (@code{vip-beginning-of-line})
Dave Love <fx@gnu.org>
parents:
diff changeset
1067 Move point to the beginning of line (@code{vip-beginning-of-line}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1068 @item ^
Dave Love <fx@gnu.org>
parents:
diff changeset
1069 @kindex 136 @kbd{^} (@code{vip-bol-and-skip-white})
Dave Love <fx@gnu.org>
parents:
diff changeset
1070 Move point to the first non-white character on the line
Dave Love <fx@gnu.org>
parents:
diff changeset
1071 (@code{vip-bol-and-skip-white}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1072 @item $
Dave Love <fx@gnu.org>
parents:
diff changeset
1073 @kindex 044 @kbd{$} (@code{vip-goto-eol})
Dave Love <fx@gnu.org>
parents:
diff changeset
1074 Move point to the end of line (@code{vip-goto-eol}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1075 @item @var{n} |
Dave Love <fx@gnu.org>
parents:
diff changeset
1076 @kindex 174 @kbd{|} (@code{vip-goto-col})
Dave Love <fx@gnu.org>
parents:
diff changeset
1077 Move point to the @var{n}-th column on the line (@code{vip-goto-col}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1078 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1079 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
1080 Except for the @kbd{|} command, these commands neglect a count.
Dave Love <fx@gnu.org>
parents:
diff changeset
1081
Dave Love <fx@gnu.org>
parents:
diff changeset
1082 @cindex word
Dave Love <fx@gnu.org>
parents:
diff changeset
1083
Dave Love <fx@gnu.org>
parents:
diff changeset
1084 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1085 @item w
Dave Love <fx@gnu.org>
parents:
diff changeset
1086 @kindex 167 @kbd{w} (@code{vip-forward-word})
Dave Love <fx@gnu.org>
parents:
diff changeset
1087 Move point forward to the beginning of the next word
Dave Love <fx@gnu.org>
parents:
diff changeset
1088 (@code{vip-forward-word}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1089 @item W
Dave Love <fx@gnu.org>
parents:
diff changeset
1090 @kindex 127 @kbd{W} (@code{vip-forward-Word})
Dave Love <fx@gnu.org>
parents:
diff changeset
1091 Move point forward to the beginning of the next word, where a @dfn{word} is
Dave Love <fx@gnu.org>
parents:
diff changeset
1092 considered as a sequence of non-white characters (@code{vip-forward-Word}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1093 @item b
Dave Love <fx@gnu.org>
parents:
diff changeset
1094 @kindex 142 @kbd{b} (@code{vip-backward-word})
Dave Love <fx@gnu.org>
parents:
diff changeset
1095 Move point backward to the beginning of a word (@code{vip-backward-word}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1096 @item B
Dave Love <fx@gnu.org>
parents:
diff changeset
1097 @kindex 102 @kbd{B} (@code{vip-backward-Word})
Dave Love <fx@gnu.org>
parents:
diff changeset
1098 Move point backward to the beginning of a word, where a @i{word} is
Dave Love <fx@gnu.org>
parents:
diff changeset
1099 considered as a sequence of non-white characters (@code{vip-forward-Word}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1100 @item e
Dave Love <fx@gnu.org>
parents:
diff changeset
1101 @kindex 145 @kbd{e} (@code{vip-end-of-word})
Dave Love <fx@gnu.org>
parents:
diff changeset
1102 Move point forward to the end of a word (@code{vip-end-of-word}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1103 @item E
Dave Love <fx@gnu.org>
parents:
diff changeset
1104 @kindex 105 @kbd{E} (@code{vip-end-of-Word})
Dave Love <fx@gnu.org>
parents:
diff changeset
1105 Move point forward to the end of a word, where a @i{word} is
Dave Love <fx@gnu.org>
parents:
diff changeset
1106 considered as a sequence of non-white characters (@code{vip-end-of-Word}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1107 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1108 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
1109 @cindex syntax table
Dave Love <fx@gnu.org>
parents:
diff changeset
1110 Here the meaning of the word `word' for the @kbd{w}, @kbd{b} and @kbd{e}
Dave Love <fx@gnu.org>
parents:
diff changeset
1111 commands is determined by the @dfn{syntax table} effective in the current
Dave Love <fx@gnu.org>
parents:
diff changeset
1112 buffer. Each major mode has its syntax mode, and therefore the meaning of
Dave Love <fx@gnu.org>
parents:
diff changeset
1113 a word also changes as the major mode changes. See GNU Emacs Manual for
Dave Love <fx@gnu.org>
parents:
diff changeset
1114 details of syntax table.
Dave Love <fx@gnu.org>
parents:
diff changeset
1115
Dave Love <fx@gnu.org>
parents:
diff changeset
1116 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1117 @item H
Dave Love <fx@gnu.org>
parents:
diff changeset
1118 @kindex 110 @kbd{H} (@code{vip-window-top})
Dave Love <fx@gnu.org>
parents:
diff changeset
1119 Move point to the beginning of the @i{home} (top) line of the window.
Dave Love <fx@gnu.org>
parents:
diff changeset
1120 Given a count @var{n}, go to the @var{n}-th line from top
Dave Love <fx@gnu.org>
parents:
diff changeset
1121 (@code{vip-window-top}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1122 @item M
Dave Love <fx@gnu.org>
parents:
diff changeset
1123 @kindex 115 @kbd{M} (@code{vip-window-middle})
Dave Love <fx@gnu.org>
parents:
diff changeset
1124 Move point to the beginning of the @i{middle} line of the window. Given
Dave Love <fx@gnu.org>
parents:
diff changeset
1125 a count @var{n}, go to the @var{n}-th line from the middle line
Dave Love <fx@gnu.org>
parents:
diff changeset
1126 (@code{vip-window-middle}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1127 @item L
Dave Love <fx@gnu.org>
parents:
diff changeset
1128 @kindex 114 @kbd{L} (@code{vip-window-bottom})
Dave Love <fx@gnu.org>
parents:
diff changeset
1129 Move point to the beginning of the @i{lowest} (bottom) line of the
Dave Love <fx@gnu.org>
parents:
diff changeset
1130 window. Given count, go to the @var{n}-th line from bottom
Dave Love <fx@gnu.org>
parents:
diff changeset
1131 (@code{vip-window-bottom}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1132 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1133 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
1134 These commands can be used to go to the desired line visible on the screen.
Dave Love <fx@gnu.org>
parents:
diff changeset
1135
Dave Love <fx@gnu.org>
parents:
diff changeset
1136 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1137 @item (
Dave Love <fx@gnu.org>
parents:
diff changeset
1138 @kindex 050 @kbd{(} (@code{vip-backward-sentence})
Dave Love <fx@gnu.org>
parents:
diff changeset
1139 Move point backward to the beginning of the sentence
Dave Love <fx@gnu.org>
parents:
diff changeset
1140 (@code{vip-backward-sentence}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1141 @item )
Dave Love <fx@gnu.org>
parents:
diff changeset
1142 @kindex 051 @kbd{)} (@code{vip-forward-sentence})
Dave Love <fx@gnu.org>
parents:
diff changeset
1143 Move point forward to the end of the sentence
Dave Love <fx@gnu.org>
parents:
diff changeset
1144 (@code{vip-forward-sentence}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1145 @item @{
Dave Love <fx@gnu.org>
parents:
diff changeset
1146 @kindex 173 @kbd{@{} (@code{vip-backward-paragraph})
Dave Love <fx@gnu.org>
parents:
diff changeset
1147 Move point backward to the beginning of the paragraph
Dave Love <fx@gnu.org>
parents:
diff changeset
1148 (@code{vip-backward-paragraph}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1149 @item @}
Dave Love <fx@gnu.org>
parents:
diff changeset
1150 @kindex 175 @kbd{@}} (@code{vip-forward-paragraph})
Dave Love <fx@gnu.org>
parents:
diff changeset
1151 Move point forward to the end of the paragraph
Dave Love <fx@gnu.org>
parents:
diff changeset
1152 (@code{vip-forward-paragraph}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1153 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1154 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
1155 A count repeats the effect for these commands.
Dave Love <fx@gnu.org>
parents:
diff changeset
1156
Dave Love <fx@gnu.org>
parents:
diff changeset
1157 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1158 @item G
Dave Love <fx@gnu.org>
parents:
diff changeset
1159 @kindex 107 @kbd{G} (@code{vip-goto-line})
Dave Love <fx@gnu.org>
parents:
diff changeset
1160 Given a count @var{n}, move point to the @var{n}-th line in the buffer on
Dave Love <fx@gnu.org>
parents:
diff changeset
1161 the first non-white character. Without a count, go to the end of the buffer
Dave Love <fx@gnu.org>
parents:
diff changeset
1162 (@code{vip-goto-line}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1163 @item ` `
Dave Love <fx@gnu.org>
parents:
diff changeset
1164 @kindex 140 @kbd{`} (@code{vip-goto-mark})
Dave Love <fx@gnu.org>
parents:
diff changeset
1165 Exchange point and mark (@code{vip-goto-mark}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1166 @item ` @var{ch}
Dave Love <fx@gnu.org>
parents:
diff changeset
1167 Move point to the position stored in the register @var{ch}. @var{ch} must
Dave Love <fx@gnu.org>
parents:
diff changeset
1168 be a lower-case letter.
Dave Love <fx@gnu.org>
parents:
diff changeset
1169 @item ' '
Dave Love <fx@gnu.org>
parents:
diff changeset
1170 @kindex 047 @kbd{'} (@code{vip-goto-mark-and-skip-white})
Dave Love <fx@gnu.org>
parents:
diff changeset
1171 Exchange point and mark, and then move point to the first non-white
Dave Love <fx@gnu.org>
parents:
diff changeset
1172 character on the line (@code{vip-goto-mark-and-skip-white}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1173 @item ' @var{ch}
Dave Love <fx@gnu.org>
parents:
diff changeset
1174 Move point to the position stored in the register @var{ch} and skip to the
Dave Love <fx@gnu.org>
parents:
diff changeset
1175 first non-white character on the line. @var{ch} must be a lower-case letter.
Dave Love <fx@gnu.org>
parents:
diff changeset
1176 @item %
Dave Love <fx@gnu.org>
parents:
diff changeset
1177 @kindex 045 @kbd{%} (@code{vip-paren-match})
Dave Love <fx@gnu.org>
parents:
diff changeset
1178 Move point to the matching parenthesis if point is looking at @kbd{(},
Dave Love <fx@gnu.org>
parents:
diff changeset
1179 @kbd{)}, @kbd{@{}, @kbd{@}}, @kbd{[} or @kbd{]}
Dave Love <fx@gnu.org>
parents:
diff changeset
1180 @*(@code{vip-paren-match}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1181 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1182 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
1183 The command @kbd{G} mark point before move, so that you can return to the
Dave Love <fx@gnu.org>
parents:
diff changeset
1184 original point by @kbd{` `}. The original point will also be stored in
Dave Love <fx@gnu.org>
parents:
diff changeset
1185 the mark ring.
Dave Love <fx@gnu.org>
parents:
diff changeset
1186
Dave Love <fx@gnu.org>
parents:
diff changeset
1187 The following commands are useful for moving points on the line. A count
Dave Love <fx@gnu.org>
parents:
diff changeset
1188 will repeat the effect.
Dave Love <fx@gnu.org>
parents:
diff changeset
1189
Dave Love <fx@gnu.org>
parents:
diff changeset
1190 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1191 @item f @var{ch}
Dave Love <fx@gnu.org>
parents:
diff changeset
1192 @kindex 146 @kbd{f} (@code{vip-find-char-forward})
Dave Love <fx@gnu.org>
parents:
diff changeset
1193 Move point forward to the character @var{ch} on the line. Signal error if
Dave Love <fx@gnu.org>
parents:
diff changeset
1194 @var{ch} could not be found (@code{vip-find-char-forward}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1195 @item F @var{ch}
Dave Love <fx@gnu.org>
parents:
diff changeset
1196 @kindex 106 @kbd{F} (@code{vip-find-char-backward})
Dave Love <fx@gnu.org>
parents:
diff changeset
1197 Move point backward to the character @var{ch} on the line. Signal error if
Dave Love <fx@gnu.org>
parents:
diff changeset
1198 @var{ch} could not be found (@code{vip-find-char-backward}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1199 @item t @var{ch}
Dave Love <fx@gnu.org>
parents:
diff changeset
1200 @kindex 164 @kbd{t} (@code{vip-goto-char-forward})
Dave Love <fx@gnu.org>
parents:
diff changeset
1201 Move point forward upto the character @var{ch} on the line. Signal error if
Dave Love <fx@gnu.org>
parents:
diff changeset
1202 @var{ch} could not be found (@code{vip-goto-char-forward}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1203 @item T @var{ch}
Dave Love <fx@gnu.org>
parents:
diff changeset
1204 @kindex 124 @kbd{T} (@code{vip-goto-char-backward})
Dave Love <fx@gnu.org>
parents:
diff changeset
1205 Move point backward upto the character @var{ch} on the line. Signal error if
Dave Love <fx@gnu.org>
parents:
diff changeset
1206 @var{ch} could not be found (@code{vip-goto-char-backward}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1207 @item ;
Dave Love <fx@gnu.org>
parents:
diff changeset
1208 @kindex 073 @kbd{;} (@code{vip-repeat-find})
Dave Love <fx@gnu.org>
parents:
diff changeset
1209 Repeat previous @kbd{f}, @kbd{t}, @kbd{F} or @kbd{T} command
Dave Love <fx@gnu.org>
parents:
diff changeset
1210 (@code{vip-repeat-find}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1211 @item ,
Dave Love <fx@gnu.org>
parents:
diff changeset
1212 @kindex 054 @kbd{,} (@code{vip-repeat-find-opposite})
Dave Love <fx@gnu.org>
parents:
diff changeset
1213 Repeat previous @kbd{f}, @kbd{t}, @kbd{F} or @kbd{T} command, in the
Dave Love <fx@gnu.org>
parents:
diff changeset
1214 opposite direction (@code{vip-repeat-find-opposite}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1215 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1216
Dave Love <fx@gnu.org>
parents:
diff changeset
1217 @node Searching and Replacing, Modifying Commands, Motion Commands, Vi Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1218 @section Searching and Replacing
Dave Love <fx@gnu.org>
parents:
diff changeset
1219
Dave Love <fx@gnu.org>
parents:
diff changeset
1220 Following commands are available for searching and replacing.
Dave Love <fx@gnu.org>
parents:
diff changeset
1221
Dave Love <fx@gnu.org>
parents:
diff changeset
1222 @cindex regular expression (search)
Dave Love <fx@gnu.org>
parents:
diff changeset
1223
Dave Love <fx@gnu.org>
parents:
diff changeset
1224 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1225 @item / @var{string} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
1226 @kindex 057 @kbd{/} (@code{vip-search-forward})
Dave Love <fx@gnu.org>
parents:
diff changeset
1227 Search the first occurrence of the string @var{string} forward starting
Dave Love <fx@gnu.org>
parents:
diff changeset
1228 from point. Given a count @var{n}, the @var{n}-th occurrence of
Dave Love <fx@gnu.org>
parents:
diff changeset
1229 @var{string} will be searched. If the variable @code{vip-re-search} has value
Dave Love <fx@gnu.org>
parents:
diff changeset
1230 @code{t} then @dfn{regular expression} search is done and the string
Dave Love <fx@gnu.org>
parents:
diff changeset
1231 matching the regular expression @var{string} is found. If you give an
Dave Love <fx@gnu.org>
parents:
diff changeset
1232 empty string as @var{string} then the search mode will change from vanilla
Dave Love <fx@gnu.org>
parents:
diff changeset
1233 search to regular expression search and vice versa
Dave Love <fx@gnu.org>
parents:
diff changeset
1234 (@code{vip-search-forward}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1235 @item ? @var{string} @key{RET}
Dave Love <fx@gnu.org>
parents:
diff changeset
1236 @kindex 077 @kbd{?} (@code{vip-search-backward})
Dave Love <fx@gnu.org>
parents:
diff changeset
1237 Same as @kbd{/}, except that search is done backward
Dave Love <fx@gnu.org>
parents:
diff changeset
1238 (@code{vip-search-backward}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1239 @item n
Dave Love <fx@gnu.org>
parents:
diff changeset
1240 @kindex 156 @kbd{n} (@code{vip-search-next})
Dave Love <fx@gnu.org>
parents:
diff changeset
1241 Search the previous search pattern in the same direction as before
Dave Love <fx@gnu.org>
parents:
diff changeset
1242 (@code{vip-search-next}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1243 @item N
Dave Love <fx@gnu.org>
parents:
diff changeset
1244 @kindex 116 @kbd{N} (@code{vip-search-Next})
Dave Love <fx@gnu.org>
parents:
diff changeset
1245 Search the previous search pattern in the opposite direction
Dave Love <fx@gnu.org>
parents:
diff changeset
1246 (@code{vip-search-Next}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1247 @item C-s
Dave Love <fx@gnu.org>
parents:
diff changeset
1248 @kindex 023 @kbd{C-s} (@code{isearch-forward})
Dave Love <fx@gnu.org>
parents:
diff changeset
1249 Search forward incrementally. See GNU Emacs Manual for details
Dave Love <fx@gnu.org>
parents:
diff changeset
1250 (@code{isearch-forward}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1251 @item C-r
Dave Love <fx@gnu.org>
parents:
diff changeset
1252 @kindex 022 @kbd{C-r} (@code{isearch-backward})
Dave Love <fx@gnu.org>
parents:
diff changeset
1253 Search backward incrementally (@code{isearch-backward}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1254 @cindex vanilla (replacement)
Dave Love <fx@gnu.org>
parents:
diff changeset
1255 @cindex regular expression (replacement)
Dave Love <fx@gnu.org>
parents:
diff changeset
1256 @item R @var{string} RET @var{newstring}
Dave Love <fx@gnu.org>
parents:
diff changeset
1257 @kindex 122 @kbd{R} (@code{vip-replace-string})
Dave Love <fx@gnu.org>
parents:
diff changeset
1258 There are two modes of replacement, @dfn{vanilla} and @dfn{regular expression}.
Dave Love <fx@gnu.org>
parents:
diff changeset
1259 If the mode is @i{vanilla} you will get a prompt @samp{Replace string:},
Dave Love <fx@gnu.org>
parents:
diff changeset
1260 and if the mode is @i{regular expression} you will ge a prompt
Dave Love <fx@gnu.org>
parents:
diff changeset
1261 @samp{Replace regexp:}. The mode is initially @i{vanilla}, but you can
Dave Love <fx@gnu.org>
parents:
diff changeset
1262 toggle these modes by giving a null string as @var{string}. If the mode is
Dave Love <fx@gnu.org>
parents:
diff changeset
1263 vanilla, this command replaces every occurrence of @var{string} with
Dave Love <fx@gnu.org>
parents:
diff changeset
1264 @var{newstring}. If the mode is regular expression, @var{string} is
Dave Love <fx@gnu.org>
parents:
diff changeset
1265 treated as a regular expression and every string matching the regular
Dave Love <fx@gnu.org>
parents:
diff changeset
1266 expression is replaced with @var{newstring} (@code{vip-replace-string}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1267 @item Q @var{string} RET @var{newstring}
Dave Love <fx@gnu.org>
parents:
diff changeset
1268 @kindex 121 @kbd{Q} (@code{vip-query-replace})
Dave Love <fx@gnu.org>
parents:
diff changeset
1269 Same as @kbd{R} except that you will be asked form confirmation before each
Dave Love <fx@gnu.org>
parents:
diff changeset
1270 replacement
Dave Love <fx@gnu.org>
parents:
diff changeset
1271 @*(@code{vip-query-replace}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1272 @item r @var{ch}
Dave Love <fx@gnu.org>
parents:
diff changeset
1273 @kindex 162 @kbd{r} (@code{vip-replace-char})
Dave Love <fx@gnu.org>
parents:
diff changeset
1274 Replace the character point is looking at by the character @var{ch}. Give
Dave Love <fx@gnu.org>
parents:
diff changeset
1275 count, replace that many characters by @var{ch} (@code{vip-replace-char}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1276 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1277 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
1278 The commands @kbd{/} and @kbd{?} mark point before move, so that you can
Dave Love <fx@gnu.org>
parents:
diff changeset
1279 return to the original point by @w{@kbd{` `}}.
Dave Love <fx@gnu.org>
parents:
diff changeset
1280
Dave Love <fx@gnu.org>
parents:
diff changeset
1281 @node Modifying Commands, Delete Commands, Searching and Replacing, Vi Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1282 @section Modifying Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1283
Dave Love <fx@gnu.org>
parents:
diff changeset
1284 In this section, commands for modifying the content of a buffer are
Dave Love <fx@gnu.org>
parents:
diff changeset
1285 described. These commands affect the region determined by a motion command
Dave Love <fx@gnu.org>
parents:
diff changeset
1286 which is given to the commands as their argument.
Dave Love <fx@gnu.org>
parents:
diff changeset
1287
Dave Love <fx@gnu.org>
parents:
diff changeset
1288 @cindex point commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1289 @cindex line commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1290
Dave Love <fx@gnu.org>
parents:
diff changeset
1291 We classify motion commands into @dfn{point commands} and
Dave Love <fx@gnu.org>
parents:
diff changeset
1292 @dfn{line commands}. The point commands are as follows:
Dave Love <fx@gnu.org>
parents:
diff changeset
1293 @example
Dave Love <fx@gnu.org>
parents:
diff changeset
1294 @kbd{h}, @kbd{l}, @kbd{0}, @kbd{^}, @kbd{$}, @kbd{w}, @kbd{W}, @kbd{b}, @kbd{B}, @kbd{e}, @kbd{E}, @kbd{(}, @kbd{)}, @kbd{/}, @kbd{?}, @kbd{`}, @kbd{f}, @kbd{F}, @kbd{t}, @kbd{T}, @kbd{%}, @kbd{;}, @kbd{,}
Dave Love <fx@gnu.org>
parents:
diff changeset
1295 @end example
Dave Love <fx@gnu.org>
parents:
diff changeset
1296 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
1297 The line commands are as follows:
Dave Love <fx@gnu.org>
parents:
diff changeset
1298 @example
Dave Love <fx@gnu.org>
parents:
diff changeset
1299 @kbd{j}, @kbd{k}, @kbd{+}, @kbd{-}, @kbd{H}, @kbd{M}, @kbd{L}, @kbd{@{}, @kbd{@}}, @kbd{G}, @kbd{'}
Dave Love <fx@gnu.org>
parents:
diff changeset
1300 @end example
Dave Love <fx@gnu.org>
parents:
diff changeset
1301 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
1302 @cindex expanding (region)
Dave Love <fx@gnu.org>
parents:
diff changeset
1303 If a point command is given as an argument to a modifying command, the
Dave Love <fx@gnu.org>
parents:
diff changeset
1304 region determined by the point command will be affected by the modifying
Dave Love <fx@gnu.org>
parents:
diff changeset
1305 command. On the other hand, if a line command is given as an argument to a
Dave Love <fx@gnu.org>
parents:
diff changeset
1306 modifying command, the region determined by the line command will be
Dave Love <fx@gnu.org>
parents:
diff changeset
1307 enlarged so that it will become the smallest region properly containing the
Dave Love <fx@gnu.org>
parents:
diff changeset
1308 region and consisting of whole lines (we call this process @dfn{expanding
Dave Love <fx@gnu.org>
parents:
diff changeset
1309 the region}), and then the enlarged region will be affected by the modifying
Dave Love <fx@gnu.org>
parents:
diff changeset
1310 command.
Dave Love <fx@gnu.org>
parents:
diff changeset
1311
Dave Love <fx@gnu.org>
parents:
diff changeset
1312 @menu
Dave Love <fx@gnu.org>
parents:
diff changeset
1313 * Delete Commands:: Commands for deleting text.
Dave Love <fx@gnu.org>
parents:
diff changeset
1314 * Yank Commands:: Commands for yanking text in Vi's sense.
Dave Love <fx@gnu.org>
parents:
diff changeset
1315 * Put Back Commands:: Commands for putting back deleted/yanked text.
Dave Love <fx@gnu.org>
parents:
diff changeset
1316 * Change Commands:: Commands for changing text.
Dave Love <fx@gnu.org>
parents:
diff changeset
1317 * Repeating and Undoing Modifications::
Dave Love <fx@gnu.org>
parents:
diff changeset
1318 @end menu
Dave Love <fx@gnu.org>
parents:
diff changeset
1319 @node Delete Commands, Yank Commands, Modifying Commands, Modifying Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1320 @subsection Delete Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1321
Dave Love <fx@gnu.org>
parents:
diff changeset
1322 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1323 @item d @var{motion-command}
Dave Love <fx@gnu.org>
parents:
diff changeset
1324 @kindex 1440 @kbd{d} (@code{vip-command-argument})
Dave Love <fx@gnu.org>
parents:
diff changeset
1325 Delete the region determined by the motion command @var{motion-command}.
Dave Love <fx@gnu.org>
parents:
diff changeset
1326 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1327 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
1328 For example, @kbd{d $} will delete the region between point and end of
Dave Love <fx@gnu.org>
parents:
diff changeset
1329 current line since @kbd{$} is a point command that moves point to end of line.
Dave Love <fx@gnu.org>
parents:
diff changeset
1330 @kbd{d G} will delete the region between the beginning of current line and
Dave Love <fx@gnu.org>
parents:
diff changeset
1331 end of the buffer, since @kbd{G} is a line command. A count given to the
Dave Love <fx@gnu.org>
parents:
diff changeset
1332 command above will become the count for the associated motion command.
Dave Love <fx@gnu.org>
parents:
diff changeset
1333 Thus, @kbd{3 d w} will delete three words.
Dave Love <fx@gnu.org>
parents:
diff changeset
1334
Dave Love <fx@gnu.org>
parents:
diff changeset
1335 @kindex 042 @kbd{"} (@code{vip-command-argument})
Dave Love <fx@gnu.org>
parents:
diff changeset
1336 It is also possible to save the deleted text into a register you specify.
Dave Love <fx@gnu.org>
parents:
diff changeset
1337 For example, you can say @kbd{" t 3 d w} to delete three words and save it
Dave Love <fx@gnu.org>
parents:
diff changeset
1338 to register @kbd{t}. The name of a register is a lower-case letter between
Dave Love <fx@gnu.org>
parents:
diff changeset
1339 @kbd{a} and @kbd{z}. If you give an upper-case letter as an argument to
Dave Love <fx@gnu.org>
parents:
diff changeset
1340 a delete command, then the deleted text will be appended to the content of
Dave Love <fx@gnu.org>
parents:
diff changeset
1341 the register having the corresponding lower-case letter as its name. So,
Dave Love <fx@gnu.org>
parents:
diff changeset
1342 @kbd{" T d w} will delete a word and append it to register @kbd{t}. Other
Dave Love <fx@gnu.org>
parents:
diff changeset
1343 modifying commands also accept a register name as their argument, and we
Dave Love <fx@gnu.org>
parents:
diff changeset
1344 will not repeat similar explanations.
Dave Love <fx@gnu.org>
parents:
diff changeset
1345
Dave Love <fx@gnu.org>
parents:
diff changeset
1346 We have more delete commands as below.
Dave Love <fx@gnu.org>
parents:
diff changeset
1347
Dave Love <fx@gnu.org>
parents:
diff changeset
1348 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1349 @item d d
Dave Love <fx@gnu.org>
parents:
diff changeset
1350 @kindex 1442 @kbd{d d}
Dave Love <fx@gnu.org>
parents:
diff changeset
1351 Delete a line. Given a count @var{n}, delete @var{n} lines.
Dave Love <fx@gnu.org>
parents:
diff changeset
1352 @item d r
Dave Love <fx@gnu.org>
parents:
diff changeset
1353 @kindex 1442 @kbd{d r}
Dave Love <fx@gnu.org>
parents:
diff changeset
1354 Delete current region.
Dave Love <fx@gnu.org>
parents:
diff changeset
1355 @item d R
Dave Love <fx@gnu.org>
parents:
diff changeset
1356 @kindex 1441 @kbd{d R}
Dave Love <fx@gnu.org>
parents:
diff changeset
1357 Expand current region and delete it.
Dave Love <fx@gnu.org>
parents:
diff changeset
1358 @item D
Dave Love <fx@gnu.org>
parents:
diff changeset
1359 @kindex 104 @kbd{D} (@code{vip-kill-line})
Dave Love <fx@gnu.org>
parents:
diff changeset
1360 Delete to the end of a line (@code{vip-kill-line}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1361 @item x
Dave Love <fx@gnu.org>
parents:
diff changeset
1362 @kindex 170 @kbd{x} (@code{vip-delete-char})
Dave Love <fx@gnu.org>
parents:
diff changeset
1363 Delete a character after point. Given @var{n}, delete @var{n} characters
Dave Love <fx@gnu.org>
parents:
diff changeset
1364 (@code{vip-delete-char}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1365 @item @key{DEL}
Dave Love <fx@gnu.org>
parents:
diff changeset
1366 @kindex 177 @kbd{DEL} (@code{vip-delete-backward-char})
Dave Love <fx@gnu.org>
parents:
diff changeset
1367 Delete a character before point. Given @var{n}, delete @var{n} characters
Dave Love <fx@gnu.org>
parents:
diff changeset
1368 (@code{vip-delete-backward-char}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1369 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1370
Dave Love <fx@gnu.org>
parents:
diff changeset
1371 @node Yank Commands, Put Back Commands, Delete Commands, Modifying Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1372 @subsection Yank Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1373
Dave Love <fx@gnu.org>
parents:
diff changeset
1374 @cindex yank
Dave Love <fx@gnu.org>
parents:
diff changeset
1375
Dave Love <fx@gnu.org>
parents:
diff changeset
1376 Yank commands @dfn{yank} a text of buffer into a (usually anonymous) register.
Dave Love <fx@gnu.org>
parents:
diff changeset
1377 Here the word `yank' is used in Vi's sense. Thus yank commands do not
Dave Love <fx@gnu.org>
parents:
diff changeset
1378 alter the content of the buffer, and useful only in combination with
Dave Love <fx@gnu.org>
parents:
diff changeset
1379 commands that put back the yanked text into the buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
1380
Dave Love <fx@gnu.org>
parents:
diff changeset
1381 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1382 @item y @var{motion-command}
Dave Love <fx@gnu.org>
parents:
diff changeset
1383 @kindex 1710 @kbd{y} (@code{vip-command-argument})
Dave Love <fx@gnu.org>
parents:
diff changeset
1384 Yank the region determined by the motion command @var{motion-command}.
Dave Love <fx@gnu.org>
parents:
diff changeset
1385 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1386 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
1387 For example, @kbd{y $} will yank the text between point and the end of line
Dave Love <fx@gnu.org>
parents:
diff changeset
1388 into an anonymous register, while @kbd{"c y $} will yank the same text into
Dave Love <fx@gnu.org>
parents:
diff changeset
1389 register @kbd{c}.
Dave Love <fx@gnu.org>
parents:
diff changeset
1390
Dave Love <fx@gnu.org>
parents:
diff changeset
1391 Use the following command to yank consecutive lines of text.
Dave Love <fx@gnu.org>
parents:
diff changeset
1392
Dave Love <fx@gnu.org>
parents:
diff changeset
1393 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1394 @item y y
Dave Love <fx@gnu.org>
parents:
diff changeset
1395 @itemx Y
Dave Love <fx@gnu.org>
parents:
diff changeset
1396 @kindex 131 @kbd{Y} (@code{vip-yank-line})
Dave Love <fx@gnu.org>
parents:
diff changeset
1397 @kindex 1712 @kbd{y y} (@code{vip-yank-line})
Dave Love <fx@gnu.org>
parents:
diff changeset
1398 Yank a line. Given @var{n}, yank @var{n} lines (@code{vip-yank-line}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1399 @item y r
Dave Love <fx@gnu.org>
parents:
diff changeset
1400 @kindex 1712 @kbd{y r}
Dave Love <fx@gnu.org>
parents:
diff changeset
1401 Yank current region.
Dave Love <fx@gnu.org>
parents:
diff changeset
1402 @item y R
Dave Love <fx@gnu.org>
parents:
diff changeset
1403 @kindex 1711 @kbd{y R}
Dave Love <fx@gnu.org>
parents:
diff changeset
1404 Expand current region and yank it.
Dave Love <fx@gnu.org>
parents:
diff changeset
1405 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1406
Dave Love <fx@gnu.org>
parents:
diff changeset
1407 @node Put Back Commands, Change Commands, Yank Commands, Modifying Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1408 @subsection Put Back Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1409 Deleted or yanked texts can be put back into the buffer by the command
Dave Love <fx@gnu.org>
parents:
diff changeset
1410 below.
Dave Love <fx@gnu.org>
parents:
diff changeset
1411
Dave Love <fx@gnu.org>
parents:
diff changeset
1412 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1413 @item p
Dave Love <fx@gnu.org>
parents:
diff changeset
1414 @kindex 160 @kbd{p} (@code{vip-put-back})
Dave Love <fx@gnu.org>
parents:
diff changeset
1415 Insert, after the character point is looking at, most recently
Dave Love <fx@gnu.org>
parents:
diff changeset
1416 deleted/yanked text from anonymous register. Given a register name
Dave Love <fx@gnu.org>
parents:
diff changeset
1417 argument, the content of the named register will be put back. Given a
Dave Love <fx@gnu.org>
parents:
diff changeset
1418 count, the command will be repeated that many times. This command also
Dave Love <fx@gnu.org>
parents:
diff changeset
1419 checks if the text to put back ends with a new line character, and if so
Dave Love <fx@gnu.org>
parents:
diff changeset
1420 the text will be put below the current line (@code{vip-put-back}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1421 @item P
Dave Love <fx@gnu.org>
parents:
diff changeset
1422 @kindex 120 @kbd{P} (@code{vip-Put-back})
Dave Love <fx@gnu.org>
parents:
diff changeset
1423 Insert at point most recently deleted/yanked text from anonymous register.
Dave Love <fx@gnu.org>
parents:
diff changeset
1424 Given a register name argument, the content of the named register will
Dave Love <fx@gnu.org>
parents:
diff changeset
1425 be put back. Given a count, the command will be repeated that many times.
Dave Love <fx@gnu.org>
parents:
diff changeset
1426 This command also checks if the text to put back ends with a new line
Dave Love <fx@gnu.org>
parents:
diff changeset
1427 character, and if so the text will be put above the current line rather
Dave Love <fx@gnu.org>
parents:
diff changeset
1428 than at point (@code{vip-Put-back}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1429 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1430 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
1431 @cindex number register
Dave Love <fx@gnu.org>
parents:
diff changeset
1432 Thus, @kbd{" c p} will put back the content of the register @kbd{c} into the
Dave Love <fx@gnu.org>
parents:
diff changeset
1433 buffer. It is also possible to specify @dfn{number register} which is a
Dave Love <fx@gnu.org>
parents:
diff changeset
1434 numeral between @kbd{1} and @kbd{9}. If the number register @var{n} is
Dave Love <fx@gnu.org>
parents:
diff changeset
1435 specified, @var{n}-th previously deleted/yanked text will be put back. It
Dave Love <fx@gnu.org>
parents:
diff changeset
1436 is an error to specify a number register for the delete/yank commands.
Dave Love <fx@gnu.org>
parents:
diff changeset
1437
Dave Love <fx@gnu.org>
parents:
diff changeset
1438 @node Change Commands, Repeating and Undoing Modifications, Put Back Commands, Modifying Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1439 @subsection Change Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1440
Dave Love <fx@gnu.org>
parents:
diff changeset
1441 Most commonly used change command takes the following form.
Dave Love <fx@gnu.org>
parents:
diff changeset
1442
Dave Love <fx@gnu.org>
parents:
diff changeset
1443 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1444 @item c @var{motion-command}
Dave Love <fx@gnu.org>
parents:
diff changeset
1445 @kindex 1430 @kbd{c} (@code{vip-command-argument})
Dave Love <fx@gnu.org>
parents:
diff changeset
1446 Replace the content of the region determined by the motion command
Dave Love <fx@gnu.org>
parents:
diff changeset
1447 @var{motion-command} by the text you type. If the motion command is a
Dave Love <fx@gnu.org>
parents:
diff changeset
1448 point command then you will type the text into minibuffer, and if the
Dave Love <fx@gnu.org>
parents:
diff changeset
1449 motion command is a line command then the region will be deleted first and
Dave Love <fx@gnu.org>
parents:
diff changeset
1450 you can insert the text in @var{insert mode}.
Dave Love <fx@gnu.org>
parents:
diff changeset
1451 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1452 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
1453 For example, if point is at the beginning of a word @samp{foo} and you
Dave Love <fx@gnu.org>
parents:
diff changeset
1454 wish to change it to @samp{bar}, you can type @kbd{c w}. Then, as @kbd{w}
Dave Love <fx@gnu.org>
parents:
diff changeset
1455 is a point command, you will get the prompt @samp{foo =>} in the
Dave Love <fx@gnu.org>
parents:
diff changeset
1456 minibuffer, for which you can type @kbd{b a r @key{RET}} to complete the change
Dave Love <fx@gnu.org>
parents:
diff changeset
1457 command.@refill
Dave Love <fx@gnu.org>
parents:
diff changeset
1458
Dave Love <fx@gnu.org>
parents:
diff changeset
1459 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1460 @item c c
Dave Love <fx@gnu.org>
parents:
diff changeset
1461 @kindex 1432 @kbd{c c}
Dave Love <fx@gnu.org>
parents:
diff changeset
1462 Change a line. Given a count, that many lines are changed.
Dave Love <fx@gnu.org>
parents:
diff changeset
1463 @item c r
Dave Love <fx@gnu.org>
parents:
diff changeset
1464 @kindex 1432 @kbd{c r}
Dave Love <fx@gnu.org>
parents:
diff changeset
1465 Change current region.
Dave Love <fx@gnu.org>
parents:
diff changeset
1466 @item c R
Dave Love <fx@gnu.org>
parents:
diff changeset
1467 @kindex 1431 @kbd{c R}
Dave Love <fx@gnu.org>
parents:
diff changeset
1468 Expand current region and change it.
Dave Love <fx@gnu.org>
parents:
diff changeset
1469 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1470
Dave Love <fx@gnu.org>
parents:
diff changeset
1471 @node Repeating and Undoing Modifications, Other Vi Commands, Change Commands, Modifying Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1472 @subsection Repeating and Undoing Modifications
Dave Love <fx@gnu.org>
parents:
diff changeset
1473
Dave Love <fx@gnu.org>
parents:
diff changeset
1474 VIP records the previous modifying command, so that it is easy to repeat
Dave Love <fx@gnu.org>
parents:
diff changeset
1475 it. It is also very easy to undo changes made by modifying commands.
Dave Love <fx@gnu.org>
parents:
diff changeset
1476
Dave Love <fx@gnu.org>
parents:
diff changeset
1477 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1478 @item u
Dave Love <fx@gnu.org>
parents:
diff changeset
1479 @kindex 165 @kbd{u} (@code{vip-undo})
Dave Love <fx@gnu.org>
parents:
diff changeset
1480 Undo the last change. You can undo more by repeating undo by the repeat
Dave Love <fx@gnu.org>
parents:
diff changeset
1481 command @samp{.}. For example, you can undo 5 previous changes by typing
Dave Love <fx@gnu.org>
parents:
diff changeset
1482 @samp{u....}. If you type @samp{uu}, then the second @samp{u} undoes the
Dave Love <fx@gnu.org>
parents:
diff changeset
1483 first undo command (@code{vip-undo}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1484 @item .
Dave Love <fx@gnu.org>
parents:
diff changeset
1485 @kindex 056 @kbd{.} (@code{vip-repeat})
Dave Love <fx@gnu.org>
parents:
diff changeset
1486 Repeat the last modifying command. Given count @var{n} it becomes the new
Dave Love <fx@gnu.org>
parents:
diff changeset
1487 count for the repeated command. Otherwise, the count for the last
Dave Love <fx@gnu.org>
parents:
diff changeset
1488 modifying command is used again (@code{vip-repeat}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1489 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1490
Dave Love <fx@gnu.org>
parents:
diff changeset
1491 @node Other Vi Commands, Commands in Insert Mode, Repeating and Undoing Modifications, Vi Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1492 @section Other Vi Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1493
Dave Love <fx@gnu.org>
parents:
diff changeset
1494 Miscellaneous Vi commands are collected here.
Dave Love <fx@gnu.org>
parents:
diff changeset
1495
Dave Love <fx@gnu.org>
parents:
diff changeset
1496 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1497 @item Z Z
Dave Love <fx@gnu.org>
parents:
diff changeset
1498 @kindex 132 @kbd{Z Z} (@code{save-buffers-kill-emacs})
Dave Love <fx@gnu.org>
parents:
diff changeset
1499 Exit Emacs. If modified buffers exist, you will be asked whether you wish
Dave Love <fx@gnu.org>
parents:
diff changeset
1500 to save them or not (@code{save-buffers-kill-emacs}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1501 @item !@: @var{motion-command} @var{format-command}
Dave Love <fx@gnu.org>
parents:
diff changeset
1502 @itemx @var{n} !@: !@: @var{format-command}
Dave Love <fx@gnu.org>
parents:
diff changeset
1503 @kindex 041 @kbd{!} (@code{vip-command-argument})
Dave Love <fx@gnu.org>
parents:
diff changeset
1504 The region determined by the motion command @var{motion-command} will be
Dave Love <fx@gnu.org>
parents:
diff changeset
1505 given to the shell command @var{format-command} and the region will be
Dave Love <fx@gnu.org>
parents:
diff changeset
1506 replaced by its output. If a count is given, it will be passed to
Dave Love <fx@gnu.org>
parents:
diff changeset
1507 @var{motion-command}. For example, @samp{3!Gsort} will sort the region
Dave Love <fx@gnu.org>
parents:
diff changeset
1508 between point and the 3rd line. If @kbd{!} is used instead of
Dave Love <fx@gnu.org>
parents:
diff changeset
1509 @var{motion-command} then @var{n} lines will be processed by
Dave Love <fx@gnu.org>
parents:
diff changeset
1510 @var{format-command} (@code{vip-command-argument}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1511 @item J
Dave Love <fx@gnu.org>
parents:
diff changeset
1512 @kindex 112 @kbd{J} (@code{vip-join-lines})
Dave Love <fx@gnu.org>
parents:
diff changeset
1513 Join two lines. Given count, join that many lines. A space will be
Dave Love <fx@gnu.org>
parents:
diff changeset
1514 inserted at each junction (@code{vip-join-lines}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1515 @item < @var{motion-command}
Dave Love <fx@gnu.org>
parents:
diff changeset
1516 @itemx @var{n} < <
Dave Love <fx@gnu.org>
parents:
diff changeset
1517 @kindex 074 @kbd{<} (@code{vip-command-argument})
Dave Love <fx@gnu.org>
parents:
diff changeset
1518 Shift region determined by the motion command @var{motion-command} to
Dave Love <fx@gnu.org>
parents:
diff changeset
1519 left by @var{shift-width} (default is 8). If @kbd{<} is used instead of
Dave Love <fx@gnu.org>
parents:
diff changeset
1520 @var{motion-command} then shift @var{n} lines
Dave Love <fx@gnu.org>
parents:
diff changeset
1521 @*(@code{vip-command-argument}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1522 @item > @var{motion-command}
Dave Love <fx@gnu.org>
parents:
diff changeset
1523 @itemx @var{n} > >
Dave Love <fx@gnu.org>
parents:
diff changeset
1524 @kindex 076 @kbd{>} (@code{vip-command-argument})
Dave Love <fx@gnu.org>
parents:
diff changeset
1525 Shift region determined by the motion command @var{motion-command} to
Dave Love <fx@gnu.org>
parents:
diff changeset
1526 right by @var{shift-width} (default is 8). If @kbd{<} is used instead of
Dave Love <fx@gnu.org>
parents:
diff changeset
1527 @var{motion-command} then shift @var{n} lines
Dave Love <fx@gnu.org>
parents:
diff changeset
1528 @*(@code{vip-command-argument}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1529 @item = @var{motion-command}
Dave Love <fx@gnu.org>
parents:
diff changeset
1530 @kindex 075 @kbd{=} (@code{vip-command-argument})
Dave Love <fx@gnu.org>
parents:
diff changeset
1531 Indent region determined by the motion command @var{motion-command}. If
Dave Love <fx@gnu.org>
parents:
diff changeset
1532 @kbd{=} is used instead of @var{motion-command} then indent @var{n} lines
Dave Love <fx@gnu.org>
parents:
diff changeset
1533 (@code{vip-command-argument}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1534 @item *
Dave Love <fx@gnu.org>
parents:
diff changeset
1535 @kindex 052 @kbd{*} (@code{vip-call-last-kbd-macro})
Dave Love <fx@gnu.org>
parents:
diff changeset
1536 Call last remembered keyboard macro.
Dave Love <fx@gnu.org>
parents:
diff changeset
1537 @item #
Dave Love <fx@gnu.org>
parents:
diff changeset
1538 A new vi operator. @xref{New Commands}, for more details.
Dave Love <fx@gnu.org>
parents:
diff changeset
1539 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1540
Dave Love <fx@gnu.org>
parents:
diff changeset
1541 The following keys are reserved for future extensions, and currently
Dave Love <fx@gnu.org>
parents:
diff changeset
1542 assigned to a function that just beeps (@code{vip-nil}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1543
Dave Love <fx@gnu.org>
parents:
diff changeset
1544 @kindex 046 @kbd{&} (@code{vip-nil})
Dave Love <fx@gnu.org>
parents:
diff changeset
1545 @kindex 100 @kbd{@@} (@code{vip-nil})
Dave Love <fx@gnu.org>
parents:
diff changeset
1546 @kindex 125 @kbd{U} (@code{vip-nil})
Dave Love <fx@gnu.org>
parents:
diff changeset
1547 @kindex 133 @kbd{[} (@code{vip-nil})
Dave Love <fx@gnu.org>
parents:
diff changeset
1548 @kindex 135 @kbd{]} (@code{vip-nil})
Dave Love <fx@gnu.org>
parents:
diff changeset
1549 @kindex 137 @kbd{_} (@code{vip-nil})
Dave Love <fx@gnu.org>
parents:
diff changeset
1550 @kindex 161 @kbd{q} (@code{vip-nil})
Dave Love <fx@gnu.org>
parents:
diff changeset
1551 @kindex 176 @kbd{~} (@code{vip-nil})
Dave Love <fx@gnu.org>
parents:
diff changeset
1552
Dave Love <fx@gnu.org>
parents:
diff changeset
1553 @example
Dave Love <fx@gnu.org>
parents:
diff changeset
1554 &, @@, U, [, ], _, q, ~
Dave Love <fx@gnu.org>
parents:
diff changeset
1555 @end example
Dave Love <fx@gnu.org>
parents:
diff changeset
1556
Dave Love <fx@gnu.org>
parents:
diff changeset
1557 VIP uses a special local keymap to interpret key strokes you enter in vi
Dave Love <fx@gnu.org>
parents:
diff changeset
1558 mode. The following keys are bound to @var{nil} in the keymap. Therefore,
Dave Love <fx@gnu.org>
parents:
diff changeset
1559 these keys are interpreted by the global keymap of Emacs. We give below a
Dave Love <fx@gnu.org>
parents:
diff changeset
1560 short description of the functions bound to these keys in the global
Dave Love <fx@gnu.org>
parents:
diff changeset
1561 keymap. See GNU Emacs Manual for details.
Dave Love <fx@gnu.org>
parents:
diff changeset
1562
Dave Love <fx@gnu.org>
parents:
diff changeset
1563 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1564 @item C-@@
Dave Love <fx@gnu.org>
parents:
diff changeset
1565 @kindex 000 @kbd{C-@@} (@code{set-mark-command})
Dave Love <fx@gnu.org>
parents:
diff changeset
1566 Set mark and push previous mark on mark ring (@code{set-mark-command}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1567 @item TAB
Dave Love <fx@gnu.org>
parents:
diff changeset
1568 @kindex 011 @kbd{TAB} (@code{indent-for-tab-command})
Dave Love <fx@gnu.org>
parents:
diff changeset
1569 Indent line for current major mode (@code{indent-for-tab-command}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1570 @item C-j
Dave Love <fx@gnu.org>
parents:
diff changeset
1571 @kindex 012 @kbd{C-j} (@code{newline-and-indent})
Dave Love <fx@gnu.org>
parents:
diff changeset
1572 Insert a newline, then indent according to mode (@code{newline-and-indent}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1573 @item C-k
Dave Love <fx@gnu.org>
parents:
diff changeset
1574 @kindex 013 @kbd{C-k} (@code{kill-line})
Dave Love <fx@gnu.org>
parents:
diff changeset
1575 Kill the rest of the current line; before a newline, kill the newline.
Dave Love <fx@gnu.org>
parents:
diff changeset
1576 With a numeric argument, kill that many lines from point. Negative arguments
Dave Love <fx@gnu.org>
parents:
diff changeset
1577 kill lines backward (@code{kill-line}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1578 @item C-l
Dave Love <fx@gnu.org>
parents:
diff changeset
1579 @kindex 014 @kbd{C-l} (@code{recenter})
Dave Love <fx@gnu.org>
parents:
diff changeset
1580 Clear the screen and reprint everything (@code{recenter}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1581 @item @var{n} C-p
Dave Love <fx@gnu.org>
parents:
diff changeset
1582 @kindex 020 @kbd{C-p} (@code{previous-line})
Dave Love <fx@gnu.org>
parents:
diff changeset
1583 Move cursor vertically up @var{n} lines (@code{previous-line}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1584 @item C-q
Dave Love <fx@gnu.org>
parents:
diff changeset
1585 @kindex 021 @kbd{C-q} (@code{quoted-insert})
Dave Love <fx@gnu.org>
parents:
diff changeset
1586 Read next input character and insert it. Useful for inserting control
Dave Love <fx@gnu.org>
parents:
diff changeset
1587 characters
Dave Love <fx@gnu.org>
parents:
diff changeset
1588 @*(@code{quoted-insert}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1589 @item C-r
Dave Love <fx@gnu.org>
parents:
diff changeset
1590 @kindex 022 @kbd{C-r} (@code{isearch-backward})
Dave Love <fx@gnu.org>
parents:
diff changeset
1591 Search backward incrementally (@code{isearch-backward}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1592 @item C-s
Dave Love <fx@gnu.org>
parents:
diff changeset
1593 @kindex 023 @kbd{C-s} (@code{isearch-forward})
Dave Love <fx@gnu.org>
parents:
diff changeset
1594 Search forward incrementally (@code{isearch-forward}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1595 @item @var{n} C-t
Dave Love <fx@gnu.org>
parents:
diff changeset
1596 @kindex 024 @kbd{C-t} (@code{transpose-chars})
Dave Love <fx@gnu.org>
parents:
diff changeset
1597 Interchange characters around point, moving forward one character. With
Dave Love <fx@gnu.org>
parents:
diff changeset
1598 count @var{n}, take character before point and drag it forward past @var{n}
Dave Love <fx@gnu.org>
parents:
diff changeset
1599 other characters. If no argument and at end of line, the previous two
Dave Love <fx@gnu.org>
parents:
diff changeset
1600 characters are exchanged (@code{transpose-chars}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1601 @item @var{n} C-v
Dave Love <fx@gnu.org>
parents:
diff changeset
1602 @kindex 026 @kbd{C-v} (@code{scroll-up})
Dave Love <fx@gnu.org>
parents:
diff changeset
1603 Scroll text upward @var{n} lines. If @var{n} is not given, scroll near
Dave Love <fx@gnu.org>
parents:
diff changeset
1604 full screen (@code{scroll-up}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1605 @item C-w
Dave Love <fx@gnu.org>
parents:
diff changeset
1606 @kindex 027 @kbd{C-w} (@code{kill-region})
Dave Love <fx@gnu.org>
parents:
diff changeset
1607 Kill between point and mark. The text is save in the kill ring. The
Dave Love <fx@gnu.org>
parents:
diff changeset
1608 command @kbd{P} or @kbd{p} can retrieve it from kill ring
Dave Love <fx@gnu.org>
parents:
diff changeset
1609 (@code{kill-region}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1610 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1611
Dave Love <fx@gnu.org>
parents:
diff changeset
1612 @node Commands in Insert Mode, Ex Commands, Other Vi Commands, Vi Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1613 @section Insert Mode
Dave Love <fx@gnu.org>
parents:
diff changeset
1614
Dave Love <fx@gnu.org>
parents:
diff changeset
1615 You can enter insert mode by one of the following commands. In addition to
Dave Love <fx@gnu.org>
parents:
diff changeset
1616 these, you will enter insert mode if you give a change command with a line
Dave Love <fx@gnu.org>
parents:
diff changeset
1617 command as the motion command. Insert commands are also modifying commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1618 and you can repeat them by the repeat command @kbd{.} (@code{vip-repeat}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1619
Dave Love <fx@gnu.org>
parents:
diff changeset
1620 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1621 @item i
Dave Love <fx@gnu.org>
parents:
diff changeset
1622 @kindex 151 @kbd{i} (@code{vip-insert})
Dave Love <fx@gnu.org>
parents:
diff changeset
1623 Enter insert mode at point (@code{vip-insert}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1624 @item I
Dave Love <fx@gnu.org>
parents:
diff changeset
1625 @kindex 111 @kbd{I} (@code{vip-Insert})
Dave Love <fx@gnu.org>
parents:
diff changeset
1626 Enter insert mode at the first non white character on the line
Dave Love <fx@gnu.org>
parents:
diff changeset
1627 (@code{vip-Insert}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1628 @item a
Dave Love <fx@gnu.org>
parents:
diff changeset
1629 @kindex 141 @kbd{a} (@code{vip-append})
Dave Love <fx@gnu.org>
parents:
diff changeset
1630 Move point forward by one character and then enter insert mode
Dave Love <fx@gnu.org>
parents:
diff changeset
1631 (@code{vip-append}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1632 @item A
Dave Love <fx@gnu.org>
parents:
diff changeset
1633 @kindex 101 @kbd{A} (@code{vip-Append})
Dave Love <fx@gnu.org>
parents:
diff changeset
1634 Enter insert mode at end of line (@code{vip-Append}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1635 @item o
Dave Love <fx@gnu.org>
parents:
diff changeset
1636 @kindex 157 @kbd{o} (@code{vip-open-line})
Dave Love <fx@gnu.org>
parents:
diff changeset
1637 Open a new line below the current line and enter insert mode
Dave Love <fx@gnu.org>
parents:
diff changeset
1638 (@code{vip-open-line}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1639 @item O
Dave Love <fx@gnu.org>
parents:
diff changeset
1640 @kindex 117 @kbd{O} (@code{vip-Open-line})
Dave Love <fx@gnu.org>
parents:
diff changeset
1641 Open a new line above the current line and enter insert mode
Dave Love <fx@gnu.org>
parents:
diff changeset
1642 (@code{vip-Open-line}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1643 @item C-o
Dave Love <fx@gnu.org>
parents:
diff changeset
1644 @kindex 017 @kbd{C-o} (@code{vip-open-line-at-point})
Dave Love <fx@gnu.org>
parents:
diff changeset
1645 Insert a newline and leave point before it, and then enter insert mode
Dave Love <fx@gnu.org>
parents:
diff changeset
1646 @*(@code{vip-open-line-at-point}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1647 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1648
Dave Love <fx@gnu.org>
parents:
diff changeset
1649 Insert mode is almost like emacs mode. Only the following 4 keys behave
Dave Love <fx@gnu.org>
parents:
diff changeset
1650 differently from emacs mode.
Dave Love <fx@gnu.org>
parents:
diff changeset
1651
Dave Love <fx@gnu.org>
parents:
diff changeset
1652 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1653 @item @key{ESC}
Dave Love <fx@gnu.org>
parents:
diff changeset
1654 @kindex 033 @kbd{ESC} (@code{vip-change-mode-to-vi}) (insert mode)
Dave Love <fx@gnu.org>
parents:
diff changeset
1655 This key will take you back to vi mode (@code{vip-change-mode-to-vi}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1656 @item C-h
Dave Love <fx@gnu.org>
parents:
diff changeset
1657 @kindex 010 @kbd{C-h} (@code{delete-backward-char}) (insert mode)
Dave Love <fx@gnu.org>
parents:
diff changeset
1658 Delete previous character (@code{delete-backward-char}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1659 @item C-w
Dave Love <fx@gnu.org>
parents:
diff changeset
1660 @kindex 027 @kbd{C-w} (@code{vip-delete-backward-word}) (insert mode)
Dave Love <fx@gnu.org>
parents:
diff changeset
1661 Delete previous word (@code{vip-delete-backward-word}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1662 @item C-z
Dave Love <fx@gnu.org>
parents:
diff changeset
1663 @kindex 032 @kbd{C-z} (@code{vip-ESC}) (insert mode)
Dave Love <fx@gnu.org>
parents:
diff changeset
1664 This key simulates @key{ESC} key in emacs mode. For instance, typing
Dave Love <fx@gnu.org>
parents:
diff changeset
1665 @kbd{C-z x} in insert mode iw the same as typing @kbd{ESC x} in emacs mode
Dave Love <fx@gnu.org>
parents:
diff changeset
1666 (@code{vip-ESC}).
Dave Love <fx@gnu.org>
parents:
diff changeset
1667 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1668 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
1669 You can also bind @kbd{C-h} to @code{help-command} if you like.
Dave Love <fx@gnu.org>
parents:
diff changeset
1670 (@xref{Customizing Key Bindings}, for details.) Binding @kbd{C-h} to
Dave Love <fx@gnu.org>
parents:
diff changeset
1671 @code{help-command} has the effect of making the meaning of @kbd{C-h}
Dave Love <fx@gnu.org>
parents:
diff changeset
1672 uniform among emacs, vi and insert modes.
Dave Love <fx@gnu.org>
parents:
diff changeset
1673
Dave Love <fx@gnu.org>
parents:
diff changeset
1674 When you enter insert mode, VIP records point as the start point of
Dave Love <fx@gnu.org>
parents:
diff changeset
1675 insertion, and when you leave insert mode the region between point and
Dave Love <fx@gnu.org>
parents:
diff changeset
1676 start point is saved for later use by repeat command etc. Therefore, repeat
Dave Love <fx@gnu.org>
parents:
diff changeset
1677 command will not really repeat insertion if you move point by emacs
Dave Love <fx@gnu.org>
parents:
diff changeset
1678 commands while in insert mode.
Dave Love <fx@gnu.org>
parents:
diff changeset
1679
Dave Love <fx@gnu.org>
parents:
diff changeset
1680 @node Ex Commands, Ex Command Reference, Commands in Insert Mode, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
1681 @chapter Ex Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1682
Dave Love <fx@gnu.org>
parents:
diff changeset
1683 @kindex 072 @kbd{:} (@code{vip-ex})
Dave Love <fx@gnu.org>
parents:
diff changeset
1684
Dave Love <fx@gnu.org>
parents:
diff changeset
1685 In vi mode, you can execute an Ex command @var{ex-command} by typing:
Dave Love <fx@gnu.org>
parents:
diff changeset
1686 @example
Dave Love <fx@gnu.org>
parents:
diff changeset
1687 @kbd{:@: @var{ex-command} @key{RET}}
Dave Love <fx@gnu.org>
parents:
diff changeset
1688 @end example
Dave Love <fx@gnu.org>
parents:
diff changeset
1689 Every Ex command follows the following pattern:
Dave Love <fx@gnu.org>
parents:
diff changeset
1690 @example
Dave Love <fx@gnu.org>
parents:
diff changeset
1691 @var{address command} @kbd{!}@: @var{parameters count flags}
Dave Love <fx@gnu.org>
parents:
diff changeset
1692 @end example
Dave Love <fx@gnu.org>
parents:
diff changeset
1693 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
1694 @cindex address
Dave Love <fx@gnu.org>
parents:
diff changeset
1695 where all parts are optional. For the syntax of @dfn{address}, the reader
Dave Love <fx@gnu.org>
parents:
diff changeset
1696 is referred to the reference manual of Ex.
Dave Love <fx@gnu.org>
parents:
diff changeset
1697
Dave Love <fx@gnu.org>
parents:
diff changeset
1698 @cindex magic
Dave Love <fx@gnu.org>
parents:
diff changeset
1699 @cindex regular expression
Dave Love <fx@gnu.org>
parents:
diff changeset
1700
Dave Love <fx@gnu.org>
parents:
diff changeset
1701 In the current version of VIP, searching by Ex commands is always
Dave Love <fx@gnu.org>
parents:
diff changeset
1702 @dfn{magic}. That is, search patterns are always treated as @dfn{regular
Dave Love <fx@gnu.org>
parents:
diff changeset
1703 expressions}. For example, a typical forward search would be invoked by
Dave Love <fx@gnu.org>
parents:
diff changeset
1704 @kbd{:/@var{pat}/}. If you wish to include @samp{/} as part of
Dave Love <fx@gnu.org>
parents:
diff changeset
1705 @var{pat} you must preceded it by @samp{\}. VIP strips off these @kbd{\}'s
Dave Love <fx@gnu.org>
parents:
diff changeset
1706 before @kbd{/} and the resulting @var{pat} becomes the actual search
Dave Love <fx@gnu.org>
parents:
diff changeset
1707 pattern. Emacs provides a different and richer class or regular
Dave Love <fx@gnu.org>
parents:
diff changeset
1708 expressions than Vi/Ex, and VIP uses Emacs' regular expressions. See GNU
Dave Love <fx@gnu.org>
parents:
diff changeset
1709 Emacs Manual for details of regular expressions.
Dave Love <fx@gnu.org>
parents:
diff changeset
1710
Dave Love <fx@gnu.org>
parents:
diff changeset
1711 Several Ex commands can be entered in a line by separating them by a pipe
Dave Love <fx@gnu.org>
parents:
diff changeset
1712 character @samp{|}.
Dave Love <fx@gnu.org>
parents:
diff changeset
1713
Dave Love <fx@gnu.org>
parents:
diff changeset
1714 @menu
Dave Love <fx@gnu.org>
parents:
diff changeset
1715 * Ex Command Reference:: Explain all the Ex commands available in VIP.
Dave Love <fx@gnu.org>
parents:
diff changeset
1716 @end menu
Dave Love <fx@gnu.org>
parents:
diff changeset
1717 @node Ex Command Reference, Customization, Ex Commands, Ex Commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1718 @section Ex Command Reference
Dave Love <fx@gnu.org>
parents:
diff changeset
1719 In this section we briefly explain all the Ex commands supported by VIP.
Dave Love <fx@gnu.org>
parents:
diff changeset
1720 Most Ex commands expect @var{address} as their argument, and they use
Dave Love <fx@gnu.org>
parents:
diff changeset
1721 default addresses if they are not explicitly given. In the following, such
Dave Love <fx@gnu.org>
parents:
diff changeset
1722 default addresses will be shown in parentheses.
Dave Love <fx@gnu.org>
parents:
diff changeset
1723
Dave Love <fx@gnu.org>
parents:
diff changeset
1724 Most command names can and preferably be given in abbreviated forms. In
Dave Love <fx@gnu.org>
parents:
diff changeset
1725 the following, optional parts of command names will be enclosed in
Dave Love <fx@gnu.org>
parents:
diff changeset
1726 brackets. For example, @samp{co[py]} will mean that copy command can be
Dave Love <fx@gnu.org>
parents:
diff changeset
1727 give as @samp{co} or @samp{cop} or @samp{copy}.
Dave Love <fx@gnu.org>
parents:
diff changeset
1728
Dave Love <fx@gnu.org>
parents:
diff changeset
1729 If @var{command} is empty, point will move to the beginning of the line
Dave Love <fx@gnu.org>
parents:
diff changeset
1730 specified by the @var{address}. If @var{address} is also empty, point will
Dave Love <fx@gnu.org>
parents:
diff changeset
1731 move to the beginning of the current line.
Dave Love <fx@gnu.org>
parents:
diff changeset
1732
Dave Love <fx@gnu.org>
parents:
diff changeset
1733 @cindex flag
Dave Love <fx@gnu.org>
parents:
diff changeset
1734
Dave Love <fx@gnu.org>
parents:
diff changeset
1735 Some commands accept @dfn{flags} which are one of @kbd{p}, @kbd{l} and
Dave Love <fx@gnu.org>
parents:
diff changeset
1736 @kbd{#}. If @var{flags} are given, the text affected by the commands will
Dave Love <fx@gnu.org>
parents:
diff changeset
1737 be displayed on a temporary window, and you will be asked to hit return to
Dave Love <fx@gnu.org>
parents:
diff changeset
1738 continue. In this way, you can see the text affected by the commands
Dave Love <fx@gnu.org>
parents:
diff changeset
1739 before the commands will be executed. If you hit @kbd{C-g} instead of
Dave Love <fx@gnu.org>
parents:
diff changeset
1740 @key{RET} then the commands will be aborted. Note that the meaning of
Dave Love <fx@gnu.org>
parents:
diff changeset
1741 @var{flags} is different in VIP from that in Vi/Ex.
Dave Love <fx@gnu.org>
parents:
diff changeset
1742
Dave Love <fx@gnu.org>
parents:
diff changeset
1743 @table @kbd
Dave Love <fx@gnu.org>
parents:
diff changeset
1744 @item (.,.@:) co[py] @var{addr} @var{flags}
Dave Love <fx@gnu.org>
parents:
diff changeset
1745 @itemx (.,.@:) t @var{addr} @var{flags}
Dave Love <fx@gnu.org>
parents:
diff changeset
1746 Place a copy of specified lines after @var{addr}. If @var{addr} is
Dave Love <fx@gnu.org>
parents:
diff changeset
1747 @kbd{0}, it will be placed before the first line.
Dave Love <fx@gnu.org>
parents:
diff changeset
1748 @item (.,.@:) d[elete] @var{register} @var{count} @var{flags}
Dave Love <fx@gnu.org>
parents:
diff changeset
1749 Delete specified lines. Text will be saved in a named @var{register} if a
Dave Love <fx@gnu.org>
parents:
diff changeset
1750 lower-case letter is given, and appended to a register if a capital letter is
Dave Love <fx@gnu.org>
parents:
diff changeset
1751 given.
Dave Love <fx@gnu.org>
parents:
diff changeset
1752 @item e[dit] !@: +@var{addr} @var{file}
Dave Love <fx@gnu.org>
parents:
diff changeset
1753 @itemx e[x] !@: +@var{addr} @var{file}
Dave Love <fx@gnu.org>
parents:
diff changeset
1754 @itemx vi[sual] !@: +@var{addr} @var{file}
Dave Love <fx@gnu.org>
parents:
diff changeset
1755 Edit a new file @var{file} in the current window. The command will abort
Dave Love <fx@gnu.org>
parents:
diff changeset
1756 if current buffer is modified, which you can override by giving @kbd{!}.
Dave Love <fx@gnu.org>
parents:
diff changeset
1757 If @kbd{+}@var{addr} is given, @var{addr} becomes the current line.
Dave Love <fx@gnu.org>
parents:
diff changeset
1758 @item file
Dave Love <fx@gnu.org>
parents:
diff changeset
1759 Give information about the current file.
Dave Love <fx@gnu.org>
parents:
diff changeset
1760 @item (1,$) g[lobal] !@: /@var{pat}/ @var{cmds}
Dave Love <fx@gnu.org>
parents:
diff changeset
1761 @itemx (1,$) v /@var{pat}/ @var{cmds}
Dave Love <fx@gnu.org>
parents:
diff changeset
1762 Among specified lines first mark each line which matches the regular
Dave Love <fx@gnu.org>
parents:
diff changeset
1763 expression @var{pat}, and then execute @var{cmds} on each marked line.
Dave Love <fx@gnu.org>
parents:
diff changeset
1764 If @kbd{!}@: is given, @var{cmds} will be executed on each line not matching
Dave Love <fx@gnu.org>
parents:
diff changeset
1765 @var{pat}. @kbd{v} is same as @kbd{g!}.
Dave Love <fx@gnu.org>
parents:
diff changeset
1766 @item (.,.+1) j[oin] !@: @var{count} @var{flags}
Dave Love <fx@gnu.org>
parents:
diff changeset
1767 Join specified lines into a line. Without @kbd{!}, a space character will
Dave Love <fx@gnu.org>
parents:
diff changeset
1768 be inserted at each junction.
Dave Love <fx@gnu.org>
parents:
diff changeset
1769 @item (.@:) k @var{ch}
Dave Love <fx@gnu.org>
parents:
diff changeset
1770 @itemx (.@:) mar[k] @var{ch}
Dave Love <fx@gnu.org>
parents:
diff changeset
1771 Mark specified line by a lower-case character @var{ch}. Then the
Dave Love <fx@gnu.org>
parents:
diff changeset
1772 addressing form @kbd{'}@var{ch} will refer to this line. No white space is
Dave Love <fx@gnu.org>
parents:
diff changeset
1773 required between @kbd{k} and @var{ch}. A white space is necessary between
Dave Love <fx@gnu.org>
parents:
diff changeset
1774 @kbd{mark} and @var{ch}, however.
Dave Love <fx@gnu.org>
parents:
diff changeset
1775 @item map @var{ch} @var{rhs}
Dave Love <fx@gnu.org>
parents:
diff changeset
1776 Define a macro for vi mode. After this command, the character @var{ch}
Dave Love <fx@gnu.org>
parents:
diff changeset
1777 will be expanded to @var{rhs} in vi mode.
Dave Love <fx@gnu.org>
parents:
diff changeset
1778 @item (.,.@:) m[ove] @var{addr}
Dave Love <fx@gnu.org>
parents:
diff changeset
1779 Move specified lines after @var{addr}.
Dave Love <fx@gnu.org>
parents:
diff changeset
1780 @item (.@:) pu[t] @var{register}
Dave Love <fx@gnu.org>
parents:
diff changeset
1781 Put back previously deleted or yanked text. If @var{register} is given,
Dave Love <fx@gnu.org>
parents:
diff changeset
1782 the text saved in the register will be put back; otherwise, last deleted or
Dave Love <fx@gnu.org>
parents:
diff changeset
1783 yanked text will be put back.
Dave Love <fx@gnu.org>
parents:
diff changeset
1784 @item q[uit] !
Dave Love <fx@gnu.org>
parents:
diff changeset
1785 Quit from Emacs. If modified buffers with associated files exist, you will
Dave Love <fx@gnu.org>
parents:
diff changeset
1786 be asked whether you wish to save each of them. At this point, you may
Dave Love <fx@gnu.org>
parents:
diff changeset
1787 choose not to quit, by hitting @kbd{C-g}. If @kbd{!}@: is given, exit from
Dave Love <fx@gnu.org>
parents:
diff changeset
1788 Emacs without saving modified buffers.
Dave Love <fx@gnu.org>
parents:
diff changeset
1789 @item (.@:) r[ead] @var{file}
Dave Love <fx@gnu.org>
parents:
diff changeset
1790 Read in the content of the file @var{file} after the specified line.
Dave Love <fx@gnu.org>
parents:
diff changeset
1791 @item (.@:) r[ead] !@: @var{command}
Dave Love <fx@gnu.org>
parents:
diff changeset
1792 Read in the output of the shell command @var{command} after the specified
Dave Love <fx@gnu.org>
parents:
diff changeset
1793 line.
Dave Love <fx@gnu.org>
parents:
diff changeset
1794 @item se[t]
Dave Love <fx@gnu.org>
parents:
diff changeset
1795 Set a variable's value. @xref{Customizing Constants}, for the list of variables
Dave Love <fx@gnu.org>
parents:
diff changeset
1796 you can set.
Dave Love <fx@gnu.org>
parents:
diff changeset
1797 @item sh[ell]
Dave Love <fx@gnu.org>
parents:
diff changeset
1798 Run a subshell in a window.
Dave Love <fx@gnu.org>
parents:
diff changeset
1799 @item (.,.@:) s[ubstitute] /@var{pat}/@var{repl}/ @var{options} @var{count} @var{flags}
Dave Love <fx@gnu.org>
parents:
diff changeset
1800 @itemx (.,.@:) & @var{options} @var{count} @var{flags}
Dave Love <fx@gnu.org>
parents:
diff changeset
1801 On each specified line, the first occurrence of string matching regular
Dave Love <fx@gnu.org>
parents:
diff changeset
1802 expression @var{pat} is replaced by replacement pattern @var{repl}. Option
Dave Love <fx@gnu.org>
parents:
diff changeset
1803 characters are @kbd{g} and @kbd{c}. If global option character @kbd{g}
Dave Love <fx@gnu.org>
parents:
diff changeset
1804 appears as part of @var{options}, all occurrences are substituted. If
Dave Love <fx@gnu.org>
parents:
diff changeset
1805 confirm option character @kbd{c} appears, you will be asked to give
Dave Love <fx@gnu.org>
parents:
diff changeset
1806 confirmation before each substitution. If @kbd{/@var{pat}/@var{repl}/} is
Dave Love <fx@gnu.org>
parents:
diff changeset
1807 missing, the last substitution is repeated.
Dave Love <fx@gnu.org>
parents:
diff changeset
1808 @item st[op]
Dave Love <fx@gnu.org>
parents:
diff changeset
1809 Suspend Emacs.
Dave Love <fx@gnu.org>
parents:
diff changeset
1810 @item ta[g] @var{tag}
Dave Love <fx@gnu.org>
parents:
diff changeset
1811 @cindex tag
Dave Love <fx@gnu.org>
parents:
diff changeset
1812 @cindex selected tags table
Dave Love <fx@gnu.org>
parents:
diff changeset
1813 Find first definition of @var{tag}. If no @var{tag} is given, previously
Dave Love <fx@gnu.org>
parents:
diff changeset
1814 given @var{tag} is used and next alternate definition is find. By default,
Dave Love <fx@gnu.org>
parents:
diff changeset
1815 the file @file{TAGS} in the current directory becomes the @dfn{selected tags
Dave Love <fx@gnu.org>
parents:
diff changeset
1816 table}. You can select another tags table by @kbd{set} command.
Dave Love <fx@gnu.org>
parents:
diff changeset
1817 @xref{Customizing Constants}, for details.
Dave Love <fx@gnu.org>
parents:
diff changeset
1818 @item und[o]
Dave Love <fx@gnu.org>
parents:
diff changeset
1819 Undo the last change.
Dave Love <fx@gnu.org>
parents:
diff changeset
1820 @item unm[ap] @var{ch}
Dave Love <fx@gnu.org>
parents:
diff changeset
1821 The macro expansion associated with @var{ch} is removed.
Dave Love <fx@gnu.org>
parents:
diff changeset
1822 @item ve[rsion]
Dave Love <fx@gnu.org>
parents:
diff changeset
1823 Tell the version number of VIP.
Dave Love <fx@gnu.org>
parents:
diff changeset
1824 @item (1,$) w[rite] !@: @var{file}
Dave Love <fx@gnu.org>
parents:
diff changeset
1825 Write out specified lines into file @var{file}. If no @var{file} is given,
Dave Love <fx@gnu.org>
parents:
diff changeset
1826 text will be written to the file associated to the current buffer. Unless
Dave Love <fx@gnu.org>
parents:
diff changeset
1827 @kbd{!}@: is given, if @var{file} is different from the file associated to
Dave Love <fx@gnu.org>
parents:
diff changeset
1828 the current buffer and if the file @var{file} exists, the command will not
Dave Love <fx@gnu.org>
parents:
diff changeset
1829 be executed. Unlike Ex, @var{file} becomes the file associated to the
Dave Love <fx@gnu.org>
parents:
diff changeset
1830 current buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
1831 @item (1,$) w[rite]>> @var{file}
Dave Love <fx@gnu.org>
parents:
diff changeset
1832 Write out specified lines at the end of file @var{file}. @var{file}
Dave Love <fx@gnu.org>
parents:
diff changeset
1833 becomes the file associated to the current buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
1834 @item (1,$) wq !@: @var{file}
Dave Love <fx@gnu.org>
parents:
diff changeset
1835 Same as @kbd{write} and then @kbd{quit}. If @kbd{!}@: is given, same as
Dave Love <fx@gnu.org>
parents:
diff changeset
1836 @kbd{write !}@: then @kbd{quit}.
Dave Love <fx@gnu.org>
parents:
diff changeset
1837 @item (.,.) y[ank] @var{register} @var{count}
Dave Love <fx@gnu.org>
parents:
diff changeset
1838 Save specified lines into register @var{register}. If no register is
Dave Love <fx@gnu.org>
parents:
diff changeset
1839 specified, text will be saved in an anonymous register.
Dave Love <fx@gnu.org>
parents:
diff changeset
1840 @item @var{addr} !@: @var{command}
Dave Love <fx@gnu.org>
parents:
diff changeset
1841 Execute shell command @var{command}. The output will be shown in a new
Dave Love <fx@gnu.org>
parents:
diff changeset
1842 window. If @var{addr} is given, specified lines will be used as standard
Dave Love <fx@gnu.org>
parents:
diff changeset
1843 input to @var{command}.
Dave Love <fx@gnu.org>
parents:
diff changeset
1844 @item ($) =
Dave Love <fx@gnu.org>
parents:
diff changeset
1845 Print the line number of the addressed line.
Dave Love <fx@gnu.org>
parents:
diff changeset
1846 @item (.,.) > @var{count} @var{flags}
Dave Love <fx@gnu.org>
parents:
diff changeset
1847 Shift specified lines to the right. The variable @code{vip-shift-width}
Dave Love <fx@gnu.org>
parents:
diff changeset
1848 (default value is 8) determines the amount of shift.
Dave Love <fx@gnu.org>
parents:
diff changeset
1849 @item (.,.) < @var{count} @var{flags}
Dave Love <fx@gnu.org>
parents:
diff changeset
1850 Shift specified lines to the left. The variable @code{vip-shift-width}
Dave Love <fx@gnu.org>
parents:
diff changeset
1851 (default value is 8) determines the amount of shift.
Dave Love <fx@gnu.org>
parents:
diff changeset
1852 @item (.,.@:) ~ @var{options} @var{count} @var{flags}
Dave Love <fx@gnu.org>
parents:
diff changeset
1853 Repeat the previous @kbd{substitute} command using previous search pattern
Dave Love <fx@gnu.org>
parents:
diff changeset
1854 as @var{pat} for matching.
Dave Love <fx@gnu.org>
parents:
diff changeset
1855 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1856
Dave Love <fx@gnu.org>
parents:
diff changeset
1857 The following Ex commands are available in Vi, but not implemented in VIP.
Dave Love <fx@gnu.org>
parents:
diff changeset
1858 @example
Dave Love <fx@gnu.org>
parents:
diff changeset
1859 @kbd{abbreviate}, @kbd{list}, @kbd{next}, @kbd{print}, @kbd{preserve}, @kbd{recover}, @kbd{rewind}, @kbd{source},
Dave Love <fx@gnu.org>
parents:
diff changeset
1860 @kbd{unabbreviate}, @kbd{xit}, @kbd{z}
Dave Love <fx@gnu.org>
parents:
diff changeset
1861 @end example
Dave Love <fx@gnu.org>
parents:
diff changeset
1862
Dave Love <fx@gnu.org>
parents:
diff changeset
1863 @node Customization, Customizing Constants, Ex Command Reference, Top
Dave Love <fx@gnu.org>
parents:
diff changeset
1864 @chapter Customization
Dave Love <fx@gnu.org>
parents:
diff changeset
1865
Dave Love <fx@gnu.org>
parents:
diff changeset
1866 If you have a file called @file{.vip} in your home directory, then it
Dave Love <fx@gnu.org>
parents:
diff changeset
1867 will also be loaded when VIP is loaded. This file is thus useful for
Dave Love <fx@gnu.org>
parents:
diff changeset
1868 customizing VIP.
Dave Love <fx@gnu.org>
parents:
diff changeset
1869
Dave Love <fx@gnu.org>
parents:
diff changeset
1870 @menu
Dave Love <fx@gnu.org>
parents:
diff changeset
1871 * Customizing Constants:: How to change values of constants.
Dave Love <fx@gnu.org>
parents:
diff changeset
1872 * Customizing Key Bindings:: How to change key bindings.
Dave Love <fx@gnu.org>
parents:
diff changeset
1873 @end menu
Dave Love <fx@gnu.org>
parents:
diff changeset
1874
Dave Love <fx@gnu.org>
parents:
diff changeset
1875 @node Customizing Constants, Customizing Key Bindings, Customization, Customization
Dave Love <fx@gnu.org>
parents:
diff changeset
1876 @section Customizing Constants
Dave Love <fx@gnu.org>
parents:
diff changeset
1877 An easy way to customize VIP is to change the values of constants used
Dave Love <fx@gnu.org>
parents:
diff changeset
1878 in VIP. Here is the list of the constants used in VIP and their default
Dave Love <fx@gnu.org>
parents:
diff changeset
1879 values.
Dave Love <fx@gnu.org>
parents:
diff changeset
1880
Dave Love <fx@gnu.org>
parents:
diff changeset
1881 @table @code
Dave Love <fx@gnu.org>
parents:
diff changeset
1882 @item vip-shift-width 8
Dave Love <fx@gnu.org>
parents:
diff changeset
1883 The number of columns shifted by @kbd{>} and @kbd{<} command.
Dave Love <fx@gnu.org>
parents:
diff changeset
1884 @item vip-re-replace nil
Dave Love <fx@gnu.org>
parents:
diff changeset
1885 If @code{t} then do regexp replace, if @code{nil} then do string replace.
Dave Love <fx@gnu.org>
parents:
diff changeset
1886 @item vip-search-wrap-around t
Dave Love <fx@gnu.org>
parents:
diff changeset
1887 If @code{t}, search wraps around the buffer.
Dave Love <fx@gnu.org>
parents:
diff changeset
1888 @item vip-re-search nil
Dave Love <fx@gnu.org>
parents:
diff changeset
1889 If @code{t} then search is reg-exp search, if @code{nil} then vanilla
Dave Love <fx@gnu.org>
parents:
diff changeset
1890 search.
Dave Love <fx@gnu.org>
parents:
diff changeset
1891 @item vip-case-fold-search nil
Dave Love <fx@gnu.org>
parents:
diff changeset
1892 If @code{t} search ignores cases.
Dave Love <fx@gnu.org>
parents:
diff changeset
1893 @item vip-re-query-replace nil
Dave Love <fx@gnu.org>
parents:
diff changeset
1894 If @code{t} then do reg-exp replace in query replace.
Dave Love <fx@gnu.org>
parents:
diff changeset
1895 @item vip-open-with-indent nil
Dave Love <fx@gnu.org>
parents:
diff changeset
1896 If @code{t} then indent to the previous current line when open a new line
Dave Love <fx@gnu.org>
parents:
diff changeset
1897 by @kbd{o} or @kbd{O} command.
Dave Love <fx@gnu.org>
parents:
diff changeset
1898 @item vip-tags-file-name "TAGS"
Dave Love <fx@gnu.org>
parents:
diff changeset
1899 The name of the file used as the tags table.
Dave Love <fx@gnu.org>
parents:
diff changeset
1900 @item vip-help-in-insert-mode nil
Dave Love <fx@gnu.org>
parents:
diff changeset
1901 If @code{t} then @key{C-h} is bound to @code{help-command} in insert mode,
Dave Love <fx@gnu.org>
parents:
diff changeset
1902 if @code{nil} then it sis bound to @code{delete-backward-char}.
Dave Love <fx@gnu.org>
parents:
diff changeset
1903 @end table
Dave Love <fx@gnu.org>
parents:
diff changeset
1904 @noindent
Dave Love <fx@gnu.org>
parents:
diff changeset
1905 You can reset these constants in VIP by the Ex command @kbd{set}. Or you
Dave Love <fx@gnu.org>
parents:
diff changeset
1906 can include a line like this in your @file{.vip} file:
Dave Love <fx@gnu.org>
parents:
diff changeset
1907 @example
Dave Love <fx@gnu.org>
parents:
diff changeset
1908 (setq vip-case-fold-search t)
Dave Love <fx@gnu.org>
parents:
diff changeset
1909 @end example
Dave Love <fx@gnu.org>
parents:
diff changeset
1910
Dave Love <fx@gnu.org>
parents:
diff changeset
1911 @node Customizing Key Bindings,, Customizing Constants, Customization
Dave Love <fx@gnu.org>
parents:
diff changeset
1912 @section Customizing Key Bindings
Dave Love <fx@gnu.org>
parents:
diff changeset
1913
Dave Love <fx@gnu.org>
parents:
diff changeset
1914 @cindex local keymap
Dave Love <fx@gnu.org>
parents:
diff changeset
1915
Dave Love <fx@gnu.org>
parents:
diff changeset
1916 VIP uses @code{vip-command-mode-map} as the @dfn{local keymap} for vi mode.
Dave Love <fx@gnu.org>
parents:
diff changeset
1917 For example, in vi mode, @key{SPC} is bound to the function
Dave Love <fx@gnu.org>
parents:
diff changeset
1918 @code{vip-scroll}. But, if you wish to make @key{SPC} and some other keys
Dave Love <fx@gnu.org>
parents:
diff changeset
1919 behave like Vi, you can include the following lines in your @file{.vip}
Dave Love <fx@gnu.org>
parents:
diff changeset
1920 file.
Dave Love <fx@gnu.org>
parents:
diff changeset
1921
Dave Love <fx@gnu.org>
parents:
diff changeset
1922 @example
Dave Love <fx@gnu.org>
parents:
diff changeset
1923 (define-key vip-command-mode-map "\C-g" 'vip-info-on-file)
Dave Love <fx@gnu.org>
parents:
diff changeset
1924 (define-key vip-command-mode-map "\C-h" 'vip-backward-char)
Dave Love <fx@gnu.org>
parents:
diff changeset
1925 (define-key vip-command-mode-map "\C-m" 'vip-next-line-at-bol)
Dave Love <fx@gnu.org>
parents:
diff changeset
1926 (define-key vip-command-mode-map " " 'vip-forward-char)
Dave Love <fx@gnu.org>
parents:
diff changeset
1927 (define-key vip-command-mode-map "g" 'vip-keyboard-quit)
Dave Love <fx@gnu.org>
parents:
diff changeset
1928 (define-key vip-command-mode-map "s" 'vip-substitute)
Dave Love <fx@gnu.org>
parents:
diff changeset
1929 (define-key vip-command-mode-map "C" 'vip-change-to-eol)
Dave Love <fx@gnu.org>
parents:
diff changeset
1930 (define-key vip-command-mode-map "R" 'vip-change-to-eol)
Dave Love <fx@gnu.org>
parents:
diff changeset
1931 (define-key vip-command-mode-map "S" 'vip-substitute-line)
Dave Love <fx@gnu.org>
parents:
diff changeset
1932 (define-key vip-command-mode-map "X" 'vip-delete-backward-char)
Dave Love <fx@gnu.org>
parents:
diff changeset
1933 @end example
Dave Love <fx@gnu.org>
parents:
diff changeset
1934
Dave Love <fx@gnu.org>
parents:
diff changeset
1935 @unnumbered Key Index
Dave Love <fx@gnu.org>
parents:
diff changeset
1936
Dave Love <fx@gnu.org>
parents:
diff changeset
1937 @printindex ky
Dave Love <fx@gnu.org>
parents:
diff changeset
1938
Dave Love <fx@gnu.org>
parents:
diff changeset
1939 @unnumbered Concept Index
Dave Love <fx@gnu.org>
parents:
diff changeset
1940 @printindex cp
Dave Love <fx@gnu.org>
parents:
diff changeset
1941
29713
983e65f12610 *** empty log message ***
Gerd Moellmann <gerd@gnu.org>
parents: 25829
diff changeset
1942 @setchapternewpage odd
25829
Dave Love <fx@gnu.org>
parents:
diff changeset
1943 @contents
Dave Love <fx@gnu.org>
parents:
diff changeset
1944 @bye