annotate man/vip.texi @ 80401:52454b9e8627

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