annotate doc/misc/viper.texi @ 112436:473533159689

Mark tiny change.
author Glenn Morris <rgm@gnu.org>
date Sat, 22 Jan 2011 19:33:59 -0800
parents ef719132ddfa
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1 % -*-texinfo-*-
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2 \input texinfo
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4 @comment Using viper.info instead of viper in setfilename breaks DOS.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
5 @comment @setfilename viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
6 @comment @setfilename viper.info
84329
3d431f1997d8 (setfilename): Go up one more level to ../../info.
Glenn Morris <rgm@gnu.org>
parents: 84323
diff changeset
7 @setfilename ../../info/viper
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
8
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
9 @copying
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
10 Copyright @copyright{} 1995, 1996, 1997, 2001, 2002, 2003, 2004,
112218
376148b31b5e Add 2011 to FSF/AIST copyright years.
Glenn Morris <rgm@gnu.org>
parents: 109274
diff changeset
11 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
12
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
13 @quotation
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
14 Permission is granted to copy, distribute and/or modify this document
99709
6de181810d0f Relicense all texi files under FDL 1.3 or later.
Glenn Morris <rgm@gnu.org>
parents: 99596
diff changeset
15 under the terms of the GNU Free Documentation License, Version 1.3 or
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
16 any later version published by the Free Software Foundation; with no
95937
6f0fce2c3559 Remove references to external license, since doclicense is included.
Glenn Morris <rgm@gnu.org>
parents: 95874
diff changeset
17 Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
6f0fce2c3559 Remove references to external license, since doclicense is included.
Glenn Morris <rgm@gnu.org>
parents: 95874
diff changeset
18 and with the Back-Cover Texts as in (a) below. A copy of the license
6f0fce2c3559 Remove references to external license, since doclicense is included.
Glenn Morris <rgm@gnu.org>
parents: 95874
diff changeset
19 is included in the section entitled ``GNU Free Documentation License''.
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
20
95874
eafbd7a5c9be Update Back-Cover Text as per maintain.info.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
21 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
eafbd7a5c9be Update Back-Cover Text as per maintain.info.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
22 modify this GNU manual. Buying copies from the FSF supports it in
eafbd7a5c9be Update Back-Cover Text as per maintain.info.
Glenn Morris <rgm@gnu.org>
parents: 87903
diff changeset
23 developing GNU and promoting software freedom.''
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
24 @end quotation
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
25 @end copying
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
26
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
27 @dircategory Emacs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
28 @direntry
109274
a91e94388547 Minor doc/misc/*.texi direntry fixes.
Glenn Morris <rgm@gnu.org>
parents: 109264
diff changeset
29 * VIPER: (viper). The newest Emacs VI-emulation mode.
a91e94388547 Minor doc/misc/*.texi direntry fixes.
Glenn Morris <rgm@gnu.org>
parents: 109264
diff changeset
30 (also, A VI Plan for Emacs Rescue
a91e94388547 Minor doc/misc/*.texi direntry fixes.
Glenn Morris <rgm@gnu.org>
parents: 109264
diff changeset
31 or the VI PERil.)
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
32 @end direntry
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
33
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
34 @finalout
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
35
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
36 @titlepage
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
37 @title Viper Is a Package for Emacs Rebels
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
38 @subtitle a Vi emulator for Emacs
99596
bc9da26d5914 2008-16-06 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 95937
diff changeset
39 @subtitle November 2008, Viper Version 3.11.2
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
40
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
41 @author Michael Kifer (Viper)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
42 @author Aamod Sane (VIP 4.4)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
43 @author Masahiko Sato (VIP 3.5)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
44
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
45 @page
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
46 @vskip 0pt plus 1filll
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
47 @insertcopying
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
48 @end titlepage
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
49
102059
9bcea07061a8 consistently use @insertcopying, @direntry, @contents
Karl Berry <karl@gnu.org>
parents: 100974
diff changeset
50 @contents
9bcea07061a8 consistently use @insertcopying, @direntry, @contents
Karl Berry <karl@gnu.org>
parents: 100974
diff changeset
51
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
52 @ifnottex
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
53 @node Top, Overview,, (DIR)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
54
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
55 @unnumbered Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
56
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
57 We believe that one or more of the following statements are adequate
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
58 descriptions of Viper:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
59
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
60 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
61 Viper Is a Package for Emacs Rebels;
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
62 it is a VI Plan for Emacs Rescue
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
63 and/or a venomous VI PERil.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
64 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
65
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
66 Technically speaking, Viper is a Vi emulation package for Emacs. It
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
67 implements all Vi and Ex commands, occasionally improving on them and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
68 adding many new features. It gives the user the best of both worlds: Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
69 keystrokes for editing combined with the power of the Emacs environment.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
70
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
71 Viper emulates Vi at several levels, from the one that closely follows Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
72 conventions to the one that departs from many of them. It has many
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
73 customizable options, which can be used to tailor Viper to the work habits
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
74 of various users.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
75 This manual describes Viper, concentrating on the differences from Vi and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
76 new features of Viper.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
77
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
78 Viper, formerly known as VIP-19, was written by Michael Kifer. It is based
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
79 on VIP version 3.5 by Masahiko Sato and VIP version 4.4 by Aamod Sane.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
80 About 15% of the code still comes from those older packages.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
81
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
82 Viper is intended to be usable without reading this manual --- the defaults
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
83 are set to make Viper as close to Vi as possible. At startup, Viper will
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
84 try to set the most appropriate default environment for you, based on
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
85 your familiarity with Emacs. It will also tell you the basic GNU Emacs window
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
86 management commands to help you start immediately.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
87
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
88 Although this manual explains how to customize Viper, some basic
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
89 familiarity with Emacs Lisp is a plus.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
90
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
91 It is recommended that you read the Overview node. The other nodes may
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
92 be visited as needed.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
93
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
94 Comments and bug reports are welcome.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
95 @code{kifer@@cs.stonybrook.edu} is the current address for Viper bug reports.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
96 Please use the Ex command @kbd{:submitReport} for this purpose.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
97
102059
9bcea07061a8 consistently use @insertcopying, @direntry, @contents
Karl Berry <karl@gnu.org>
parents: 100974
diff changeset
98 @insertcopying
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
99 @end ifnottex
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
100
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
101 @menu
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
102 * Overview:: Read for a smoother start
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
103 * Improvements over Vi:: New features, Improvements
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
104 * Customization:: How to customize Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
105 * Commands:: Vi and Ex Commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
106
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
107 * Key Index:: Index of Vi and Ex Commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
108 * Function Index:: Index of Viper Functions
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
109 * Variable Index:: Index of Viper Variables
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
110 * Package Index:: Index of Packages Mentioned in this Document
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
111 * Concept Index:: Vi, Ex and Emacs concepts
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
112
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
113 * Acknowledgments::
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
114 * GNU Free Documentation License:: The license for this documentation.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
115
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
116 @end menu
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
117 @iftex
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
118 @unnumbered Introduction
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
119
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
120 We believe that one or more of the following statements are adequate
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
121 descriptions of Viper:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
122
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
123 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
124 Viper Is a Package for Emacs Rebels;
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
125 it is a VI Plan for Emacs Rescue
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
126 and/or a venomous VI PERil.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
127 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
128
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
129 Viper is a Vi emulation package for Emacs. Viper contains virtually all
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
130 of Vi and Ex functionality and much more. It gives you the best of both
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
131 worlds: Vi keystrokes for editing combined with the GNU Emacs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
132 environment. Viper also fixes some common complaints with Vi commands.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
133 This manual describes Viper, concentrating on the differences from Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
134 and on the new features of Viper.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
135
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
136 Viper was written by Michael Kifer. It is based on VIP version 3.5 by
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
137 Masahiko Sato and VIP version 4.4 by Aamod Sane. About 15% of the code
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
138 still comes from those older packages.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
139
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
140 Viper is intended to be usable out of the box, without reading this manual
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
141 --- the defaults are set to make Viper as close to Vi as possible. At
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
142 startup, Viper will attempt to set the most appropriate default environment
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
143 for you, based on your familiarity with Emacs. It will also tell you the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
144 basic GNU Emacs window management commands to help you start immediately.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
145
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
146 Although this manual explains how to customize Viper, some basic
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
147 familiarity with Emacs Lisp is a plus.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
148
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
149 It is recommended that you read the chapter Overview. The other chapters
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
150 will be useful for customization and advanced usage.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
151
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
152 You should also learn to use the Info on-line hypertext manual system that
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
153 comes with Emacs. This manual can be read as an Info file. Try the command
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
154 @kbd{@key{ESC} x info} with vanilla Emacs sometime.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
155
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
156 Comments and bug reports are welcome.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
157 @code{kifer@@cs.stonybrook.edu} is the current address for Viper bug reports.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
158 Please use the Ex command @kbd{:submitReport} for this purpose.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
159
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
160 @end iftex
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
161
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
162 @node Overview,Improvements over Vi,Top,Top
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
163 @chapter Overview of Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
164
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
165 Viper is a Vi emulation on top of Emacs. At the same time, Viper provides a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
166 virtually unrestricted access to Emacs facilities. Perfect compatibility
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
167 with Vi is possible but not desirable. This chapter tells you about the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
168 Emacs ideas that you should know about, how to use Viper within Emacs and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
169 some incompatibilities.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
170
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
171 This manual is written with the assumption that you are an experienced Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
172 user who wants to switch to Emacs while retaining the ability to edit files
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
173 Vi style. Incredible as it might seem, there are experienced Emacs users
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
174 who use Viper as a backdoor into the superior (as every Vi user already knows)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
175 world of Vi! These users are well familiar with Emacs bindings and prefer them
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
176 in some cases, especially in the Vi Insert state. John Hawkins
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
177 <jshawkin@@eecs.umich.edu> has provided a set of customizations, which
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
178 enables additional Emacs bindings under Viper. These customizations can be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
179 included in your @file{~/.viper} file and are found at the following URL:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
180 @file{http://traeki.freeshell.org/files/viper-sample}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
181
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
182 @menu
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
183 * Emacs Preliminaries:: Basic concepts in Emacs.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
184 * Loading Viper:: Loading and Preliminary Configuration.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
185 * States in Viper:: Viper has four states orthogonal to Emacs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
186 modes.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
187 * The Minibuffer:: Command line in Emacs.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
188 * Multiple Files in Viper:: True multiple file handling.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
189 * Unimplemented Features:: That are unlikely to be implemented.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
190 @end menu
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
191
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
192 @node Emacs Preliminaries, Loading Viper, Overview, Overview
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
193 @section Emacs Preliminaries
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
194
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
195 @cindex buffer
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
196 @cindex point
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
197 @cindex mark
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
198 @cindex text
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
199 @cindex looking at
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
200 @cindex end (of buffer)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
201 @cindex end (of line)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
202 @cindex region
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
203
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
204 Emacs can edit several files at once. A file in Emacs is placed in a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
205 @dfn{buffer} that usually has the same name as the file. Buffers are also used
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
206 for other purposes, such as shell interfaces, directory editing, etc.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
207 @xref{Dired,,Directory Editor,emacs,The
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
208 GNU Emacs Manual}, for an example.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
209
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
210 A buffer has a distinguished position called the @dfn{point}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
211 A @dfn{point} is always between 2 characters, and is @dfn{looking at}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
212 the right hand character. The cursor is positioned on the right hand
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
213 character. Thus, when the @dfn{point} is looking at the end-of-line,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
214 the cursor is on the end-of-line character, i.e.@: beyond the last
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
215 character on the line. This is the default Emacs behavior.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
216
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
217 The default settings of Viper try to mimic the behavior of Vi, preventing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
218 the cursor from going beyond the last character on the line. By using
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
219 Emacs commands directly (such as those bound to arrow keys), it is possible
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
220 to get the cursor beyond the end-of-line. However, this won't (or
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
221 shouldn't) happen if you restrict yourself to standard Vi keys, unless you
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
222 modify the default editing style. @xref{Customization}.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
223
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
224 In addition to the @dfn{point}, there is another distinguished buffer
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
225 position called the @dfn{mark}. @xref{Mark,,Mark,emacs,The GNU Emacs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
226 manual}, for more info on the mark. The text between the @dfn{point} and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
227 the @dfn{mark} is called the @dfn{region} of the buffer. For the Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
228 user, this simply means that in addition to the Vi textmarkers a--z, there
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
229 is another marker called @dfn{mark}. This is similar to the unnamed Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
230 marker used by the jump commands @kbd{``} and @kbd{''}, which move the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
231 cursor to the position of the last absolute jump. Viper provides access to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
232 the region in most text manipulation commands as @kbd{r} and @kbd{R} suffix
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
233 to commands that operate on text regions, e.g., @kbd{dr} to delete region,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
234 etc.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
235
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
236 Furthermore, Viper lets Ex-style commands to work on the current region.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
237 This is done by typing a digit argument before @kbd{:}. For instance,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
238 typing @kbd{1:} will prompt you with something like @emph{:123,135},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
239 assuming that the current region starts at line 123 and ends at line
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
240 135. There is no need to type the line numbers, since Viper inserts them
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
241 automatically in front of the Ex command.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
242
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
243 @xref{Basics}, for more info.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
244
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
245 @cindex window
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
246 @cindex mode line
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
247 @cindex buffer information
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
248 @cindex Minibuffer
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
249 @cindex command line
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
250 @cindex buffer (modified)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
251
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
252 Emacs divides the screen into tiled @dfn{windows}. You can see the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
253 contents of a buffer through the window associated with the buffer. The
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
254 cursor of the screen is positioned on the character after @dfn{point}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
255 Every window has a @dfn{mode line} that displays information about the buffer.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
256 You can change the format of the mode
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
257 line, but normally if you see @samp{**} at the beginning of a mode line it
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
258 means that the buffer is @dfn{modified}. If you write out the contents of
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
259 a buffer to a file, then the buffer will become not modified. Also if
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
260 you see @samp{%%} at the beginning of the mode line, it means that the file
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
261 associated with the buffer is write protected. The mode line will also
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
262 show the buffer name and current major and minor modes (see below).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
263 A special buffer called @dfn{Minibuffer} is displayed as the last line
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
264 in a minibuffer window. The minibuffer window is used for command input
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
265 output. Viper uses minibuffer window for @kbd{/} and @kbd{:}
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
266 commands.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
267
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
268 @cindex mode
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
269 @cindex keymap
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
270 @cindex local keymap
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
271 @cindex global keymap
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
272 @cindex major mode
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
273 @cindex minor mode
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
274
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
275 An Emacs buffer can have a @dfn{major mode} that customizes Emacs for
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
276 editing text of a particular sort by changing the functionality of the keys.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
277 Keys are defined using a @dfn{keymap} that records the bindings between
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
278 keystrokes and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
279 functions. The @dfn{global keymap} is common to all the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
280 buffers. Additionally, each buffer has its @dfn{local keymap} that determines the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
281 @dfn{mode} of the buffer. If a function is bound to some key in the local
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
282 keymap then that function will be executed when you type the key.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
283 If no function is bound to a key in the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
284 local map, however, the function bound to the key in the global map
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
285 will be executed. @xref{Major Modes,Major Modes,Major Modes,emacs,The
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
286 GNU Emacs Manual}, for more information.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
287
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
288 A buffer can also have a @dfn{minor mode}. Minor modes are options that
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
289 you can use or not. A buffer in @code{text-mode} can have
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
290 @code{auto-fill-mode} as minor mode, which can be turned off or on at
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
291 any time. In Emacs, a minor mode may have it own keymap,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
292 which overrides the local keymap when the minor mode is turned on. For
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
293 more information, @pxref{Minor Modes,Minor Modes,Minor Modes,emacs,The
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
294 GNU Emacs Manual} @refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
295
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
296 @cindex Viper as minor mode
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
297 @cindex Control keys
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
298 @cindex Meta key
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
299
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
300 Viper is implemented as a collection of minor modes. Different minor modes
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
301 are involved when Viper emulates Vi command mode, Vi insert mode, etc.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
302 You can also turn Viper on and off at any time while in Vi command mode.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
303 @xref{States in Viper}, for
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
304 more information.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
305
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
306 Emacs uses Control and Meta modifiers. These are denoted as C and M,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
307 e.g.@: @kbd{^Z} as @kbd{C-z} and @kbd{Meta-x} as @kbd{M-x}. The Meta key is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
308 usually located on each side of the Space bar; it is used in a manner
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
309 similar to the Control key, e.g., @kbd{M-x} means typing @kbd{x} while
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
310 holding the Meta key down. For keyboards that do not have a Meta key,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
311 @key{ESC} is used as Meta. Thus @kbd{M-x} is typed as @kbd{@key{ESC}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
312 x}. Viper uses @key{ESC} to switch from Insert state to Vi state. Therefore
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
313 Viper defines @kbd{C-\} as its Meta key in Vi state. @xref{Vi State}, for
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
314 more info.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
315
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
316 Emacs is structured as a Lisp interpreter around a C core. Emacs keys
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
317 cause Lisp functions to be called. It is possible to call these
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
318 functions directly, by typing @kbd{M-x function-name}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
319
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
320 @node Loading Viper, States in Viper, Emacs Preliminaries, Overview
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
321 @section Loading Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
322
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
323 The most common way to load it automatically is to include the following
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
324 lines (in the given order!):
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
325
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
326 @lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
327 (setq viper-mode t)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
328 (require 'viper)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
329 @end lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
330
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
331 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
332 in your @file{~/.emacs} file. The @file{.emacs} file is placed in your
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
333 home directory and it is be executed every time you invoke Emacs. This is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
334 the place where all general Emacs customization takes place. Beginning with
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
335 version 20.0, Emacsen have an interactive interface, which simplifies the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
336 job of customization significantly.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
337
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
338 Viper also uses the file @file{~/.viper} for Viper-specific customization.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
339 The location of Viper customization file can be changed by setting the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
340 variable @code{viper-custom-file-name} in @file{.emacs} @emph{prior} to loading
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
341 Viper.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
342
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
343 The latest versions of Emacs have an interactive customization facility,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
344 which allows you to (mostly) bypass the use of the @file{.emacs} and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
345 @file{.viper} files. You can reach this customization
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
346 facility from within Viper's VI state by executing the Ex command
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
347 @kbd{:customize}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
348
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
349 Once invoked, Viper will arrange to bring up Emacs buffers in Vi state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
350 whenever this makes sense.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
351 @xref{Packages that Change Keymaps}, to find out when forcing Vi command state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
352 on a buffer may be counter-productive.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
353
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
354 Even if your @file{.emacs} file does not invoke Viper automatically,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
355 you can still load Viper and enter the Vi command state by typing the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
356 following from within Emacs:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
357
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
358 @lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
359 M-x viper-mode
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
360 @end lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
361
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
362 When Emacs first comes up, if you have not specified a file on the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
363 command line, it will show the @samp{*scratch*} buffer, in the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
364 @samp{Lisp Interaction} mode. After you invoke Viper, you can start
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
365 editing files by using @kbd{:e}, @kbd{:vi}, or @kbd{v} commands.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
366 (@xref{File and Buffer Handling}, for more information on @kbd{v} and other
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
367 new commands that, in many cases, are more convenient than @kbd{:e},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
368 @kbd{:vi}, and similar old-style Vi commands.)@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
369
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
370 Finally, if at some point you would want to de-Viperize your running
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
371 copy of Emacs after Viper has been loaded, the command @kbd{M-x
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
372 viper-go-away} will do it for you. The function @code{toggle-viper-mode}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
373 toggles Viperization of Emacs on and off.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
374
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
375 @node States in Viper, The Minibuffer, Loading Viper,Overview
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
376 @section States in Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
377
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
378 @kindex @kbd{C-z}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
379 @kindex @key{ESC}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
380 @kindex @kbd{i}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
381 @cindex Emacs state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
382 @cindex Vi state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
383 @cindex Insert state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
384 @cindex Replace state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
385 @cindex Ex commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
386 @findex @code{viper-go-away}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
387 @findex @code{toggle-viper-mode}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
388
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
389 Viper has four states, Emacs, Vi, Insert, and Replace.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
390
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
391 @table @samp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
392 @item Emacs state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
393 This is the state plain vanilla Emacs is normally in. After you have loaded
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
394 Viper, @kbd{C-z} will normally take you to Vi command state. Another
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
395 @kbd{C-z} will take you back to Emacs state. This toggle key can be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
396 changed, @pxref{Customization} You can also type @kbd{M-x viper-mode} to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
397 change to Vi state.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
398
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
399
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
400 For users who chose to set their user level to 1 at Viper setup time,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
401 switching to Emacs state is deliberately made harder in order to not
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
402 confuse the novice user. In this case, @kbd{C-z} will either iconify Emacs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
403 (if Emacs runs as an application under X) or it will stop Emacs (if
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
404 Emacs runs on a dumb terminal or in an Xterm window).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
405
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
406 @item Vi state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
407 This is the Vi command mode. Any of the Vi commands, such as @kbd{i, o, a},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
408 @dots{}, will take you to Insert state. All Vi commands may
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
409 be used in this mode. Most Ex commands can also be used.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
410 For a full list of Ex commands supported by Viper, type
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
411 @kbd{:} and then @key{TAB}. To get help on any issue, including the Ex
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
412 commands, type @kbd{:help}. This will invoke Viper Info
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
413 (if it is installed). Then typing @kbd{i} will prompt you for a topic to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
414 search in the index. Note: to search for Ex commands in the index, you
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
415 should start them with a @kbd{:}, e.g., @kbd{:WW}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
416
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
417 In Viper, Ex commands can be made to work on the current Emacs region.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
418 This is done by typing a digit argument before @kbd{:}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
419 For instance, typing @kbd{1:} will prompt you with something like
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
420 @emph{:123,135}, assuming that the current region starts at line 123 and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
421 ends at line 135. There is no need to type the line numbers, since Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
422 inserts them automatically in front of the Ex command.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
423
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
424 @item Insert state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
425 Insert state is the Vi insertion mode. @key{ESC} will take you back to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
426 Vi state. Insert state editing can be done, including auto-indentation. By
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
427 default, Viper disables Emacs key bindings in Insert state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
428
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
429 @item Replace state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
430 Commands like @kbd{cw} invoke the Replace state. When you cross the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
431 boundary of a replacement region (usually designated via a @samp{$} sign),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
432 it will automatically change to Insert state. You do not have to worry
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
433 about it. The key bindings remain practically the same as in Insert
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
434 state. If you type @key{ESC}, Viper will switch to Vi command mode, terminating the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
435 replacement state.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
436 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
437
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
438 @cindex mode line
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
439
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
440 The modes are indicated on the @dfn{mode line} as <E>, <I>, <V>, and <R>,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
441 so that the multiple modes do not confuse you. Most of your editing can be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
442 done in Vi and Insert states. Viper will try to make all new buffers be in Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
443 state, but sometimes they may come up in Emacs state. @kbd{C-z}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
444 will take you to Vi state in such a case. In some major modes, like Dired,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
445 Info, Gnus, etc., you should not switch to Vi state (and Viper will not
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
446 attempt to do so) because these modes are not intended for text editing and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
447 many of the Vi keys have special meaning there. If you plan to read news,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
448 browse directories, read mail, etc., from Emacs (which you should start
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
449 doing soon!), you should learn about the meaning of the various keys in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
450 those special modes (typing @kbd{C-h m} in a buffer provides
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
451 help with key bindings for the major mode of that buffer).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
452
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
453 If you switch to Vi in Dired or similar modes---no harm is done. It is just
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
454 that the special key bindings provided by those modes will be temporarily
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
455 overshadowed by Viper's bindings. Switching back to Viper's Emacs state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
456 will revive the environment provided by the current major mode.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
457
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
458 States in Viper are orthogonal to Emacs major modes, such as C mode or Dired
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
459 mode. You can turn Viper on and off for any Emacs state. When Viper is turned
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
460 on, Vi state can be used to move around. In Insert state, the bindings for
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
461 these modes can be accessed. For beginners (users at Viper levels 1 and 2),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
462 these bindings are suppressed in Insert state, so that new users are not
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
463 confused by the Emacs states. Note that unless you allow Emacs bindings in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
464 Insert state, you cannot do many interesting things, like language
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
465 sensitive editing. For the novice user (at Viper level 1), all major mode
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
466 bindings are turned off in Vi state as well. This includes the bindings for
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
467 key sequences that start with @kbd{C-c}, which practically means that all
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
468 major mode bindings are unsupported. @xref{Customization}, to find out how
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
469 to allow Emacs keys in Insert state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
470
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
471 @menu
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
472 * Emacs State:: This is the state you should learn more about when
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
473 you get up to speed with Viper.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
474 * Vi State:: Vi commands are executed in this state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
475 * Insert State:: You can enter text, and also can do sophisticated
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
476 editing if you know enough Emacs commands.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
477 * Replace State:: Like Insert mode, but it is invoked via the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
478 replacement commands, such as cw, C, R, etc.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
479 @end menu
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
480
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
481 @node Emacs State, Vi State, States in Viper, States in Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
482 @subsection Emacs State
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
483
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
484 @kindex @kbd{C-z}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
485 @cindex Emacs state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
486
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
487
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
488 You will be in this mode only by accident (hopefully). This is the state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
489 Emacs is normally in (imagine!!). Now leave it as soon as possible by
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
490 typing @kbd{C-z}. Then you will be in Vi state (sigh of relief) :-).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
491
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
492 Emacs state is actually a Viperism to denote all the major and minor modes
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
493 (@pxref{Emacs Preliminaries}) other than Viper that Emacs can be in. Emacs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
494 can have several modes, such as C mode for editing C programs, LaTeX mode
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
495 for editing LaTeX documents, Dired for directory editing, etc. These are
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
496 major modes, each with a different set of key-bindings. Viper states are
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
497 orthogonal to these Emacs major modes. The presence of these language
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
498 sensitive and other modes is a major win over Vi. @xref{Improvements over
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
499 Vi}, for more.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
500
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
501 The bindings for these modes can be made available in the Viper Insert state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
502 as well as in Emacs state. Unless you specify your user level as 1 (a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
503 novice), all major mode key sequences that start with @kbd{C-x} and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
504 @kbd{C-c} are also available in Vi state. This is important because major
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
505 modes designed for editing files, such as cc-mode or latex-mode, use key
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
506 sequences that begin with @kbd{C-x} and @kbd{C-c}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
507
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
508 There is also a key that lets you temporarily escape to Vi command state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
509 from the Insert state: typing @kbd{C-z} will let you execute a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
510 single Vi command while staying in Viper's Insert state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
511
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
512
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
513 @node Vi State, Insert State, Emacs State, States in Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
514 @subsection Vi State
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
515
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
516 @cindex Vi state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
517
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
518 This is the Vi command mode. When Viper is in Vi state, you will see the sign
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
519 <V> in the mode line. Most keys will work as in Vi. The notable
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
520 exceptions are:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
521
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
522 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
523 @item C-x
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
524 @kindex @kbd{C-x}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
525 @kbd{C-x} is used to invoke Emacs commands, mainly those that do window
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
526 management. @kbd{C-x 2} will split a window, @kbd{C-x 0} will close a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
527 window. @kbd{C-x 1} will close all other windows. @kbd{C-xb} is used to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
528 switch buffers in a window, and @kbd{C-xo} to move through windows.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
529 These are about the only necessary keystrokes.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
530 For the rest, see the GNU Emacs Manual.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
531
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
532 @item C-c
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
533 @kindex @kbd{C-c}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
534 For user levels 2 and higher, this key serves as a prefix key for the key
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
535 sequences used by various major modes. For users at Viper level 1, @kbd{C-c}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
536 simply beeps.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
537
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
538 @item C-g and C-]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
539 @kindex @kbd{C-g}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
540 @kindex @kbd{C-]}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
541
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
542 These are the Emacs @samp{quit} keys.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
543 There will be cases where you will have to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
544 use @kbd{C-g} to quit. Similarly, @kbd{C-]} is used to exit
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
545 @samp{Recursive Edits} in Emacs for which there is no comparable Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
546 functionality and no key-binding. Recursive edits are indicated by
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
547 @samp{[]} brackets framing the modes on the mode line.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
548 @xref{Recursive Edit,Recursive
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
549 Edit,Recursive Edit,emacs,The GNU Emacs Manual}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
550 At user level 1, @kbd{C-g} is bound to @code{viper-info-on-file}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
551 function instead.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
552 @refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
553 @item C-\
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
554 @kindex @kbd{C-\}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
555 @cindex Meta key
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
556
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
557 Viper uses @key{ESC} as a switch between Insert and Vi states. Emacs uses
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
558 @key{ESC} for Meta. The Meta key is very important in Emacs since many
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
559 functions are accessible only via that key as @kbd{M-x function-name}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
560 Therefore, we need to simulate it somehow. In Viper's Vi, Insert, and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
561 Replace states, the meta key is set to be @kbd{C-\}. Thus, to get
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
562 @kbd{M-x}, you should type @kbd{C-\ x} (if the keyboard has no Meta key,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
563 which is rare these days).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
564 This works both in the Vi command state and in the Insert and Replace
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
565 states. In Vi command state, you can also use @kbd{\ @key{ESC}} as the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
566 meta key.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
567
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
568 Note: Emacs binds @kbd{C-\} to a function that offers to change the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
569 keyboard input method in the multilingual environment. Viper overrides this
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
570 binding. However, it is still possible to switch the input method by typing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
571 @kbd{\ C-\} in the Vi command state and @kbd{C-z \ C-\} in the Insert state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
572 Or you can use the MULE menu in the menubar.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
573 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
574 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
575 Other differences are mostly improvements. The ones you should know
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
576 about are:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
577
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
578 @table @samp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
579 @item Undo
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
580 @kindex @kbd{u}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
581 @kbd{u} will undo. Undo can be repeated by the @kbd{.} key. Undo itself
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
582 can be undone. Another @kbd{u} will change the direction. The presence
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
583 of repeatable undo means that @kbd{U}, undoing lines, is not very
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
584 important. Therefore, @kbd{U} also calls @code{viper-undo}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
585 @cindex multiple undo
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
586 @cindex undo
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
587
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
588
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
589 @item Counts
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
590 Most commands, @kbd{~}, @kbd{[[}, @kbd{p}, @kbd{/}, @dots{}, etc., take counts.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
591
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
592 @comment ]] Just to balance parens
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
593 @item Regexps
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
594 Viper uses Emacs Regular Expressions for searches. These are a superset of
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
595 Vi regular
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
596 expressions, excepting the change-of-case escapes @samp{\u}, @samp{\L},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
597 @dots{}, etc. @xref{Regexps,,Syntax of Regular Expressions,emacs,The
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
598 GNU Emacs Manual}, for details.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
599 Files specified to @kbd{:e} use @code{csh} regular expressions
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
600 (globbing, wildcards, what have you).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
601 However, the function @code{viper-toggle-search-style}, bound to @kbd{C-c /},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
602 lets the user switch from search with regular expressions to plain vanilla
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
603 search and vice versa. It also lets one switch from case-sensitive search
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
604 to case-insensitive and back.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
605 @xref{Viper Specials}, for more details.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
606 @cindex regular expressions
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
607 @cindex vanilla search
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
608 @cindex case-sensitive search
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
609 @cindex case-insensitive search
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
610 @kindex @kbd{C-c /}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
611
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
612 @item Ex commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
613 @cindex Ex commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
614 The current working directory of a buffer is automatically inserted in the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
615 minibuffer if you type @kbd{:e} then space. Absolute filenames are
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
616 required less often in Viper. For file names, Emacs uses a convention that
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
617 is slightly different from other programs. It is designed to minimize the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
618 need for deleting file names that Emacs provides in its prompts. (This is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
619 usually convenient, but occasionally the prompt may suggest a wrong file
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
620 name for you.) If you see a prompt @kbd{/usr/foo/} and you wish to edit the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
621 file @kbd{~/.viper}, you don't have to erase the prompt. Instead, simply
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
622 continue typing what you need. Emacs will interpret @kbd{/usr/foo/~/.viper}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
623 correctly. Similarly, if the prompt is @kbd{~/foo/} and you need to get to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
624 @kbd{/bar/file}, keep typing. Emacs interprets @kbd{~/foo//bar/} as
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
625 @kbd{/bar/file}, since when it sees @samp{//}, it understands that
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
626 @kbd{~/foo/} is to be discarded.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
627
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
628 The command @kbd{:cd} will change the default directory for the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
629 current buffer. The command @kbd{:e} will interpret the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
630 filename argument in @code{csh}. @xref{Customization}, if you
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
631 want to change the default shell.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
632 The command @kbd{:next} takes counts from
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
633 @kbd{:args}, so that @kbd{:rew} is obsolete. Also, @kbd{:args} will show only
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
634 the invisible files (i.e., those that are not currently seen in Emacs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
635 windows).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
636
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
637 When applicable, Ex commands support file completion and history. This
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
638 means that by typing a partial file name and then @key{TAB}, Emacs will try
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
639 to complete the name or it will offer a menu of possible completions.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
640 This works similarly to Tcsh and extends the behavior of Csh. While Emacs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
641 is waiting for a file name, you can type @kbd{M-p} to get the previous file
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
642 name you typed. Repeatedly typing @kbd{M-p} and @kbd{M-n} will let you
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
643 browse through the file history.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
644
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
645 Like file names, partially typed Ex commands can be completed by typing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
646 @key{TAB}, and Viper keeps the history of Ex commands. After typing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
647 @kbd{:}, you can browse through the previously entered Ex commands by
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
648 typing @kbd{M-p} and @kbd{M-n}. Viper tries to rationalize when it puts Ex
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
649 commands on the history list. For instance, if you typed @kbd{:w!@: foo},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
650 only @kbd{:w!} will be placed on the history list. This is because the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
651 last history element is the default that can be invoked simply by typing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
652 @kbd{: @key{RET}}. If @kbd{:w!@: foo} were placed on the list, it would be all to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
653 easy to override valuable data in another file. Reconstructing the full
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
654 command, @kbd{:w!@: foo}, from the history is still not that hard, since Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
655 has a separate history for file names. By typing @kbd{: M-p}, you will get
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
656 @kbd{:w!} in the minibuffer. Then, repeated @kbd{M-p} will get you through
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
657 the file history, inserting one file name after another.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
658
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
659 In contrast to @kbd{:w!@: foo}, if the command were @kbd{:r foo}, the entire
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
660 command will appear in the history list. This is because having @kbd{:r}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
661 alone as a default is meaningless, since this command requires a file
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
662 argument.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
663 @refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
664 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
665 @noindent
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
666 As in Vi, Viper's destructive commands can be re-executed by typing `@kbd{.}'.
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
667 However, in addition, Viper keeps track of the history of such commands. This
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
668 history can be perused by typing @kbd{C-c M-p} and @kbd{C-c M-n}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
669 Having found the appropriate command, it can be then executed by typing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
670 `@kbd{.}'.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
671 @xref{Improvements over Vi}, for more information.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
672
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
673 @node Insert State, Replace State, Vi State, States in Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
674 @subsection Insert State
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
675
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
676 @cindex Insert state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
677
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
678 To avoid confusing the beginner (at Viper level 1 and 2), Viper makes only the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
679 standard Vi keys available in Insert state. The implication is that
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
680 Emacs major modes cannot be used in Insert state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
681 It is strongly recommended that as soon as you are comfortable, make the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
682 Emacs state bindings visible (by changing your user level to 3 or higher).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
683 @xref{Customization},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
684 to see how to do this.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
685
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
686 Once this is done, it is possible to do quite a bit of editing in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
687 Insert state. For instance, Emacs has a @dfn{yank} command, @kbd{C-y},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
688 which is similar to Vi's @kbd{p}. However, unlike @kbd{p}, @kbd{C-y} can be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
689 used in Insert state of Viper. Emacs also has a kill ring where it keeps
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
690 pieces of text you deleted while editing buffers. The command @kbd{M-y} is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
691 used to delete the text previously put back by Emacs' @kbd{C-y} or by Vi's
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
692 @kbd{p} command and reinsert text that was placed on the kill-ring earlier.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
693
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
694 This works both in Vi and Insert states.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
695 In Vi state, @kbd{M-y} is a much better alternative to the usual Vi's way
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
696 of recovering the 10 previously deleted chunks of text. In Insert state,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
697 you can
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
698 use this as follows. Suppose you deleted a piece of text and now you need
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
699 to re-insert it while editing in Insert mode. The key @kbd{C-y} will put
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
700 back the most recently deleted chunk. If this is not what you want, type
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
701 @kbd{M-y} repeatedly and, hopefully, you will find the chunk you want.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
702
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
703 Finally, in Insert and Replace states, Viper provides the history of
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
704 pieces of text inserted in previous insert or replace commands. These
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
705 strings of text can be recovered by repeatedly typing @kbd{C-c M-p} or
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
706 @kbd{C-c M-n} while in Insert or Replace state. (This feature is disabled
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
707 in the minibuffer: the above keys are usually bound to other histories,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
708 which are more appropriate in the minibuffer.)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
709
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
710
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
711 @cindex Meta key
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
712
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
713 You can call Meta functions from Insert state. As in Vi state, the Meta key
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
714 is @kbd{C-\}. Thus @kbd{M-x} is typed as @kbd{C-\ x}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
715
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
716 Other Emacs commands that are useful in Insert state are @kbd{C-e}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
717 and @kbd{C-a}, which move the cursor to the end and the beginning of the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
718 current line, respectively. You can also use @kbd{M-f} and @kbd{M-b},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
719 which move the cursor forward (or backward) one word.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
720 If your display has a Meta key, these functions are invoked by holding the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
721 Meta key and then typing @kbd{f} and @kbd{b}, respectively. On displays
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
722 without the Meta key, these functions are invoked by typing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
723 @kbd{C-\ f} and @kbd{C-\ b} (@kbd{C-\} simulates the Meta key in Insert
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
724 state, as explained above).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
725
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
726 The key @kbd{C-z} is sometimes also useful in Insert state: it allows you
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
727 to execute a single command in Vi state without leaving the Insert state!
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
728 For instance, @kbd{C-z d2w} will delete the next two words without leaving
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
729 the Insert state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
730
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
731 When Viper is in Insert state, you will see <I> in the mode line.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
732
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
733 @node Replace State,, Insert State, States in Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
734 @subsection Replace State
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
735
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
736 @cindex Replace state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
737
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
738 This state is entered through Vi replacement commands, such as @kbd{C},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
739 @kbd{cw}, etc., or by typing @kbd{R}. In Replace state, Viper puts <R> in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
740 the mode line to let you know which state is in effect. If Replace state is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
741 entered through @kbd{R}, Viper stays in that state until the user hits
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
742 @key{ESC}. If this state is entered via the other replacement commands,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
743 then Replace state is in effect until you hit @key{ESC} or until you cross
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
744 the rightmost boundary of the replacement region. In the latter case, Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
745 changes its state from Replace to Insert (which you will notice by the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
746 change in the mode line).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
747
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
748 Since Viper runs under Emacs, it is possible to switch between buffers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
749 while in Replace state. You can also move the cursor using the arrow keys
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
750 (even on dumb terminals!)@: and the mouse. Because of this freedom (which is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
751 unattainable in regular Vi), it is possible to take the cursor outside the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
752 replacement region. (This may be necessary for several reasons, including
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
753 the need to enable text selection and region-setting with the mouse.)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
754
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
755 The issue then arises as to what to do when the user
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
756 hits the @key{ESC} key. In Vi, this would cause the text between cursor and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
757 the end of the replacement region to be deleted. But what if, as is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
758 possible in Viper, the cursor is not inside the replacement region?
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
759
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
760 To solve the problem, Viper keeps track of the last cursor position while it
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
761 was still inside the replacement region. So, in the above situation, Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
762 would delete text between this position and the end of the replacement
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
763 region.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
764
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
765 @node The Minibuffer,Multiple Files in Viper, States in Viper, Overview
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
766 @section The Minibuffer
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
767
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
768 @cindex Minibuffer
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
769
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
770 The minibuffer is where commands are entered in. Editing can be done
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
771 by commands from Insert state, namely:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
772
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
773 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
774 @item C-h
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
775 Backspace
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
776 @item C-w
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
777 Delete Word
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
778 @item C-u
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
779 Erase line
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
780 @item C-v
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
781 Quote the following character
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
782 @item @key{RET}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
783 Execute command
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
784 @item C-g and C-]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
785 Emacs quit and abort keys. These may be necessary. @xref{Vi State}, for an
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
786 explanation.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
787 @item M-p and M-n
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
788 These keys are bound to functions that peruse minibuffer history. The
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
789 precise history to be perused depends on the context. It may be the history
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
790 of search strings, Ex commands, file names, etc.
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
791 @item C-s
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
792 If the minibuffer is entered via the Viper search commands @kbd{/} or
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
793 @kbd{?}, then this key inserts the last search string used by the
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
794 Emacs incremental search command
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
795 (which is bound to @kbd{C-s} everywhere except in this case).
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
796 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
797
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
798 Most of the Emacs keys are functional in the minibuffer. While in the
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
799 minibuffer, Viper tries to make editing resemble Vi's behavior when the
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
800 latter is waiting for the user to type an Ex command. In particular, you
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
801 can use the regular Vi commands to edit the minibuffer. You can switch
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
802 between the Vi state and Insert state at will, and even use the replace mode.
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
803 Initially, the minibuffer comes up in Insert state.
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
804
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
805 Some users prefer plain Emacs bindings in the minibuffer. To this end, set
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
806 @code{viper-vi-style-in-minibuffer} to @code{nil} in @file{.viper}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
807 @xref{Customization}, to learn how to do this.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
808
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
809 When the minibuffer changes Viper states, you will notice that the appearance
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
810 of the text there changes as well. This is useful because the minibuffer
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
811 has no mode line to tell which Vi state it is in.
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
812 The appearance of the text in the minibuffer can be changed.
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
813 @xref{Viper Specials}, for more details.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
814
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
815 @node Multiple Files in Viper,Unimplemented Features,The Minibuffer,Overview
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
816 @section Multiple Files in Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
817
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
818 @cindex multiple files
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
819 @cindex managing multiple files
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
820
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
821 Viper can edit multiple files. This means, for example that you never need
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
822 to suffer through @code{No write since last change} errors.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
823 Some Viper elements are common over all the files.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
824
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
825 @table @samp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
826 @item Textmarkers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
827 @cindex markers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
828 @cindex textmarkers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
829 Textmarkers remember @emph{files and positions}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
830 If you set marker @samp{a} in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
831 file @file{foo}, start editing file @file{bar} and type @kbd{'a}, then
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
832 @emph{YOU WILL SWITCH TO FILE @file{foo}}. You can see the contents of a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
833 textmarker using the Viper command @kbd{[<a-z>} where <a-z> are the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
834 textmarkers, e.g., @kbd{[a} to view marker @samp{a} .@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
835 @item Repeated Commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
836 Command repetitions are common over files. Typing @kbd{!!} will repeat the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
837 last @kbd{!} command whichever file it was issued from.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
838 Typing @kbd{.} will repeat the last command from any file, and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
839 searches will repeat the last search. Ex commands can be repeated by typing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
840 @kbd{: @key{RET}}.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
841 Note: in some rare cases, that @kbd{: @key{RET}} may do something dangerous.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
842 However, usually its effect can be undone by typing @kbd{u}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
843 @item Registers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
844 @cindex registers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
845 Registers are common to files. Also, text yanked with @kbd{y} can be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
846 put back (@kbd{p}) into any file. The Viper command @kbd{]<a-z>}, where <a-z> are
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
847 the registers, can be used to look at the contents of a register, e.g.,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
848 type @kbd{]a} to view register @samp{a}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
849
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
850 There is one difference in text deletion that you should be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
851 aware of. This difference comes from Emacs and was adopted in Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
852 because we find it very useful. In Vi, if you delete a line, say, and then
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
853 another line, these two deletions are separated and are put back
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
854 separately if you use the @samp{p} command. In Emacs (and Viper), successive
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
855 series of deletions that are @emph{not interrupted} by other commands are
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
856 lumped together, so the deleted text gets accumulated and can be put back
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
857 as one chunk. If you want to break a sequence of deletions so that the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
858 newly deleted text could be put back separately from the previously deleted
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
859 text, you should perform a non-deleting action, e.g., move the cursor one
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
860 character in any direction.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
861 @item Absolute Filenames
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
862 @cindex absolute file names
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
863 The current directory name for a file is automatically prepended to the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
864 file name in any
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
865 @kbd{:e}, @kbd{:r}, @kbd{:w}, etc., command (in Emacs, each buffer has a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
866 current directory).
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
867 This directory is inserted in the minibuffer once you type space after
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
868 @kbd{:e, r}, etc. Viper also supports completion of file names and Ex
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
869 commands (@key{TAB}), and it keeps track of
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
870 command and file history (@kbd{M-p}, @kbd{M-n}).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
871 Absolute filenames are required less
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
872 often in Viper.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
873
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
874 You should be aware that Emacs interprets @kbd{/foo/bar//bla} as
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
875 @kbd{/bla} and @kbd{/foo/~/bar} as @kbd{~/bar}. This is designed to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
876 minimize the need for erasing file names that Emacs suggests in its
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
877 prompts, if a suggested file name is not what you wanted.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
878
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
879 The command @kbd{:cd} will change the default directory for the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
880 current Emacs buffer. The Ex command @kbd{:e} will interpret the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
881 filename argument in @samp{csh}, by default. @xref{Customization}, if you
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
882 want to change this.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
883 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
884
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
885 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
886 Currently undisplayed files can be listed using the @kbd{:ar} command. The
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
887 command @kbd{:n} can be given counts from the @kbd{:ar} list to switch to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
888 other files. For example, use `:n3' to move to the third file in that list.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
889
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
890 @node Unimplemented Features,,Multiple Files in Viper,Overview
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
891 @section Unimplemented Features
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
892
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
893 Unimplemented features include:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
894
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
895 @itemize @bullet
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
896 @item
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
897 @kbd{:ab} and @kbd{:una} are not implemented, since
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
898 @kbd{:ab} is considered obsolete, since Emacs has much
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
899 more powerful facilities for defining abbreviations.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
900 @item
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
901 @kbd{:set option?} is not implemented. The current
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
902 @kbd{:set} can also be used to set Emacs variables.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
903 @item
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
904 @kbd{:se list} requires modification of the display code for Emacs, so
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
905 it is not implemented.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
906 A useful alternative is @code{cat -t -e file}. Unfortunately, it cannot
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
907 be used directly inside Emacs, since Emacs will obdurately change @samp{^I}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
908 back to normal tabs.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
909 @end itemize
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
910
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
911 @comment node-name, next, previous, up
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
912 @node Improvements over Vi, Customization, Overview, Top
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
913 @chapter Improvements over Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
914
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
915 Some common problems with Vi and Ex have been solved in Viper. This
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
916 includes better implementation of existing commands, new commands, and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
917 the facilities provided by Emacs.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
918
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
919 @menu
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
920 * Basics:: Basic Viper differences, Multi-file effects.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
921 * Undo and Backups:: Multiple undo, auto-save, backups and changes
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
922 * History:: History for Ex and Vi commands.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
923 * Macros and Registers:: Keyboard Macros (extended ".")@: @@reg execution.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
924 * Completion:: Filename and Command Completion for Ex.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
925 * Improved Search:: Incremental Search and Buffer Content Search.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
926 * Abbreviation Facilities:: Normal Abbrevs, Templates, and Dynamic Abbrevs.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
927 * Movement and Markers:: Screen Editor movements, viewing textmarkers.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
928 * New Commands:: Commands that do not exist in Vi.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
929 * Useful Packages:: A Sampling of some Emacs packages, and things
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
930 you should know about.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
931 @end menu
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
932
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
933 @node Basics, Undo and Backups, Improvements over Vi, Improvements over Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
934 @section Basics
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
935
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
936 The Vi command set is based on the idea of combining motion commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
937 with other commands. The motion command is used as a text region
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
938 specifier for other commands.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
939 We classify motion commands into @dfn{point commands} and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
940 @dfn{line commands}.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
941
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
942 @cindex point commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
943
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
944 The point commands are:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
945
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
946 @quotation
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
947 @kbd{h}, @kbd{l}, @kbd{0}, @kbd{$}, @kbd{w}, @kbd{W}, @kbd{b}, @kbd{B},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
948 @kbd{e}, @kbd{E}, @kbd{(}, @kbd{)}, @kbd{/}, @kbd{?}, @kbd{`}, @kbd{f},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
949 @kbd{F}, @kbd{t}, @kbd{T}, @kbd{%}, @kbd{;}, @kbd{,}, @kbd{^}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
950 @end quotation
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
951
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
952 @cindex line commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
953
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
954 The line commands are:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
955
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
956 @quotation
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
957 @kbd{j}, @kbd{k}, @kbd{+}, @kbd{-}, @kbd{H}, @kbd{M}, @kbd{L}, @kbd{@{},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
958 @kbd{@}}, @kbd{G}, @kbd{'}, @kbd{[[}, @kbd{]]}, @kbd{[]}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
959 @end quotation
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
960
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
961 @cindex region
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
962 @cindex region specification
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
963 @cindex expanding (region)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
964 @cindex describing regions
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
965 @cindex movement commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
966
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
967 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
968 If a point command is given as an argument to a modifying command, the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
969 region determined by the point command will be affected by the modifying
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
970 command. On the other hand, if a line command is given as an argument to a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
971 modifying command, the region determined by the line command will be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
972 enlarged so that it will become the smallest region properly containing the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
973 region and consisting of whole lines (we call this process @dfn{expanding
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
974 the region}), and then the enlarged region will be affected by the modifying
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
975 command.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
976 Text Deletion Commands (@pxref{Deleting Text}), Change commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
977 (@pxref{Changing Text}), even Shell Commands (@pxref{Shell Commands})
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
978 use these commands to describe a region of text to operate on.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
979 Thus, type @kbd{dw} to delete a word, @kbd{>@}} to shift a paragraph, or
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
980 @kbd{!'afmt} to format a region from @samp{point} to textmarker
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
981 @samp{a}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
982
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
983 @cindex r and R region specifiers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
984
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
985 Viper adds the region specifiers @samp{r} and @samp{R}. Emacs has a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
986 special marker called @dfn{mark}. The text-area between the current cursor
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
987 position @dfn{point} and the @dfn{mark} is called the @dfn{region}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
988 @samp{r} specifies the raw region and @samp{R} is the expanded region
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
989 (i.e., the minimal contiguous chunk of full lines that contains the raw
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
990 region).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
991 @kbd{dr} will now delete the region, @kbd{>r} will shift it, etc.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
992 @kbd{r,R} are not motion commands, however. The special mark is set by
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
993 @kbd{m.} and other commands. @xref{Marking}, for more info.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
994
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
995 Viper also adds counts to most commands for which it would make sense.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
996
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
997 In the Overview chapter, some Multiple File issues were discussed
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
998 (@pxref{Multiple Files in Viper}). In addition to the files, Emacs has
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
999 buffers. These can be seen in the @kbd{:args} list and switched using
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1000 @kbd{:next} if you type @kbd{:set ex-cycle-through-non-files t}, or
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1001 specify @code{(setq ex-cycle-through-non-files t)} in your @file{.viper}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1002 file. @xref{Customization}, for details.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1003
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1004 @node Undo and Backups, History, Basics, Improvements over Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1005 @section Undo and Backups
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1006
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1007 @cindex undo
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1008
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1009 Viper provides multiple undo. The number of undo's and the size is limited
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1010 by the machine. The Viper command @kbd{u} does an undo. Undo can be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1011 repeated by typing @kbd{.} (a period). Another @kbd{u} will undo the undo,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1012 and further
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1013 @kbd{.} will repeat it. Typing @kbd{u} does the first undo, and changes the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1014 direction.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1015
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1016 @cindex backup files
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1017 @cindex auto save
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1018
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1019 Since the undo size is limited, Viper can create backup files and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1020 auto-save files. It will normally do this automatically. It is possible
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1021 to have numbered backups, etc. For details, @pxref{Backup,,Backup and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1022 Auto-Save,emacs,The GNU Emacs Manual} @refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1023
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1024 @comment [ balance parens
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1025 @cindex viewing registers and markers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1026 @cindex registers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1027 @cindex markers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1028 @cindex textmarkers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1029
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1030 The results of the 9 previous changes are available in the 9 numeric
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1031 registers, as in Vi. The extra goody is the ability to @emph{view} these
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1032 registers, in addition to being able to access them through @kbd{p} and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1033 @kbd{M-y} (@xref{Insert State}, for details.)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1034 The Viper command @kbd{] register} will display the contents of any
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1035 register, numeric or alphabetical. The related command @kbd{[ textmarker}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1036 will show the text around the textmarker. @samp{register} and @samp{textmarker}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1037 can be any letters from a through z.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1038 @comment ] balance parens
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1039
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1040 @node History, Macros and Registers, Undo and Backups,Improvements over Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1041 @section History
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1042
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1043 @cindex history
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1044 @cindex Minibuffer
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1045
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1046 History is provided for Ex commands, Vi searches, file names, pieces of
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1047 text inserted in earlier commands that use Insert or Replace state, and for
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1048 destructive commands in Vi state. These are
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1049 useful for fixing those small typos that screw up searches and @kbd{:s},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1050 and for eliminating routine associated with repeated typing of file names
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1051 or pieces of text that need to be inserted frequently.
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
1052 At the @kbd{:} or @kbd{/} prompts in the minibuffer, you can do the following:
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1053
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1054 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1055 @item M-p and M-n
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1056 To move to previous and next history items. This causes the history
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1057 items to appear on the command line, where you can edit them, or
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1058 simply type Return to execute.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1059 @item M-r and M-s
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1060 To search backward and forward through the history.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1061 @item @key{RET}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1062 Type @key{RET} to accept a default (which is displayed in the prompt).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1063 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1064
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1065 The history of insertions can be perused by
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1066 typing @kbd{C-c M-p} and @kbd{C-c M-n} while in Insert or Replace state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1067 The history of destructive Vi commands can be perused via the same keys
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1068 when Viper is in Vi state. @xref{Viper Specials}, for details.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1069
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1070 All Ex commands have a file history. For instance, typing @kbd{:e}, space
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1071 and then @kbd{M-p} will bring up the name of the previously typed file
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1072 name. Repeatedly typing @kbd{M-p}, @kbd{M-n}, etc., will let you browse
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1073 through the file history.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1074
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1075 Similarly, commands that have to do with switching buffers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1076 have a buffer history, and commands that expect strings or regular
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1077 expressions keep a history on those items.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1078
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1079 @node Macros and Registers,Completion,History,Improvements over Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1080 @section Macros and Registers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1081
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1082 @cindex keyboard macros
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1083 @cindex macros
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1084 @cindex registers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1085 @cindex register execution
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1086
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1087 Viper facilitates the use of Emacs-style keyboard macros. @kbd{@@#} will
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1088 start a macro definition. As you type, the commands will be executed, and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1089 remembered (This is called ``learn mode'' in some editors.)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1090 @kbd{@@register} will complete the macro, putting it into @samp{register},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1091 where @samp{register} is any character from @samp{a} through @samp{z}. Then
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1092 you can execute this macro using @kbd{@@register}. It is, of course,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1093 possible to yank some text into a register and execute it using
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1094 @kbd{@@register}. Typing @kbd{@@@@}, @kbd{@@RET}, or @kbd{@@C-j} will
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1095 execute the last macro that was executed using @kbd{@@register}.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1096
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1097 Viper will automatically lowercase the register, so that pressing the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1098 @kbd{SHIFT} key for @kbd{@@} will not create problems. This is for
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1099 @kbd{@@} macros and @kbd{"p} @emph{only}. In the case of @kbd{y},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1100 @kbd{"Ayy} will append to @emph{register a}. For @kbd{[,],',`}, it
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1101 is an error to use a Uppercase register name.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1102
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1103 @comment [ balance parens
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1104 @cindex viewing registers and markers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1105
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1106 The contents of a register can be seen by @kbd{]register}. (@kbd{[textmarker}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1107 will show the contents of a textmarker).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1108 @comment ] balance parens
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1109
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1110 @cindex last keyboard macro
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1111
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1112 The last keyboard macro can also be executed using
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1113 @kbd{*}, and it can be yanked into a register using @kbd{@@!register}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1114 This is useful for Emacs style keyboard macros defined using @kbd{C-x(}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1115 and @kbd{C-x)}. Emacs keyboard macros have more capabilities.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1116 @xref{Keyboard Macros,,Keyboard Macros,emacs, The GNU Emacs Manual}, for
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1117 details.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1118
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1119 Keyboard Macros allow an interesting form of Query-Replace:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1120 @kbd{/pattern} or @kbd{n} to go to the next pattern (the query), followed by a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1121 Keyboard Macro execution @kbd{@@@@} (the replace).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1122
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1123 Viper also provides Vi-style macros. @xref{Vi Macros}, for details.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1124
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1125
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1126 @node Completion, Improved Search, Macros and Registers, Improvements over Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1127 @section Completion
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1128
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1129 @cindex completion
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1130
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1131 Completion is done when you type @key{TAB}. The Emacs completer does not
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1132 grok wildcards in file names. Once you type a wildcard, the completer will
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1133 no longer work for that file name. Remember that Emacs interprets a file name
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1134 of the form @kbd{/foo//bar} as @kbd{/bar} and @kbd{/foo/~/bar} as
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1135 @kbd{~/bar}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1136
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1137 @node Improved Search, Abbreviation Facilities, Completion, Improvements over Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1138 @section Improved Search
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1139
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1140 @cindex buffer search
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1141 @cindex word search
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1142
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1143 Viper provides buffer search, the ability to search the buffer for a region
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1144 under the cursor. You have to turn this on in @file{.viper} either by calling
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1145
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1146 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1147 (viper-buffer-search-enable)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1148 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1149
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1150 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1151 or by setting @code{viper-buffer-search-char} to, say, @kbd{f3}:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1152 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1153 (setq viper-buffer-search-char ?g)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1154 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1155
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1156 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1157 If the user calls @code{viper-buffer-search-enable} explicitly (the first
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1158 method), then @code{viper-buffer-search-char} will be set to @kbd{g}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1159 Regardless of how this feature is enabled, the key
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1160 @code{viper-buffer-search-char} will take movement commands, like
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1161 @kbd{w,/,e}, to find a region and then search for the contents of that
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1162 region. This command is very useful for searching for variable names, etc.,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1163 in a program. The search can be repeated by @kbd{n} or reversed by @kbd{N}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1164
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1165 @cindex incremental search
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1166
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1167 Emacs provides incremental search. As you type the string in, the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1168 cursor will move to the next match. You can snarf words from the buffer
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1169 as you go along. Incremental Search is normally bound to @kbd{C-s} and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1170 @kbd{C-r}. @xref{Customization}, to find out how to change the bindings
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1171 of @kbd{C-r or C-s}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1172 For details, @pxref{Incremental Search,,Incremental
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1173 Search,emacs,The GNU Emacs Manual} @refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1174
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1175 @cindex query replace
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1176
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1177 Viper also provides a query replace function that prompts through the
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
1178 minibuffer. It is invoked by the @kbd{Q} key in Vi state.
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1179
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1180 @cindex mouse search
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1181
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1182 On a window display, Viper supports mouse search, i.e., you can search for a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1183 word by clicking on it. @xref{Viper Specials}, for details.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1184
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1185 Finally, on a window display, Viper highlights search patterns as it finds
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1186 them. This is done through what is known as @emph{faces} in Emacs. The
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1187 variable that controls how search patterns are highlighted is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1188 @code{viper-search-face}. If you don't want any highlighting at all, put
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1189 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1190 (copy-face 'default 'viper-search-face)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1191 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1192 @vindex @code{viper-search-face}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1193 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1194 in @file{~/.viper}. If you want to change how patterns are highlighted, you
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1195 will have to change @code{viper-search-face} to your liking. The easiest
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1196 way to do this is to use Emacs customization widget, which is accessible
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1197 from the menubar. Viper customization group is located under the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1198 @emph{Emulations} customization group, which in turn is under the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1199 @emph{Editing} group (or simply by typing @kbd{:customize}). All Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1200 faces are grouped together under Viper's
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1201 @emph{Highlighting} group.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1202
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1203 Try it: it is really simple!
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1204
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1205 @node Abbreviation Facilities,Movement and Markers,Improved Search,Improvements over Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1206 @section Abbreviation Facilities
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1207
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1208 @cindex abbrevs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1209
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1210 It is possible in Emacs to define abbrevs based on the contents of the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1211 buffer.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1212 Sophisticated templates can be defined using the Emacs abbreviation
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1213 facilities. @xref{Abbrevs,,Abbreviations,emacs,The GNU Emacs Manual}, for
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1214 details.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1215
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1216 @cindex dynamic abbrevs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1217
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1218 Emacs also provides Dynamic Abbreviations. Given a partial word, Emacs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1219 will search the buffer to find an extension for this word. For instance,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1220 one can type @samp{Abbreviations} by typing @samp{A}, followed by a keystroke
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1221 that completed the @samp{A} to @samp{Abbreviations}. Repeated typing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1222 will search further back in the buffer, so that one could get
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1223 @samp{Abbrevs} by repeating the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1224 keystroke, which appears earlier in the text. Emacs binds this to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1225 @kbd{@key{ESC} /}, so you will have to find a key and bind the function
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1226 @code{dabbrev-expand} to that key.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1227 Facilities like this make Vi's @kbd{:ab} command obsolete.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1228
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1229 @node Movement and Markers, New Commands, Abbreviation Facilities, Improvements over Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1230 @section Movement and Markers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1231
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1232 @cindex Ex style motion
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1233 @cindex line editor motion
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1234
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1235 Viper can be set free from the line--limited movements in Vi, such as @kbd{l}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1236 refusing to move beyond the line, @key{ESC} moving one character back,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1237 etc. These derive from Ex, which is a line editor. If your @file{.viper}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1238 contains
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1239
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1240 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1241 @code{(setq viper-ex-style-motion nil)}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1242 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1243
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1244 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1245 the motion will be a true screen editor motion. One thing you must then
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1246 watch out for is that it is possible to be on the end-of-line character.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1247 The keys @kbd{x} and @kbd{%} will still work correctly, i.e., as if they
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1248 were on the last character.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1249
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1250 @vindex @code{viper-syntax-preference}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1251 @cindex syntax table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1252
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1253 The word-movement commands @kbd{w}, @kbd{e}, etc., and the associated
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1254 deletion/yanking commands, @kbd{dw}, @kbd{yw}, etc., can be made to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1255 understand Emacs syntax tables. If the variable
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1256 @code{viper-syntax-preference} is set to @code{strict-vi} then
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1257 the meaning of @emph{word} is the same as in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1258 Vi. However, if the value is @code{reformed-vi} (the default) then the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1259 alphanumeric symbols will be those specified by the current Emacs syntax
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1260 table (which may be different for different major modes) plus the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1261 underscore symbol @kbd{_}, minus some non-word symbols, like '.;,|, etc.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1262 Both @code{strict-vi} and @code{reformed-vi} work close to Vi in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1263 traditional cases, but @code{reformed-vi} does a better job when editing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1264 text in non-Latin alphabets.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1265
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1266 The user can also specify the value @code{emacs}, which would
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1267 make Viper use exactly the Emacs notion of word. In particular, the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1268 underscore may not be part of a word. Finally, if
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1269 @code{viper-syntax-preference} is set to @code{extended}, Viper words would
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1270 consist of characters that are classified as alphanumeric @emph{or} as
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1271 parts of symbols. This is convenient for writing programs and in many other
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1272 situations.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1273
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1274 @code{viper-syntax-preference} is a local variable, so it can have different
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1275 values for different major modes. For instance, in programming modes it can
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1276 have the value @code{extended}. In text modes where words contain special
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1277 characters, such as European (non-English) letters, Cyrillic letters, etc.,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1278 the value can be @code{reformed-vi} or @code{emacs}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1279
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1280 Changes to @code{viper-syntax-preference} should be done in the hooks to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1281 various major modes by executing @code{viper-set-syntax-preference} as in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1282 the following example:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1283
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1284 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1285 (viper-set-syntax-preference nil "emacs")
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1286 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1287
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1288 @findex @code{viper-set-syntax-preference}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1289
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1290 The above discussion of the meaning of Viper's words concerns only Viper's
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1291 movement commands. In regular expressions, words remain the same as in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1292 Emacs. That is, the expressions @code{\w}, @code{\>}, @code{\<}, etc., use
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1293 Emacs' idea of what is a word, and they don't look into the value of
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1294 variable @code{viper-syntax-preference}. This is because Viper doesn't change
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1295 syntax tables in fear of upsetting the various major modes that set these
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1296 tables.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1297
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1298 @cindex textmarkers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1299
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1300 Textmarkers in Viper remember the file and the position, so that you can
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1301 switch files by simply doing @kbd{'a}. If you set up a regimen for using
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1302 Textmarkers, this is very useful. Contents of textmarkers can be viewed
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1303 by @kbd{[marker}. (Contents of registers can be viewed by @kbd{]register}).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1304
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1305 @node New Commands, Useful Packages, Movement and Markers, Improvements over Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1306 @section New Commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1307
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1308 These commands have no Vi analogs.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1309
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1310 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1311 @item C-x, C-c
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1312 @kindex @kbd{C-x}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1313 @kindex @kbd{C-c}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1314 These two keys invoke many important Emacs functions. For example, if you
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1315 hit @kbd{C-x} followed by @kbd{2}, then the current window will be split
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1316 into 2. Except for novice users, @kbd{C-c} is also set to execute an Emacs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1317 command from the current major mode. @key{ESC} will do the same, if you
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1318 configure @key{ESC} as Meta by setting @code{viper-no-multiple-ESC} to @code{nil}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1319 in @file{.viper}. @xref{Customization}. @kbd{C-\} in Insert, Replace, or Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1320 states will make Emacs think @kbd{Meta} has been hit.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1321 @item \
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1322 @kindex @kbd{\}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1323 Escape to Emacs to execute a single Emacs command. For instance,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1324 @kbd{\ @key{ESC}} will act like a Meta key.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1325 @item Q
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1326 @kindex @kbd{Q}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1327 @cindex query replace
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1328 @kbd{Q} is for query replace. By default,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1329 each string to be replaced is treated as a regular expression. You can use
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1330 @code{(setq viper-re-query-replace nil)} in your @file{.emacs} file to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1331 turn this off. (For normal searches, @kbd{:se nomagic} will work. Note
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1332 that @kbd{:se nomagic} turns Regexps off completely, unlike Vi).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1333 @item v
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1334 @itemx V
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1335 @itemx C-v
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1336 @kindex @kbd{v}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1337 @kindex @kbd{V}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1338 @kindex @kbd{C-v}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1339 These keys are used to visit files. @kbd{v} will switch to a buffer
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
1340 visiting file whose name can be entered in the minibuffer. @kbd{V} is
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1341 similar, but will use a window different from the current window.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1342 @kbd{C-v} is like @kbd{V}, except that a new frame (X window) will be used
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1343 instead of a new Emacs window.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1344 @item #
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1345 @kindex @kbd{#}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1346 If followed by a certain character @var{ch}, it becomes an operator whose
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1347 argument is the region determined by the motion command that follows
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1348 (indicated as <move>).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1349 Currently, @var{ch} can be one of @kbd{c}, @kbd{C}, @kbd{g}, @kbd{q}, and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1350 @kbd{s}. For instance, @kbd{#qr} will prompt you for a string and then
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1351 prepend this string to each line in the buffer.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1352 @item # c
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1353 @kindex @kbd{#c<move>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1354 @cindex changing case
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1355 Change upper-case characters in the region to lower-case
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1356 (@code{downcase-region}).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1357 Emacs command @kbd{M-l} does the same for words.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1358 @item # C
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1359 @kindex @kbd{#C<move>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1360 Change lower-case characters in the region to upper-case. For instance,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1361 @kbd{# C 3 w} will capitalize 3 words from the current point
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1362 (@code{upcase-region}).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1363 Emacs command @kbd{M-u} does the same for words.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1364 @item # g
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1365 @kindex @kbd{#g<move>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1366 Execute last keyboard macro for each line in the region
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1367 (@code{viper-global-execute}).@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1368 @item # q
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1369 @kindex @kbd{#q<move>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1370 Insert specified string at the beginning of each line in the region
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1371 (@code{viper-quote-region}). The default string is composed of the comment
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1372 character(s) appropriate for the current major mode.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1373 @item # s
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1374 @kindex @kbd{#s<move>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1375 Check spelling of words in the region (@code{spell-region}).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1376 The function used for spelling is determined from the variable
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1377 @code{viper-spell-function}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1378 @vindex @code{viper-spell-function}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1379 @item *
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1380 @kindex @kbd{*}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1381 Call last keyboard macro.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1382 @item m .
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1383 Set mark at point and push old mark off the ring
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1384 @item m<
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1385 @item m>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1386 Set mark at beginning and end of buffer, respectively.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1387 @item m,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1388 Jump to mark and pop mark off the ring. @xref{Mark,,Mark,emacs,The GNU
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1389 Emacs Manual}, for more info.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1390 @item ] register
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1391 @kindex @kbd{]<a-z>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1392 View contents of register
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1393 @item [ textmarker
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1394 @kindex @kbd{[<a-z>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1395 View filename and position of textmarker
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1396 @item @@#
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1397 @item @@register
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1398 @item @@!
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1399 @kindex @kbd{@@#}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1400 @kindex @kbd{@@<a-z>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1401 @kindex @kbd{@@!}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1402 @cindex keyboard macros
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1403 @cindex register execution
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1404
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1405 Begin/end keyboard macro. @@register has a different meaning when used after
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1406 a @kbd{@@#}. @xref{Macros and Registers}, for details
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1407 @item []
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1408 @kindex @kbd{[]}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1409 Go to end of heading.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1410 @item g <@emph{movement command}>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1411 Search buffer for text delimited by movement command. The canonical
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1412 example is @kbd{gw} to search for the word under the cursor.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1413 @xref{Improved Search}, for details.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1414 @item C-g and C-]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1415 @kindex @kbd{C-g}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1416 @kindex @kbd{C-]}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1417 Quit and Abort Recursive edit. These may be necessary on occasion.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1418 @xref{Vi State}, for a reason.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1419 @item C-c C-g
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1420 @kindex @kbd{C-c C-g}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1421 Hitting @kbd{C-c} followed by @kbd{C-g} will display the information on the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1422 current buffer. This is the same as hitting @kbd{C-g} in Vi, but, as
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1423 explained above, @kbd{C-g} is needed for other purposes in Emacs.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1424 @item C-c /
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1425 @kindex @kbd{C-c /}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1426 Without a prefix argument, this command toggles
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1427 case-sensitive/case-insensitive search modes and plain vanilla/regular
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1428 expression search. With the prefix argument 1, i.e.,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1429 @kbd{1 C-c /}, this toggles case-sensitivity; with the prefix argument 2,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1430 toggles plain vanilla search and search using
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1431 regular expressions. @xref{Viper Specials}, for alternative ways to invoke
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1432 this function.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1433 @cindex vanilla search
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1434 @cindex case-sensitive search
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1435 @cindex case-insensitive search
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1436
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1437 @item M-p and M-n
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1438 @kindex @kbd{M-p}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1439 @kindex @kbd{M-n}
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
1440 In the minibuffer, these commands navigate through the minibuffer
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1441 histories, such as the history of search strings, Ex commands, etc.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1442
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
1443 @item C-s
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
1444 @kindex @kbd{C-s}
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
1445 If the minibuffer is entered via a Viper search commands @kbd{/} or @kbd{?},
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
1446 then typing this key inserts the last search string used by the
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
1447 Emacs incremental search command (that is bound to @kbd{C-s} everywhere
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
1448 except in this case).
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
1449
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1450 @item C-c M-p and C-c M-n
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1451 @kindex @kbd{C-c M-p}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1452 @kindex @kbd{C-c M-n}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1453 @cindex Insertion history
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1454 @cindex Insertion ring
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1455 @cindex Command history
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1456 @cindex Command ring
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1457
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1458 In Insert or Replace state, these commands let the user
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1459 peruse the history of insertion strings used in previous insert or replace
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1460 commands. Try to hit @kbd{C-c M-p} or @kbd{C-c M-n} repeatedly and see what
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1461 happens. @xref{Viper Specials}, for more.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1462
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1463 In Vi state, these commands let the user peruse the history of Vi-style
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1464 destructive commands, such as @kbd{dw}, @kbd{J}, @kbd{a}, etc.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1465 By repeatedly typing @kbd{C-c M-p} or @kbd{C-c M-n} you will cycle Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1466 through the recent history of Vi commands, displaying the commands one by
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1467 one. Once
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1468 an appropriate command is found, it can be executed by typing `@kbd{.}'.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1469
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1470 Since typing @kbd{C-c M-p} is tedious, it is more convenient to bind an
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1471 appropriate function to a function key on the keyboard and use that key.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1472 @xref{Viper Specials}, for details.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1473
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1474 @item Ex commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1475 @findex @kbd{:args}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1476 @findex @kbd{:n}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1477 @findex @kbd{:pwd}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1478 @findex @kbd{:pre}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1479 The commands @kbd{:args}, @kbd{:next}, @kbd{:pre} behave
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1480 differently. @kbd{:pwd} exists to get current directory.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1481 The commands @kbd{:b} and @kbd{:B} switch buffers around. @xref{File and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1482 Buffer Handling}, for details.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1483 There are also the new commands @kbd{:RelatedFile} and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1484 @kbd{PreviousRelatedFile} (which abbreviate to @kbd{R} and @kbd{P},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1485 respectively. @xref{Viper Specials}, for details.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1486 @findex @kbd{:RelatedFile}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1487 @findex @kbd{:PreviousRelatedFile}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1488 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1489
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1490 Apart from the new commands, many old commands have been enhanced. Most
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1491 notably, Vi style macros are much more powerful in Viper than in Vi. @xref{Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1492 Macros}, for details.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1493
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1494 @node Useful Packages, ,New Commands, Improvements over Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1495 @section Useful Packages
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1496
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1497 Some Emacs packages are mentioned here as an aid to the new Viper user, to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1498 indicate what Viper is capable of.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1499 A vast number comes with the standard Emacs distribution, and many more exist
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1500 on the net and on the archives.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1501
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1502 This manual also mentions some Emacs features a new user
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1503 should know about. The details of these are found in the GNU Emacs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1504 Manual.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1505
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1506 The features first. For details, look up the Emacs Manual.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1507
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1508 @table @samp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1509 @item Make
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1510 @cindex make
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1511 @cindex compiling
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1512
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1513 Makes and Compiles can be done from the editor. Error messages will be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1514 parsed and you can move to the error lines.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1515 @item Shell
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1516 @cindex shell
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1517 @cindex interactive shell
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1518 You can talk to Shells from inside the editor. Your entire shell session
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1519 can be treated as a file.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1520 @item Mail
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1521 @cindex email
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1522 @cindex mail
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1523 Mail can be read from and sent within the editor. Several sophisticated
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1524 packages exist.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1525 @item Language Sensitive Editing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1526 Editing modes are written for most computer languages in existence. By
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1527 controlling indentation, they catch punctuation errors.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1528 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1529
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1530 The packages, below, represents a drop in the sea of special-purpose
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1531 packages that come with standard distribution of Emacs.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1532
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1533 @table @samp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1534 @item Transparent FTP
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1535 @cindex transparent ftp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1536 @pindex ange-ftp.el
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1537 @code{ange-ftp.el} can ftp from the editor to files on other machines
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1538 transparent to the user.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1539 @item RCS Interfaces
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1540 @cindex version maintenance
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1541 @cindex RCS
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1542 @pindex vc.el
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1543 @code{vc.el} for doing RCS commands from inside the editor
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1544 @item Directory Editor
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1545 @cindex dired
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1546 @pindex dired.el
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1547 @code{dired.el} for editing contents of directories and for navigating in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1548 the file system.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1549 @item Syntactic Highlighting
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1550 @cindex font-lock
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1551 @pindex font-lock.el
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1552 @code{font-lock.el} for automatic highlighting various parts of a buffer
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1553 using different fonts and colors.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1554 @item Saving Emacs Configuration
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1555 @cindex desktop
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1556 @pindex desktop.el
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1557 @code{desktop.el} for saving/restoring configuration on Emacs exit/startup.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1558 @item Spell Checker
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1559 @cindex ispell
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1560 @pindex ispell.el
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1561 @code{ispell.el} for spell checking the buffer, words, regions, etc.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1562 @item File and Buffer Comparison
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1563 @cindex ediff
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1564 @pindex ediff.el
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1565 @code{ediff.el} for finding differences between files and for applying
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1566 patches.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1567 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1568
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1569 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1570 Emacs Lisp archives exist on
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1571 @samp{archive.cis.ohio-state.edu}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1572 and @samp{wuarchive.wustl.edu}@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1573
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1574
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1575 @node Customization,Commands,Improvements over Vi,Top
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1576 @chapter Customization
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1577
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1578 @cindex customization
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1579
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1580 Customization can be done in 2 ways.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1581
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1582 @itemize @bullet
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1583 @item
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1584 @cindex initialization
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1585 @cindex .viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1586 Elisp code in a @file{.viper} file in your home directory. Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1587 loads @file{.viper} just before it does the binding for mode
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1588 hooks. This is recommended for experts only.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1589 @item
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1590 @cindex .emacs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1591 Elisp code in your @file{.emacs} file before and after the @code{(require
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1592 'viper)} line. This method is @emph{not} recommended, unless you know what
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1593 you are doing. Only two variables, @code{viper-mode} and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1594 @code{viper-custom-file-name}, are supposed to be customized in @file{.emacs},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1595 prior to loading Viper (i.e., prior to @code{(require 'viper)} command.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1596 @item
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1597 @cindex :customize
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1598 By executing the @kbd{:customize} Ex command. This takes you to the Emacs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1599 customization widget, which lets you change the values of Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1600 customizable variables easily. This method is good for novice and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1601 experts alike. The customization code in the form of Lisp commands will be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1602 placed in @file{~/.emacs} or some other customization file depending on the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1603 version of Emacs that you use. Still, it is recommended to separate
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1604 Viper-related customization produced by the Emacs customization widget
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1605 and keep it in the @file{.viper} file.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1606
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1607 Some advanced customization cannot be accomplished this way, however, and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1608 has to be done in Emacs Lisp in the @file{.viper} file. For the common
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1609 cases, examples are provided that you can use directly.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1610 @end itemize
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1611
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1612
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1613 @menu
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1614 * Rudimentary Changes:: Simple constant definitions.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1615 * Key Bindings:: Enabling Emacs Keys, Rebinding keys, etc.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1616 * Packages that Change Keymaps:: How to deal with such beasts.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1617 * Viper Specials:: Special Viper commands.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1618 * Vi Macros:: How to do Vi style macros.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1619 @end menu
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1620
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1621 @node Rudimentary Changes,Key Bindings,Customization,Customization
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1622 @section Rudimentary Changes
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1623
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1624 @cindex setting variables
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1625 @cindex variables for customization
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1626 @findex @kbd{:set}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1627
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1628 An easy way to customize Viper is to change the values of constants used in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1629 Viper. Here is the list of the constants used in Viper and their default
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1630 values. The corresponding :se command is also indicated. (The symbols
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1631 @code{t} and @code{nil} represent ``true'' and ``false'' in Lisp).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1632
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1633 Viper supports both the abbreviated Vi variable names and their full
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1634 names. Variable completion is done on full names only. @key{TAB} and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1635 @key{SPC} complete
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1636 variable names. Typing `=' will complete the name and then will prompt for
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1637 a value, if applicable. For instance, @kbd{:se au @key{SPC}} will complete the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1638 command to @kbd{:set autoindent}; @kbd{:se ta @key{SPC}} will complete the command
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1639 and prompt further like this: @kbd{:set tabstop = }.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1640 However, typing @kbd{:se ts @key{SPC}} will produce a ``No match'' message
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1641 because @kbd{ts} is an abbreviation for @kbd{tabstop} and Viper supports
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1642 completion on full names only. However, you can still hit @key{RET}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1643 or @kbd{=}, which will complete the command like this: @kbd{:set ts = } and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1644 Viper will be waiting for you to type a value for the tabstop variable.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1645 To get the full list of Vi variables, type @kbd{:se @key{SPC} @key{TAB}}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1646
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1647 @table @code
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1648 @item viper-auto-indent nil
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1649 @itemx :se ai (:se autoindent)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1650 @itemx :se ai-g (:se autoindent-global)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1651 If @code{t}, enable auto indentation.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1652 by @key{RET}, @kbd{o} or @kbd{O} command.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1653
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1654 @code{viper-auto-indent} is a local variable. To change the value globally, use
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1655 @code{setq-default}. It may be useful for certain major modes to have their
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1656 own values of @code{viper-auto-indent}. This can be achieved by using
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1657 @code{setq} to change the local value of this variable in the hooks to the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1658 appropriate major modes.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1659
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1660 @kbd{:se ai} changes the value of @code{viper-auto-indent} in the current
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1661 buffer only; @kbd{:se ai-g} does the same globally.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1662 @item viper-electric-mode t
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1663 If not @code{nil}, auto-indentation becomes electric, which means that
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1664 @key{RET}, @kbd{O}, and @kbd{o} indent cursor according to the current
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1665 major mode. In the future, this variable may control additional electric
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1666 features.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1667
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1668 This is a local variable: @code{setq} changes the value of this variable
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1669 in the current buffer only. Use @code{setq-default} to change the value in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1670 all buffers.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1671 @item viper-case-fold-search nil
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1672 @itemx :se ic (:se ignorecase)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1673 If not @code{nil}, search ignores cases.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1674 This can also be toggled by quickly hitting @kbd{/} twice.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1675 @item viper-re-search nil
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1676 @itemx :se magic
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1677 If not @code{nil}, search will use regular expressions; if @code{nil} then
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1678 use vanilla search.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1679 This behavior can also be toggled by quickly hitting @kbd{/} trice.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1680 @item buffer-read-only
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1681 @itemx :se ro (:se readonly)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1682 Set current buffer to read only. To change globally put
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1683 @code{(setq-default buffer-read-only t)} in your @file{.emacs} file.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1684 @item blink-matching-paren t
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1685 @itemx :se sm (:se showmatch)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1686 Show matching parens by blinking cursor.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1687 @item tab-width t (default setting via @code{setq-default})
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1688 @itemx :se ts=value (:se tabstop=value)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1689 @itemx :se ts-g=value (:se tabstop-global=value)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1690 @code{tab-width} is a local variable that controls the width of the tab stops.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1691 To change the value globally, use @code{setq-default}; for local settings,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1692 use @code{setq}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1693
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1694 The command @kbd{:se ts}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1695 sets the tab width in the current
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1696 buffer only; it has no effect on other buffers.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1697
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1698 The command @kbd{:se ts-g} sets tab width globally,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1699 for all buffers where the tab is not yet set locally,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1700 including the new buffers.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1701
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1702 Note that typing @key{TAB} normally
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1703 doesn't insert the tab, since this key is usually bound to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1704 a text-formatting function, @code{indent-for-tab-command} (which facilitates
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1705 programming and document writing). Instead, the tab is inserted via the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1706 command @code{viper-insert-tab}, which is bound to @kbd{S-tab} (shift + tab).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1707
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1708 On some non-windowing terminals, Shift doesn't modify the @key{TAB} key, so
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1709 @kbd{S-tab} behaves as if it were @key{TAB}. In such a case, you will have
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1710 to bind @code{viper-insert-tab} to some other convenient key.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1711
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1712 @item viper-shift-width 8
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1713 @itemx :se sw=value (:se shiftwidth=value)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1714 The number of columns shifted by @kbd{>} and @kbd{<} commands.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1715 @item viper-search-wrap-around t
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1716 @itemx :se ws (:se wrapscan)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1717 If not @code{nil}, search wraps around the end/beginning of buffer.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1718 @item viper-search-scroll-threshold 2
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1719 If search lands within this many lines of the window top or bottom, the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1720 window will be scrolled up or down by about 1/7-th of its size, to reveal
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1721 the context. If the value is negative---don't scroll.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1722 @item viper-tags-file-name "TAGS"
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1723 The name of the file used as the tag table.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1724 @item viper-re-query-replace nil
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1725 If not @code{nil}, use reg-exp replace in query replace.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1726 @item viper-want-ctl-h-help nil
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1727 If not @code{nil}, @kbd{C-h} is bound to @code{help-command};
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1728 otherwise, @kbd{C-h} is bound as usual in Vi.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1729 @item viper-vi-style-in-minibuffer t
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1730 If not @code{nil}, Viper provides a high degree of compatibility with Vi
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
1731 insert mode when you type text in the minibuffer; if @code{nil}, typing in
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
1732 the minibuffer feels like plain Emacs.
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1733 @item viper-no-multiple-ESC t
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1734 If you set this to @code{nil}, you can use @key{ESC} as Meta in Vi state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1735 Normally, this is not necessary, since graphical displays have separate
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1736 Meta keys (usually on each side of the space bar). On a dumb terminal, Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1737 sets this variable to @code{twice}, which is almost like @code{nil}, except
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1738 that double @key{ESC} beeps. This, too, lets @key{ESC} to be used as a Meta.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1739 @item viper-fast-keyseq-timeout 200
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1740 Key sequences separated by this many milliseconds are treated as Vi-style
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1741 keyboard macros. If the key sequence is defined as such a macro, it will be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1742 executed. Otherwise, it is processed as an ordinary sequence of typed keys.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1743
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1744 Setting this variable too high may slow down your typing. Setting it too
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1745 low may make it hard to type macros quickly enough.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1746 @item viper-ex-style-motion t
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1747 Set this to @code{nil}, if you want @kbd{l,h} to cross
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1748 lines, etc. @xref{Movement and Markers}, for more info.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1749 @item viper-ex-style-editing t
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1750 Set this to @code{nil}, if you want
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1751 @kbd{C-h} and @key{DEL} to not stop
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1752 at the beginning of a line in Insert state, @key{X} and @key{x} to delete
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1753 characters across lines in Vi command state, etc.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1754 @item viper-ESC-moves-cursor-back t
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1755 It @code{t}, cursor moves back 1 character when switching from insert state to vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1756 state. If @code{nil}, the cursor stays where it was before the switch.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1757 @item viper-always t
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1758 @code{t} means: leave it to Viper to decide when a buffer must be brought
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1759 up in Vi state,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1760 Insert state, or Emacs state. This heuristics works well in virtually all
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1761 cases. @code{nil} means you either has to invoke @code{viper-mode} manually
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1762 for each buffer (or you can add @code{viper-mode} to the appropriate major mode
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1763 hooks using @code{viper-load-hook}).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1764
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1765 This option must be set in the file @file{~/.viper}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1766 @item viper-custom-file-name "~/.viper"
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1767 File used for Viper-specific customization.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1768 Change this setting, if you want. Must be set in @file{.emacs} (not @file{.viper}!)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1769 before Viper is loaded. Note that you
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1770 have to set it as a string inside double quotes.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1771 @item viper-spell-function 'ispell-region
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1772 Function used by the command @kbd{#c<move>} to spell.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1773 @item viper-glob-function
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1774 The value of this variable is the function symbol used to expand wildcard
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1775 symbols. This is platform-dependent. The default tries to set this variable
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1776 to work with most shells, MS Windows, OS/2, etc. However, if it
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1777 doesn't work the way you expect, you should write your own.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1778 Use @code{viper-glob-unix-files} and @code{viper-glob-mswindows-files} in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1779 @file{viper-util.el} as examples.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1780
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1781 This feature is used to expand wildcards in the Ex command @kbd{:e}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1782 Note that Viper doesn't support wildcards in the @kbd{:r} and @kbd{:w}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1783 commands, because file completion is a better mechanism.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1784 @findex @code{viper-glob-function}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1785
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1786 @item ex-cycle-other-window t
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1787 If not @code{nil}, @kbd{:n} and @kbd{:b} will cycle through files in another
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1788 window, if one exists.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1789 @item ex-cycle-through-non-files nil
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1790 @kbd{:n} does not normally cycle through buffers. Set this to get
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1791 buffers also.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1792 @item viper-want-emacs-keys-in-insert
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1793 This is set to @code{nil} for user levels 1 and 2 and to @code{t} for user
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1794 levels 3 and 4. Users who specify level 5 are allowed to set this variable
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1795 as they please (the default for this level is @code{t}). If set to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1796 @code{nil}, complete Vi compatibility is provided in Insert state. This is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1797 really not recommended, as this precludes you from using language-specific
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1798 features provided by the major modes.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1799 @item viper-want-emacs-keys-in-vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1800 This is set to @code{nil} for user
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1801 level 1 and to @code{t} for user levels 2--4.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1802 At level 5, users are allowed to set this variable as they please (the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1803 default for this level is @code{t}).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1804 If set to @code{nil}, complete Vi compatibility is provided
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1805 in Vi command state. Setting this to @code{nil} is really a bad idea,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1806 unless you are a novice, as this precludes the use
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1807 of language-specific features provided by the major modes.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1808 @item viper-keep-point-on-repeat t
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1809 If not @code{nil}, point is not moved when the user repeats the previous
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1810 command by typing `.' This is very useful for doing repeated changes with
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1811 the @kbd{.} key.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1812 @item viper-repeat-from-history-key 'f12
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1813 Prefix key used to invoke the macros @kbd{f12 1} and @kbd{f12 2} that repeat
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1814 the second-last and the third-last destructive command.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1815 Both these macros are bound (as Viper macros) to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1816 @code{viper-repeat-from-history},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1817 which checks the second key by which it is invoked to see which of the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1818 previous commands to invoke. Viper binds @kbd{f12 1} and @kbd{f12 2} only,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1819 but the user can bind more in @file{~/.viper}. @xref{Vi Macros}, for how to do
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1820 this.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1821 @item viper-keep-point-on-undo nil
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1822 If not @code{nil}, Viper tries to not move point when undoing commands.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1823 Instead, it will briefly move the cursor to the place where change has
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1824 taken place. However, if the undone piece of text is not seen in window,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1825 then point will be moved to the place where the change took place.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1826 Set it to @code{t} and see if you like it better.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1827 @item viper-delete-backwards-in-replace nil
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1828 If not @code{nil}, @key{DEL} key will delete characters while moving the cursor
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1829 backwards. If @code{nil}, the cursor will move backwards without deleting
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1830 anything.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1831 @item viper-replace-overlay-face 'viper-replace-overlay-face
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1832 On a graphical display, Viper highlights replacement regions instead of
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1833 putting a @samp{$} at the end. This variable controls the so called
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1834 @dfn{face} used to highlight the region.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1835
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1836 By default, @code{viper-replace-overlay-face} underlines the replacement on
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1837 monochrome displays and also lays a stipple over them. On color displays,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1838 replacement regions are highlighted with color.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1839
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1840 If you know something about Emacs faces and don't like how Viper highlights
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1841 replacement regions, you can change @code{viper-replace-overlay-face} by
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1842 specifying a new face. (Emacs faces are described in the Emacs Lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1843 reference.) On a color display, the following customization method is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1844 usually most effective:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1845 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1846 (set-face-foreground viper-replace-overlay-face "DarkSlateBlue")
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1847 (set-face-background viper-replace-overlay-face "yellow")
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1848 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1849 For a complete list of colors available to you, evaluate the expression
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1850 @code{(x-defined-colors)}. (Type it in the buffer @code{*scratch*} and then
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1851 hit the @kbd{C-j} key.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1852
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1853 @item viper-replace-overlay-cursor-color "Red"
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1854 @vindex @code{viper-replace-overlay-cursor-color}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1855 Cursor color when it is inside the replacement region.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1856 This has effect only on color displays and only when Emacs runs as an X
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1857 application.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1858 @item viper-insert-state-cursor-color nil
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1859 @vindex @code{viper-insert-state-cursor-color}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1860 If set to a valid color, this will be the cursor color when Viper is in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1861 insert state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1862 @item viper-emacs-state-cursor-color nil
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1863 @vindex @code{viper-emacs-state-cursor-color}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1864 If set to a valid color, this will be the cursor color when Viper is in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1865 emacs state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1866 @item viper-replace-region-end-delimiter "$"
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1867 A string used to mark the end of replacement regions. It is used only on
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1868 TTYs or if @code{viper-use-replace-region-delimiters} is non-@code{nil}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1869 @item viper-replace-region-start-delimiter ""
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1870 A string used to mark the beginning of replacement regions. It is used
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1871 only on TTYs or if @code{viper-use-replace-region-delimiters} is non-@code{nil}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1872 @item viper-use-replace-region-delimiters
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1873 If non-@code{nil}, Viper will always use @code{viper-replace-region-end-delimiter} and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1874 @code{viper-replace-region-start-delimiter} to delimit replacement regions,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1875 even on color displays (where this is unnecessary). By default, this
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1876 variable is non-@code{nil} only on TTYs or monochrome displays.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1877 @item viper-allow-multiline-replace-regions t
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1878 If non-@code{nil}, multi-line text replacement regions, such as those produced by
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1879 commands @kbd{c55w}, @kbd{3C}, etc., will stay around until the user exits
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1880 the replacement mode. In this variable is set to @code{nil}, Viper will
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1881 emulate the standard Vi behavior, which supports only intra-line
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1882 replacement regions (and multi-line replacement regions are deleted).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1883 @item viper-toggle-key "\C-z"
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1884 Specifies the key used to switch from Emacs to Vi and back.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1885 Must be set in @file{.viper}. This variable can't be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1886 changed interactively after Viper is loaded.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1887
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1888 In Insert state, this key acts as a temporary escape to Vi state, i.e., it
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1889 will set Viper up so that the very next command will be executed as if it
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1890 were typed in Vi state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1891 @item viper-buffer-search-char nil
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1892 Key used for buffer search. @xref{Viper Specials}, for details.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1893 @item viper-surrounding-word-function 'viper-surrounding-word
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1894 The value of this variable is a function name that is used to determine
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1895 what constitutes a word clicked upon by the mouse. This is used by mouse
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1896 search and insert.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1897 @item viper-search-face 'viper-search-face
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1898 Variable that controls how search patterns are highlighted when they are
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1899 found.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1900 @item viper-vi-state-hook nil
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1901 List of parameterless functions to be run just after entering the Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1902 command state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1903 @item viper-insert-state-hook nil
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1904 Same for Insert state. This hook is also run after entering Replace state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1905 @item viper-replace-state-hook nil
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1906 List of (parameterless) functions called just after entering Replace state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1907 (and after all @code{viper-insert-state-hook}).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1908 @item viper-emacs-state-hook nil
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1909 List of (parameterless) functions called just after switching from Vi state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1910 to Emacs state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1911 @item viper-load-hook nil
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1912 List of (parameterless) functions called just after loading Viper. This is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1913 the last chance to do customization before Viper is up and running.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1914 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1915 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1916 You can reset some of these constants in Viper with the Ex command @kbd{:set}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1917 (when so indicated in the table). Or you
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1918 can include a line like this in your @file{.viper} file:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1919 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1920 (setq viper-case-fold-search t)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1921 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1922 @vindex @code{viper-auto-indent}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1923 @vindex @code{viper-electric-mode}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1924 @vindex @code{viper-case-fold-search}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1925 @vindex @code{viper-re-search}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1926 @vindex @code{viper-shift-width}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1927 @vindex @code{buffer-read-only}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1928 @vindex @code{viper-search-wrap-around}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1929 @vindex @code{viper-search-scroll-threshold}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1930 @vindex @code{viper-search-face}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1931 @vindex @code{viper-tags-file-name}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1932 @vindex @code{viper-re-query-replace}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1933 @vindex @code{viper-want-ctl-h-help}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1934 @vindex @code{viper-vi-style-in-minibuffer}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1935 @vindex @code{viper-no-multiple-ESC}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1936 @vindex @code{viper-always}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1937 @vindex @code{viper-fast-keyseq-timeout}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1938 @vindex @code{viper-ex-style-motion}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1939 @vindex @code{viper-ex-style-editing}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1940 @vindex @code{viper-ESC-moves-cursor-back}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1941 @vindex @code{viper-custom-file-name}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1942 @vindex @code{viper-spell-function}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1943 @vindex @code{ex-cycle-other-window}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1944 @vindex @code{ex-cycle-through-non-files}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1945 @vindex @code{viper-want-emacs-keys-in-insert}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1946 @vindex @code{viper-want-emacs-keys-in-vi}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1947 @vindex @code{viper-keep-point-on-repeat}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1948 @vindex @code{viper-keep-point-on-undo}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1949 @vindex @code{viper-delete-backwards-in-replace}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1950 @vindex @code{viper-replace-overlay-face}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1951 @vindex @code{viper-replace-region-end-symbol}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1952 @vindex @code{viper-replace-region-start-symbol}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1953 @vindex @code{viper-allow-multiline-replace-regions}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1954 @vindex @code{viper-toggle-key}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1955 @vindex @code{viper-buffer-search-char}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1956 @vindex @code{viper-surrounding-word-function}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1957 @vindex @code{viper-vi-state-hook}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1958 @vindex @code{viper-insert-state-hook}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1959 @vindex @code{viper-replace-state-hook}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1960 @vindex @code{viper-emacs-state-hook}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1961
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1962 @node Key Bindings, Packages that Change Keymaps, Rudimentary Changes,Customization
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1963 @section Key Bindings
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1964
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1965 @cindex key bindings
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1966 @cindex keymaps
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1967
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1968 Viper lets you define hot keys, i.e., you can associate keyboard keys
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1969 such as F1, Help, PgDn, etc., with Emacs Lisp functions (that may already
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1970 exist or that you will write). Each key has a "preferred form" in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1971 Emacs. For instance, the Up key's preferred form is [up], the Help key's
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1972 preferred form is [help], and the Undo key has the preferred form [f14].
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1973 You can find out the preferred form of a key by typing @kbd{M-x
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1974 describe-key-briefly} and then typing the key you want to know about.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1975
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1976 Under the X Window System, every keyboard key emits its preferred form,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1977 so you can just type
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1978
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1979 @lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1980 (global-set-key [f11] 'calendar) ; L1, Stop
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1981 (global-set-key [f14] 'undo) ; L4, Undo
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1982 @end lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1983
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1984 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1985 to bind L1 (a key that exists on some SUN workstations) so it will invoke
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1986 the Emacs Calendar and to bind L4 so it will undo changes.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1987 However, on a dumb terminal or in an Xterm window, even the standard arrow
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1988 keys may
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1989 not emit the right signals for Emacs to understand. To let Emacs know about
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1990 those keys, you will have to find out which key sequences they emit
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1991 by typing @kbd{C-q} and then the key (you should switch to Emacs state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1992 first). Then you can bind those sequences to their preferred forms using
85106
fd282fb888de Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84329
diff changeset
1993 @code{input-decode-map} as follows:
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1994
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1995 @lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1996 (cond ((string= (getenv "TERM") "xterm")
85106
fd282fb888de Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84329
diff changeset
1997 (define-key input-decode-map "\e[192z" [f11]) ; L1
fd282fb888de Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84329
diff changeset
1998 (define-key input-decode-map "\e[195z" [f14]) ; L4, Undo
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
1999 @end lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2000
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2001 The above illustrates how to do this for Xterm. On VT100, you would have to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2002 replace "xterm" with "vt100" and also change the key sequences (the same
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2003 key may emit different sequences on different types of terminals).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2004
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2005 The above keys are global, so they are overwritten by the local maps
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2006 defined by the major modes and by Viper itself. Therefore, if you wish to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2007 change a binding set by a major mode or by Viper, read this.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2008
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2009 Viper users who wish to specify their own key bindings should be concerned
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2010 only with the following three keymaps:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2011 @code{viper-vi-global-user-map} for Vi state commands,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2012 @code{viper-insert-global-user-map} for Insert state commands,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2013 and @code{viper-emacs-global-user-map} for Emacs state commands (note:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2014 customized bindings for Emacs state made to @code{viper-emacs-global-user-map}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2015 are @emph{not} inherited by Insert state).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2016
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2017 For more information on Viper keymaps, see the header of the file
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2018 @file{viper.el}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2019 If you wish to change a Viper binding, you can use the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2020 @code{define-key} command, to modify @code{viper-vi-global-user-map},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2021 @code{viper-insert-global-user-map}, and @code{viper-emacs-global-user-map}, as
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2022 explained below. Each of these key maps affects the corresponding Viper state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2023 The keymap @code{viper-insert-global-user-map} also affects Viper's Replace
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2024 state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2025
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2026 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2027 If you want to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2028 bind a key, say @kbd{C-v}, to the function that scrolls
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2029 page down and to make @kbd{0} display information on the current buffer,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2030 putting this in @file{.viper} will do the trick in Vi state:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2031 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2032 (define-key viper-vi-global-user-map "\C-v" 'scroll-down)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2033 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2034 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2035 To set a key globally,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2036 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2037 (define-key viper-emacs-global-user-map "\C-c m" 'smail)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2038 (define-key viper-vi-global-user-map "0" 'viper-info-on-file)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2039 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2040 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2041 Note, however, that this binding may be overwritten by other keymaps, since
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2042 the global keymap has the lowest priority.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2043 To make sure that nothing will override a binding in Emacs state, you
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2044 can write this:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2045 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2046 (define-key viper-emacs-global-user-map "\C-c m" 'smail)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2047 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2048 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2049 To customize the binding for @kbd{C-h} in Insert state:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2050 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2051 (define-key viper-insert-global-user-map "\C-h" 'my-del-backwards-function)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2052 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2053 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2054
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2055 Each Emacs command key calls some Lisp function. If you have enabled the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2056 Help, (@pxref{Rudimentary Changes}) @kbd{C-h k} will show you the function
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2057 for each specific key; @kbd{C-h b} will show all bindings, and @kbd{C-h m}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2058 will provide information on the major mode in effect. If Help is not
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2059 enabled, you can still get help in Vi state by prefixing the above commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2060 with @kbd{\}, e.g., @kbd{\ C-h k} (or you can use the Help menu in the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2061 menu bar, if Emacs runs under X).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2062
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2063 Viper users can also change bindings on a per major mode basis. As with
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2064 global bindings, this can be done separately for each of the three main Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2065 states. To this end, Viper provides the function
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2066 @code{viper-modify-major-mode}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2067 @findex @code{viper-modify-major-mode}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2068
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2069 To modify keys in Emacs state for @code{my-favorite-major-mode}, the user
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2070 needs to create a sparse keymap, say, @code{my-fancy-map}, bind whatever
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2071 keys necessary in that keymap, and put
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2072
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2073 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2074 (viper-modify-major-mode 'dired-mode 'emacs-state my-fancy-map)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2075 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2076
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2077 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2078 in @file{~/.viper}. To do the same in Vi and Insert states, you should use
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2079 @code{vi-state} and @code{insert-state}. Changes in Insert state are also
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2080 in effect in Replace state. For instance, suppose that the user wants to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2081 use @kbd{dd} in Vi state under Dired mode to delete files, @kbd{u} to unmark
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2082 files, etc. The following code in @file{~/.viper} will then do the job:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2083
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2084 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2085 (setq my-dired-modifier-map (make-sparse-keymap))
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2086 (define-key my-dired-modifier-map "dd" 'dired-flag-file-deletion)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2087 (define-key my-dired-modifier-map "u" 'dired-unmark)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2088 (viper-modify-major-mode 'dired-mode 'vi-state my-dired-modifier-map)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2089 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2090
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2091 A Vi purist may want to modify Emacs state under Dired mode so that
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2092 @kbd{k}, @kbd{l}, etc., will move around in directory buffers, as in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2093 Vi. Although this is not recommended, as these keys are bound to useful
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2094 Dired functions, the trick can be accomplished via the following code:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2095
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2096 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2097 (setq my-dired-vi-purist-map (make-sparse-keymap))
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2098 (define-key my-dired-vi-purist-map "k" 'viper-previous-line)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2099 (define-key my-dired-vi-purist-map "l" 'viper-forward-char)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2100 (viper-modify-major-mode 'dired-mode 'emacs-state my-dired-vi-purist-map)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2101 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2102
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2103 Yet another way to customize key bindings in a major mode is to edit the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2104 list @code{viper-major-mode-modifier-list} using the customization widget.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2105 @vindex @code{viper-major-mode-modifier-list}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2106 (This variable is in the Viper-misc customization group.)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2107 The elements of this list are triples of the form: (major-mode viper-state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2108 keymap), where the keymap contains bindings that are supposed to be active
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2109 in the given major mode and the given viper-state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2110
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2111 Effects similar to key binding changes can be achieved by defining Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2112 keyboard macros using the Ex commands @kbd{:map} and @kbd{:map!}. The
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2113 difference is that multi-key Vi macros do not override the keys they are
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2114 bound to, unless these keys are typed in quick succession. So, with macros,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2115 one can use the normal keys alongside with the macros. If per-mode
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2116 modifications are needed, the user can try both ways and see which one is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2117 more convenient.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2118 @findex @kbd{:map}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2119 @xref{Vi Macros}, for details.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2120
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2121 Note: in major modes that come up in @emph{Emacs state} by default, the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2122 aforesaid modifications may not take place immediately (but only after the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2123 buffer switches to some other Viper state and then back to Emacs state). To
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2124 avoid this, one should add @code{viper-change-state-to-emacs} to an
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2125 appropriate hook of that major mode. (Check the function
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2126 @code{viper-set-hooks} in @file{viper.el} for examples.) However, if you
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2127 did not set @code{viper-always} to @code{nil}, chances are that you won't
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2128 need to perform the above procedure, because Viper will take care of most
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2129 useful defaults.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2130
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2131
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2132 Finally, Viper has a facility that lets the user define per-buffer
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2133 bindings, i.e., bindings that are in effect in some specific buffers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2134 only. Unlike per-mode bindings described above, per-buffer bindings can be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2135 defined based on considerations other than the major mode. This is done
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2136 via the function @code{viper-add-local-keys}, which lets one specify bindings
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2137 that should be in effect in the current buffer only and for a specific Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2138 state. For instance,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2139 @lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2140 (viper-add-local-keys 'vi-state '(("ZZ" .@: TeX-command-master)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2141 ("ZQ" .@: viper-save-kill-buffer)))
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2142 @end lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2143 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2144 redefines @kbd{ZZ} to invoke @code{TeX-command-master} in @code{vi-state}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2145 and @kbd{ZQ} to save-then-kill the current buffer. These bindings take
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2146 effect only in the buffer where this command is executed. The typical use
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2147 of this function is to execute the above expression from within a function
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2148 that is included in a hook to some major mode. For instance, the above
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2149 expression
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2150 could be called from a function, @code{my-tex-init}, which may be added to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2151 @code{tex-mode-hook} as follows:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2152 @lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2153 (add-hook 'tex-mode-hook 'my-tex-init)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2154 @end lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2155 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2156 When TeX mode starts, the hook is executed and the above Lisp expression is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2157 evaluated. Then, the bindings for @kbd{ZZ} and @kbd{ZQ} are changed in Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2158 command mode for all buffers in TeX mode.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2159
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2160 Another useful application is to bind @kbd{ZZ} to @code{send-mail}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2161 in the Mail mode buffers (the specifics of this depend on which mail
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2162 package you are using, @code{rmail}, @code{mh-e}, @code{vm}, etc.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2163 For instance, here is how to do this for @code{mh-e}, the Emacs interface
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2164 to MH:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2165 @lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2166 (defun mh-add-vi-keys ()
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2167 "Set up ZZ for MH-e and XMH."
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2168 (viper-add-local-keys 'vi-state '(("ZZ" .@: mh-send-letter))))
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2169 (add-hook 'mh-letter-mode-hook 'mh-add-vi-keys)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2170 @end lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2171
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2172 You can also use @code{viper-add-local-keys} to set per buffer
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2173 bindings in Insert state and Emacs state by passing as a parameter the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2174 symbols @code{insert-state} and @code{emacs-state}, respectively.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2175 As with global bindings, customized local bindings done to Emacs state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2176 are not inherited by Insert state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2177
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2178 On rare occasions, local keys may be added by mistake. Usually this is done
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2179 indirectly, by invoking a major mode that adds local keys (e.g.,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2180 @code{shell-mode} redefines @key{RET}). In such a case, exiting the wrong
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2181 major mode won't rid you from unwanted local keys, since these keys are
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2182 local to Viper state and the current buffer, not to the major mode.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2183 In such situations, the remedy is to type @kbd{M-x viper-zap-local-keys}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2184
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2185 So much about Viper-specific bindings.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2186 @xref{Customization,,Customization,emacs,The GNU Emacs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2187 Manual}, and the Emacs quick reference card for the general info on key
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2188 bindings in Emacs.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2189
85106
fd282fb888de Add new `input-decode-map' keymap and use it for temrinal
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84329
diff changeset
2190 @vindex @code{input-decode-map}
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2191 @vindex @code{function-key-map}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2192 @vindex @code{viper-vi-global-user-map}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2193 @vindex @code{viper-insert-global-user-map}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2194 @vindex @code{viper-emacs-global-user-map}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2195 @findex @code{viper-add-local-keys}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2196 @findex @code{viper-zap-local-keys}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2197
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2198 @node Packages that Change Keymaps,Viper Specials,Key Bindings,Customization
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2199 @subsection Packages that Change Keymaps
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2200 @cindex C-c and Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2201 @cindex Viper and C-c
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2202
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2203 Viper is designed to coexist with all major and minor modes of Emacs. This
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2204 means that bindings set by those modes are generally available with Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2205 (unless you explicitly prohibit them by setting
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2206 @code{viper-want-emacs-keys-in-vi} and @code{viper-want-emacs-keys-in-insert} to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2207 @code{nil}).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2208 If @code{viper-always} is set to @code{t} (which is the default), Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2209 will try to bring each buffer
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2210 in the Viper state that is most appropriate for that buffer.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2211 Usually, this would be the Vi state, but sometimes it could be the Insert
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2212 state or the Emacs state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2213
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2214 Some major mode bindings will necessarily be overwritten by Viper. Indeed, in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2215 Vi state, most of the 1-character keys are used for Vi-style editing. This
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2216 usually causes no problems because most packages designed for editing files
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2217 typically do not bind such keys. Instead, they use key sequences that start
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2218 with @kbd{C-x} and @kbd{C-c}. This is why it was so important for us to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2219 free up @kbd{C-x} and @kbd{C-c}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2220 It is common for language-specific major modes to bind @key{TAB} and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2221 @kbd{C-j} (the line feed) keys to various formatting functions. This is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2222 extremely useful, but may require some getting used to for a Vi user. If you
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2223 decide that this feature is not for you, you can re-bind these keys as
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2224 explained earlier (@pxref{Customization}).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2225
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2226 Binding for @key{TAB} is one of the most unusual aspects of Viper for many
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2227 novice users. In Emacs, @key{TAB} is used to format text and programs, and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2228 is extremely useful. For instance, hitting @key{TAB} causes the current
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2229 line to be re-indented in accordance with the context. In programming,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2230 this is very important, since improper automatic indentation would
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2231 immediately alert the programmer to a possible error. For instance, if a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2232 @kbd{)} or a @kbd{"} is missing somewhere above the current
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2233 line, @key{TAB} is likely to mis-indent the line.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2234
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2235 For this reason, Viper doesn't change the standard Emacs binding of
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2236 @key{TAB}, thereby sacrificing Vi compatibility
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2237 (except for users at level 1). Instead, in Viper, the key
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2238 @kbd{S-tab} (shift+ tab) is chosen to emulate Vi's @key{TAB}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2239
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2240 We should note that on some non-windowing terminals, Shift doesn't modify
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2241 the @key{TAB} key, so @kbd{S-tab} behaves as if it were @key{TAB}. In such
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2242 a case, you will have to bind @code{viper-insert-tab} to some other
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2243 convenient key.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2244
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2245 Some packages, notably Dired, Gnus, Info, etc., attach special meaning to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2246 common keys like @key{SPC}, @kbd{x}, @kbd{d}, @kbd{v}, and others. This
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2247 means that Vi command state is inappropriate for working with these
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2248 packages. Fortunately, these modes operate on read-only buffers and are
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2249 designed not for editing files, but for special-purpose browsing, reading
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2250 news, mail, etc., and Vi commands are meaningless in these situations. For
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2251 this reason, Viper doesn't force Vi state on such major modes---it
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2252 brings them in Emacs state. You can switch to Vi state by typing @kbd{C-z}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2253 if, for instance, you want to do Vi-style search in a buffer (although,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2254 usually, incremental search, which is bound to @kbd{C-s}, is sufficient in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2255 these situations). But you should then switch back to Emacs state if you
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2256 plan to continue using these major modes productively. You can also switch
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2257 to Vi temporarily, to execute just one command. This is done by typing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2258 @kbd{C-c \}. (In some of these modes, @kbd{/} and @kbd{:} are bound
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2259 Vi-style, unless these keys perform essential duties.)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2260
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2261 If you would like certain major modes to come up in Emacs state rather than
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2262 Vi state (but Viper thinks otherwise), you should put these major modes
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2263 on the @code{viper-emacs-state-mode-list} list and delete them from
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2264 @code{viper-vi-state-mode-list}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2265 Likewise, you can force Viper's Insert state on a major mode by putting it
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2266 in @code{viper-insert-state-mode-list}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2267 @vindex @code{viper-emacs-state-mode-list}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2268 @vindex @code{viper-insert-state-mode-list}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2269 @vindex @code{viper-vi-state-mode-list}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2270
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2271 It is also possible to impose Vi on some major modes, even though they may
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2272 bind common keys to specialized commands. This might make sense for modes
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2273 that bind only a small number of common keys. For instance, Viper subverts
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2274 the Shell mode by changing the bindings for @kbd{C-m} and @kbd{C-d} using
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2275 @code{viper-add-local-keys} described in the section on customization
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2276 (@pxref{Customization}).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2277
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2278 In some cases, some @emph{minor} modes might override certain essential
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2279 bindings in Vi command state. This is not a big problem because this
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2280 can happen only in the beginning, when the minor mode kicks in. Typing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2281 @code{M-x viper-mode} will correct the situation. Viper knows about
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2282 several such minor modes and takes care of them, so the above trick
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2283 is usually not necessary. If you find that some minor mode, e.g.,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2284 @code{nasty-mode} interferes with Viper, putting the following in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2285 @file{.viper} should fix the problem:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2286 @lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2287 (viper-harness-minor-mode "nasty-mode")
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2288 @end lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2289 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2290 The argument to @code{viper-harness-minor-mode} is the name of the file for the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2291 offending minor mode with the suffixes @file{.el} and @file{.elc} removed.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2292
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2293 It may not be always obvious which minor mode is at fault. The only
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2294 guidance here is to look into the file that defines the minor mode you are
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2295 suspecting, say @file{nasty-mode.el}, and see if it has a variable called
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2296 @code{nasty-mode-map}. Then check if there is a statement of the form
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2297 @lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2298 (define-key nasty-mode-map key function)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2299 @end lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2300 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2301 that binds the misbehaving
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2302 keys. If so, use the above line to harness @code{nasty-mode}. If your
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2303 suspicion is wrong, no harm is done if you harness a minor mode that
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2304 doesn't need to be harnessed.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2305
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2306 It is recommended to harness even those minor modes that don't override
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2307 Viper keys, but still have their own keymaps. A general way to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2308 make a minor mode, @code{my-mode},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2309 compatible with Viper is to have the file @file{my-mode.el} include the following code:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2310
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2311 @lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2312 (when (fboundp 'viper-harness-minor-mode)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2313 (let ((lib (file-name-sans-extension
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2314 (file-name-nondirectory load-file-name))))
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2315 (viper-harness-minor-mode lib)))
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2316 @end lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2317
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2318 @vindex @code{viper-want-emacs-keys-in-vi}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2319 @vindex @code{viper-want-emacs-keys-in-insert}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2320 @vindex @code{viper-always}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2321 @findex @code{viper-set-hooks}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2322 @findex @code{viper-mode}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2323 @findex @code{viper-harness-minor-mode}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2324 @findex @code{remove-hook}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2325 @findex @code{add-hook}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2326
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2327 @node Viper Specials,Vi Macros,Packages that Change Keymaps,Customization
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2328 @section Viper Specials
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2329
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2330 Viper extends Vi with a number of useful features. This includes various
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2331 search functions, histories of search strings, Ex commands, insertions, and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2332 Vi's destructive commands. In addition, Viper supports file name completion
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2333 and history, completion of Ex commands and variables, and many other
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2334 features. Some of these features are explained in detail elsewhere in this
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2335 document. Other features are explained here.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2336
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2337 @table @code
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2338 @item (viper-buffer-search-enable)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2339 @item viper-buffer-search-char nil
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2340 Enable buffer search. Explicit call to @code{viper-buffer-search-enable}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2341 sets @code{viper-buffer-search-char} to @kbd{g}. Alternatively, the user can
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2342 set @code{viper-buffer-search-char} in @file{.viper} to a key sequence
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2343 to be used for buffer search. There is no need to call
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2344 @code{viper-buffer-search-enable} in that case.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2345 @findex @code{viper-buffer-search-enable}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2346 @vindex @code{viper-buffer-search-char}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2347 @item viper-toggle-search-style
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2348 This function, bound to @kbd{C-c /}, lets one toggle case-sensitive and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2349 case-insensitive search, and also switch between plain vanilla search and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2350 search via regular expressions. Without the prefix argument, the user is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2351 asked which mode to toggle. With prefix argument 1, this toggles
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2352 case-sensitivity. With prefix argument 2, regular expression/vanilla search
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2353 will be toggled.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2354
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2355 However, we found that the most convenient way to toggle
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2356 these options is to bind a Vi macro to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2357 bind @kbd{//} to toggles case sensitivity and to @kbd{///} to toggles
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2358 vanilla search. Thus, quickly hitting @kbd{/} twice will switch Viper from
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2359 case sensitive search to case-insensitive. Repeating this once again will
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2360 restore the original state. Likewise, quickly hitting @kbd{/} three times
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2361 will switch you from vanilla-style search to search via regular expressions.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2362 If you hit something other than @kbd{/} after the first @kbd{/} or if the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2363 second @kbd{/} doesn't follow quickly enough, then Viper will issue the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2364 usual prompt @kbd{/} and will wait for input, as usual in Vi.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2365 If you don't like this behavior, you can ``unrecord'' these macros in your
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2366 @file{~/.viper} file. For instance, if you don't like the above feature, put
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2367 this in @file{~/.viper}:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2368 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2369 (viper-set-searchstyle-toggling-macros 'undefine)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2370 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2371 @findex @code{viper-set-searchstyle-toggling-macros}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2372
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2373 If you don't like this feature as a default, but would still like to have
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2374 it in some major modes, you can do so by first unsetting it globally, as
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2375 shown above, and then setting it in the desired major modes as follows:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2376 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2377 (viper-set-searchstyle-toggling-macros nil 'c-mode)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2378 (viper-set-searchstyle-toggling-macros nil 'lisp-mode)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2379 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2380
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2381 @item Vi-isms in Emacs state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2382 Some people find it useful to use the Vi-style search key, `/', to invoke
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2383 search in modes which Viper leaves in emacs-state. These modes are:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2384 @code{dired-mode}, @code{mh-folder-mode},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2385 @code{Info-mode}, and @code{Buffer-menu-mode}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2386 (more may be added in the future). So, in the above modes, Viper binds `/'
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2387 so that it will behave Vi-style. Furthermore, in those major modes, Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2388 binds `:' to invoke ex-style commands, like in vi-state. And, as described
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2389 above, `//' and `///' get bound to Vi-style macros that toggle
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2390 case-insensitivity and regexp-search.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2391
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2392 If you don't like these features---which I don't really understand---you
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2393 can unbind `/' and `:' in @code{viper-dired-modifier-map} (for Dired) or in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2394 @code{viper-slash-and-colon-map}, for other modes.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2395 @vindex @code{viper-slash-and-colon-map}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2396 @vindex @code{viper-dired-modifier-map}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2397
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2398 To unbind the macros `//' and `///' for a major mode where you feel they
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2399 are undesirable, execute @code{viper-set-emacs-state-searchstyle-macros} with a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2400 non-@code{nil} argument. This can be done either interactively, by supplying a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2401 prefix argument, or by placing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2402 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2403 (viper-set-emacs-state-searchstyle-macros 'undefine)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2404 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2405 @findex @code{viper-set-emacs-state-searchstyle-macros}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2406 in the hook to the major mode (e.g., @code{dired-mode-hook}).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2407 @xref{Vi Macros}, for more information on Vi macros.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2408
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2409 @item viper-heading-start
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2410 @item viper-heading-end
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2411 @cindex headings
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2412 @cindex sections
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2413 @cindex paragraphs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2414 @cindex sentences
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2415 Regular Expressions for @kbd{[[} and @kbd{]]}. Note that Emacs defines
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2416 Regexps for paragraphs and sentences. @xref{Paragraphs,,Paragraphs and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2417 Sentences,emacs,The GNU Emacs Manual}, for details.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2418 @item M-x viper-set-expert-level
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2419 @findex @code{viper-set-expert-level}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2420 Change your user level interactively.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2421 @item viper-smart-suffix-list '("" "tex" "c" "cc" "el" "p")
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2422 @vindex @code{viper-smart-suffix-list}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2423 Viper supports Emacs-style file completion when it prompts the user for a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2424 file name. However, in many cases, the same directory may contain files
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2425 with identical prefix but different suffixes, e.g., prog.c, prog.o,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2426 paper.tex, paper.dvi. In such cases, completion will stop at the `.'.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2427 If the above variable is a list of strings representing suffixes, Viper will
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2428 try these suffixes
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2429 in the order listed and will check if the corresponding file exists.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2430
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2431 For instance, if completion stopped at `paper.'@: and the user typed
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2432 @key{RET},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2433 then Viper will check if the files `paper.', `paper.tex', `paper.c', etc., exist.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2434 It will take the first such file. If no file exists, Viper will give a chance
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2435 to complete the file name by typing the appropriate suffix. If `paper.'@: was
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2436 the intended file name, hitting return will accept it.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2437
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2438 To turn this feature off, set the above variable to @code{nil}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2439
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2440 @item viper-insertion-ring-size 14
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2441 @vindex @code{viper-insertion-ring-size}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2442 @cindex Insertion ring
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2443 Viper remembers what was previously inserted in Insert and Replace states.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2444 Several such recent insertions are kept in a special ring of strings of size
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2445 @code{viper-insertion-ring-size}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2446 If you enter Insert or Replace state you can reinsert strings from this
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2447 ring by typing @kbd{C-c M-p} or @kbd{C-c M-n}. The former will search the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2448 ring in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2449 the direction of older insertions, and the latter will search in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2450 the direction of newer insertions. Hitting @kbd{C-c M-p} or @kbd{C-c M-n}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2451 in succession
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2452 will undo the previous insertion from the ring and insert the next item on
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2453 the ring. If a larger ring size is needed, change the value of the above
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2454 variable in the @file{~/.viper} file.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2455
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2456 Since typing these sequences of keys may be tedious, it is suggested that the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2457 user should bind a function key, such as @kbd{f31}, as follows:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2458 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2459 (define-key viper-insert-global-user-map [f31]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2460 'viper-insert-prev-from-insertion-ring)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2461 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2462 This binds @kbd{f31} (which is usually @kbd{R11} on a Sun workstation)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2463 to the function that inserts the previous string in the insertion history.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2464 To rotate the history in the opposite
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2465 direction, you can either bind an unused key to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2466 @code{viper-insert-next-from-insertion-ring} or hit any digit (1 to 9) then
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2467 @kbd{f31}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2468
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2469 One should not bind the above functions to @kbd{M-p} or @kbd{M-n}, since
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
2470 this will interfere with the minibuffer histories and, possibly, other
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2471 major modes.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2472
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2473 @item viper-command-ring-size 14
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2474 @vindex @code{viper-command-ring-size}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2475 @cindex Destructive command ring
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2476 @cindex Destructive command history
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2477 Viper keeps track of the recent history of destructive
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2478 commands, such as @kbd{dw}, @kbd{i}, etc.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2479 In Vi state,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2480 the most recent command can be re-executed by hitting `@kbd{.}', as in Vi.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2481 However, repeated typing @kbd{C-c M-p} will cause Viper to show the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2482 previous destructive commands in the minibuffer. Subsequent hitting `@kbd{.}'
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2483 will execute the command that was displayed last.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2484 The key @kbd{C-c M-n} will cycle through the command history in the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2485 opposite direction.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2486 Since typing @kbd{C-c M-p} may be tedious, it is more convenient to bind an
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2487 appropriate function to an unused function key on the keyboard and use that
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2488 key. For instance, the following
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2489 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2490 (define-key viper-vi-global-user-map [f31]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2491 'viper-prev-destructive-command)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2492 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2493 binds the key @kbd{f31} (which is usually @kbd{R11} on a Sun workstation)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2494 to the function that searches the command history in the direction of older
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2495 commands. To search in the opposite
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2496 direction, you can either bind an unused key to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2497 @code{viper-next-destructive-command} or hit any digit (1 to 9) then @kbd{f31}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2498
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2499 One should not bind the above functions to @kbd{M-p} or @kbd{M-n}, since
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
2500 this will interfere with the minibuffer histories and, possibly, other
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2501 major modes.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2502
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2503 @item viper-minibuffer-vi-face 'viper-minibuffer-vi-face
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2504 @item viper-minibuffer-insert-face 'viper-minibuffer-insert-face
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2505 @item viper-minibuffer-emacs-face 'viper-minibuffer-emacs-face
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2506 These faces control the appearance of the minibuffer text in the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2507 corresponding Viper states. You can change the appearance of these faces
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2508 through Emacs' customization widget, which is accessible through the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2509 menubar.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2510
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2511 Viper is located in this widget under the @emph{Emulations} customization
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2512 subgroup of the @emph{Editing} group. All Viper faces are grouped together
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2513 in Viper's @emph{Highlighting} customization subgroup.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2514
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2515 Note that only the text you type in is affected by the above faces.
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
2516 Prompts and minibuffer messages are not affected.
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2517
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2518 Purists who do not like adornments in the minibuffer can always zap them by
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2519 putting
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2520 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2521 (copy-face 'default 'viper-minibuffer-vi-face)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2522 (copy-face 'default 'viper-minibuffer-insert-face)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2523 (copy-face 'default 'viper-minibuffer-emacs-face)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2524 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2525 in the @file{~/.viper} file or through the customization widget, as
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2526 described above. However, in that case, the user will not have any
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2527 indication of the current Viper state in the minibuffer. (This is important
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2528 if the user accidentally switches to another Viper state by typing @key{ESC} or
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2529 @kbd{C-z}).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2530 @item M-x viper-go-away
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2531 @findex @code{viper-go-away}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2532 Make Viper disappear from the face of your running Emacs instance. If your
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2533 fingers start aching again, @kbd{M-x viper-mode} might save your day.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2534 @item M-x toggle-viper-mode
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2535 @findex @code{toggle-viper-mode}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2536 Toggle Viperization of Emacs on and off.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2537 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2538
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2539 @cindex Multifile documents and programs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2540
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2541 Viper provides some support for multi-file documents and programs.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2542 If a document consists of several files we can designate one of them as a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2543 master and put the following at the end of that file:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2544 @lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2545 ;; Local Variables:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2546 ;; eval: (viper-setup-master-buffer "file1" "file2" "file3" "file4")
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2547 ;; End:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2548 @end lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2549 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2550 where @code{file1} to @code{file4} are names of files related to the master
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2551 file. Next time, when the master file is visited, the command
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2552 @code{viper-setup-master-buffer} will be evaluated and the above files will
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2553 be associated with the master file. Then, the new Ex command
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2554 @kbd{:RelatedFile} (abbr.@: @kbd{:R}) will display files 1 to 4 one after
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2555 another, so you can edit them. If a file is not in any Emacs buffer, it
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2556 will be visited. The command @kbd{PreviousRelatedFile} (abbr., @kbd{:P})
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2557 goes through the file list in the opposite direction.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2558 @findex @kbd{:RelatedFile}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2559 @findex @kbd{:PreviousRelatedFile}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2560
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2561 These commands are akin to @kbd{:n} and @kbd{:N}, but they allow the user to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2562 focus on relevant files only.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2563
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2564 Note that only the master file needs to have the aforementioned block of
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2565 commands. Also, ";;" above can be replaced by some other
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2566 markers. Semicolon is good for Lisp programs, since it is considered a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2567 comment designator there. For LaTeX, this could be "%%%", and for C the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2568 above block should be commented out.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2569
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2570 Even though these commands are sometimes useful, they are no substitute for
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2571 the powerful @emph{tag table} facility of Emacs. Viper's @kbd{:tag} command
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2572 in a primitive interface to Emacs tags. @xref{Tags,Tags,Tags,emacs,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2573 The GNU Emacs Manual}, for more information on tags.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2574
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2575 The following two commands are normally bound to a mouse click and are part
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2576 of Viper. They work only if Emacs runs as an application under X
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2577 Windows (or under some other window system for which a port of GNU Emacs 20
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2578 is available). Clicking the mouse when Emacs is invoked in an Xterm window
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2579 (using @code{emacs -nw}) will do no good.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2580
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2581 @table @code
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2582 @cindex mouse
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2583 @cindex mouse-search
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2584 @item viper-mouse-search-key (meta shift 1)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2585 @vindex @code{viper-mouse-insert-key}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2586 This variable controls the @emph{mouse-search} feature of Viper. The
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2587 default value
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2588 states that holding Meta and Shift keys while clicking mouse button 1
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2589 should initiate search for a region under the mouse pointer (defined
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2590 below). This command can take a prefix argument, which indicates the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2591 occurrence of the pattern to search for.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2592
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2593 Note: while loading initially, Viper binds this mouse action only if it is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2594 not already bound to something else. If you want to use the mouse-search
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2595 feature, and the @kbd{Meta-Shift-Mouse-1} mouse action is already bound to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2596 something else, you can rebind the mouse-search feature by setting
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2597 @code{viper-mouse-search-key} to something else in your @code{~/.viper}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2598 file:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2599 @lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2600 (setq viper-mouse-search-key '(meta 1))
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2601 @end lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2602 This would bind mouse search to the action invoked by pressing the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2603 Meta key and clicking mouse button 1. The allowed values of
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2604 @code{viper-mouse-search-key} are lists that contain a mouse-button number
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2605 (1,2, or 3) and any combination of the words `control', `meta', and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2606 `shift'.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2607
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2608 If the requested mouse action (e.g., (meta 1)) is already taken for other
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2609 purposes then you have to confirm your intention by placing the following
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2610 command in @code{~/.viper} after setting @code{viper-mouse-search-key}:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2611 @lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2612 (viper-bind-mouse-search-key 'force)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2613 @end lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2614
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2615 You can also change this setting interactively, through the customization
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2616 widget of Emacs (type @kbd{:customize}).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2617
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2618 The region that is chosen as a pattern to search for is determined as
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2619 follows. If search is invoked via a single click, Viper chooses the region
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2620 that lies between the beginning of the ``word'' under the pointer (``word''
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2621 is understood in Vi sense) and the end of that word. The only difference
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2622 with Vi's words is that in Lisp major modes `-' is considered an
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2623 alphanumeric symbol. This is done for the convenience of working with Lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2624 symbols, which often have an `-' in them. Also, if you click on a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2625 non-alphanumeric character that is not a word separator (in Vi sense) then
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2626 this character will also be considered alphanumeric, provided that it is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2627 adjacent (from either side) to an alphanumeric character. This useful
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2628 feature gives added control over the patterns selected by the mouse click.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2629
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2630 On a double-click, the region is determined by the beginning of the current
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2631 Vi's ``Word'' (i.e., the largest non-separator chunk of text) and the End
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2632 of that ``Word'' (as determined by the @kbd{E} command).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2633
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2634 On a triple-click, the region consists of the entire line where the click
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2635 occurred with all leading and trailing spaces and tabs removed.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2636
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2637 @cindex mouse-insert
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2638 @item viper-mouse-insert-key (meta shift 2)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2639 @vindex @code{viper-mouse-insert-key}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2640 This variable controls the @emph{mouse-insert} feature of Viper.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2641 The above default value states that
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2642 holding Meta and Shift keys while clicking mouse button 2
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2643 should insert the region surrounding the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2644 mouse pointer. The rules defining this region are the same as for
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2645 mouse-search. This command takes an optional prefix argument, which
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2646 indicates how many such regions to snarf from the buffer and insert. (In
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2647 case of a triple-click, the prefix argument is ignored.)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2648
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2649 Note: while loading initially, Viper binds this mouse action only if it not
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2650 already bound to something else. If you want to use this feature and the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2651 default mouse action is already bound, you can rebind mouse-insert by
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2652 placing this command in @code{~/.viper}:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2653 @lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2654 (setq viper-mouse-insert-key '(meta 2))
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2655 @end lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2656 If you want to bind mouse-insert to an action even if this action is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2657 already taken for other purposes in Emacs, then you should add this command
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2658 to @code{~/.viper}, after setting @code{viper-mouse-insert-key}:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2659 @lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2660 (viper-bind-mouse-insert-key 'force)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2661 @end lisp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2662
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2663 This value can also be changed via the Emacs customization widget at the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2664 menubar.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2665
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2666 @item viper-multiclick-timeout
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2667 This variable controls the rate at which double-clicking must occur for the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2668 purpose of mouse search and mouse insert. By default, this is set to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2669 @code{double-click-time} in Emacs and to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2670 @code{mouse-track-multi-click-time} milliseconds in XEmacs.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2671 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2672 @kindex @kbd{S-Mouse-1}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2673 @kindex @kbd{S-Mouse-2}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2674 @kindex @kbd{meta shift button1up}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2675 @kindex @kbd{meta shift button2up}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2676 @vindex @code{viper-multiclick-timeout}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2677 @findex @code{viper-mouse-click-insert-word}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2678 @findex @code{viper-mouse-click-search-word}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2679
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2680 Note: The above functions search and insert in the selected window of
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2681 the latest active frame. This means that you can click in another window or
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2682 another frame and have search or insertion done in the frame and window you
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2683 just left. This lets one use these functions in a multi-frame
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2684 configuration. However, this may require some getting used to. For
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2685 instance, if you are typing in a frame, A, and then move the mouse to frame
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2686 B and click to invoke mouse search, search (or insertion) will be performed
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2687 in frame A. To perform search/insertion in frame B, you will first have to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2688 shift focus there, which doesn't happen until you type a character or
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2689 perform some other action in frame B---mouse search doesn't shift focus.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2690
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2691 If you decide that you don't like the above feature and always want
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2692 search/insertion be performed in the frame where the click occurs, don't
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2693 bind (and unbind, if necessary) @code{viper-mouse-catch-frame-switch} from
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2694 the mouse event it is bound to.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2695
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2696 Mouse search is integrated with Vi-style search, so you can
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2697 repeat it with @kbd{n} and @kbd{N}. It should be also noted that, while
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2698 case-sensitivity of search in Viper is controlled by the variable
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2699 @code{viper-case-fold-search}, the case of mouse search is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2700 controlled by the Emacs variable @code{case-fold-search}, which may be set
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2701 differently from @code{viper-case-fold-search}. Therefore, case-sensitivity
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2702 of mouse search may be different from that of the usual Vi-style search.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2703
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2704 Finally, if the way Viper determines the word to be searched for or to be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2705 inserted is not what you want, there is a variable,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2706 @code{viper-surrounding-word-function}, which can be changed to indicate
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2707 another function for snarfing words out of the buffer. The catch is that
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2708 you will then have to write such a function and make it known to your
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2709 Emacs. The function @code{viper-surrounding-word} in @file{viper.el} can be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2710 used as a guiding example.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2711
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2712 @node Vi Macros, ,Viper Specials,Customization
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2713 @section Vi Macros
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2714
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2715 @cindex Vi macros
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2716
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2717 Viper supports much enhanced Vi-style macros and also facilitates the use
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2718 of Emacs-style macros. To define a temporary macro, it is generally more
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2719 convenient to use Emacs keyboard macro facility. Emacs keyboard macros are
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2720 usually defined anonymously, and the latest macro can be executed by typing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2721 @kbd{C-x e} (or @kbd{*}, if Viper is in Vi state). If you need to use several
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2722 temporary macros, Viper lets you save them to a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2723 register (a lowercase letter); such macros can then be executed by typing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2724 @kbd{@@a} in Vi state (if a macro was previously saved in register
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2725 @kbd{a}).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2726 @xref{Macros and Registers}, for details.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2727
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2728 If, however, you need to use a macro regularly, it must be given a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2729 permanent name and saved. Emacs manual explains how to do this, but
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2730 invocation of named Emacs macros is quite different from Vi's. First,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2731 invocation of permanent Emacs macros takes time because it requires typing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2732 too many keys (to a Vi user's taste, anyway).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2733 Second, binding such macros to function keys, for
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2734 fast access, hogs valuable real estate on the keyboard.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2735
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2736 Vi-style macros are better in that respect, since Vi lets the user overload
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2737 the meaning of key sequences: keys typed in fast succession are treated
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2738 specially, if this key sequence is bound to a macro.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2739
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2740 Viper provides Vi-style keyboard macros through the usual Ex commands,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2741 @kbd{:map} and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2742 @kbd{:map!}. These macros are much more powerful in Viper than
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2743 they are in the original Vi and in other emulators. This is because Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2744 implements an enhanced vi-style
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2745 interface to the powerful Emacs keyboard macro facility.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2746
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2747 First, any Emacs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2748 command can be executed while defining a macro, not just the Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2749 commands. In particular, the user can invoke Emacs commands via @kbd{M-x
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2750 command-name} or by pressing various function keys on the keyboard. One
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2751 can even use the mouse, although this is usually not useful and is not
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2752 recommended (and macros defined with the use of the mouse cannot be saved in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2753 command history and in the startup file, for future use).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2754
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2755 Macros defined by mixing Vi and Emacs commands are represented as
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2756 vectors. So, don't be confused when you see one (usually through the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2757 history of Ex commands). For instance, if @kbd{gg} is defined by typing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2758 @kbd{l}, the up-arrow key and @kbd{M-x next-line}, its definition will look
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2759 as follows in Emacs:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2760
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2761 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2762 [l up (meta x) n e x t - l i n e return]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2763 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2764
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2765 Second, Viper macros are defined in a WYSIWYG style. This means that
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2766 commands are executed as you type them, so you can see precisely what is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2767 being defined. Third, macros can be bound to arbitrary sequences of keys,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2768 not just to printable keys. For instance, one can define a macro that will
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2769 be invoked by hitting @kbd{f3} then @kbd{f2} function keys. (The keys
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2770 @kbd{delete} and @kbd{backspace} are excluded; also, a macro invocation
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2771 sequence can't start with @key{ESC}. Some other keys, such as @kbd{f1} and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2772 @kbd{help}, can't be bound to macros under Emacs, since they
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2773 are bound in @code{key-translation-map}, which overrides any other binding
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2774 the user gives to keys. In general, keys that have a binding in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2775 @code{key-translation-map} can't be bound to a macro.)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2776
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2777 Fourth, in Viper, one can define macros that are specific to a given
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2778 buffer, a given major mode, or macros that are defined for all buffers. In
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2779 fact, the same macro name can have several different definitions: one
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2780 global, several definitions for various major modes, and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2781 definitions for various specific buffers. Buffer-specific definitions
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2782 override mode-specific definitions, which, in turn, override global
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2783 definitions.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2784
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2785 As if all that is not enough, Viper (through its interface to Emacs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2786 macros) lets the user define keyboard macros that ask for confirmation or
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2787 even prompt the user for input and then continue. To do this, one should
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2788 type @kbd{C-x q} (for confirmation) or @kbd{C-u C-x q} (for prompt).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2789 For details, @pxref{Keyboard Macro Query,,Customization,emacs,The GNU Emacs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2790 Manual} @refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2791
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2792 When the user finishes defining a macro (which is done by typing @kbd{C-x)} ---
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2793 a departure from Vi), you will be asked whether you want this
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2794 macro to be global, mode-specific, or buffer-specific. You will also be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2795 given a chance to save the macro in your @file{~/.viper} file.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2796 This is the easiest way to save a macro and make
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2797 it permanently available. If you work your startup files with bare hands,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2798 here is how Viper saves the above macro so that it will be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2799 available in Viper's Insert state (and Replace state) in buffer @code{my-buf}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2800 only:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2801
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2802 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2803 (viper-record-kbd-macro "gg" 'insert-state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2804 [l up (meta x) n e x t - l i n e return]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2805 "my-buf")
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2806 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2807
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2808 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2809 To do the same for Vi state and all buffers with the major mode
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2810 @code{cc-mode}, use:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2811
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2812 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2813 (viper-record-kbd-macro "gg" 'vi-state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2814 [l up (meta x) n e x t - l i n e return]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2815 'cc-mode)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2816 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2817
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2818 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2819 Both macro names and macro definitions are vectors of symbols that denote
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2820 keys on the keyboard. Some keys, like @kbd{\}, @kbd{ }, or digit-keys must
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2821 be escaped with a backslash. Modified keys are represented as lists. For
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2822 instance, holding Meta and Control and pressing @kbd{f4} is represented as
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2823 @kbd{(control meta f4)}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2824 If all members of a vectors are printable characters (or sequences, such as
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2825 @kbd{\e}, @kbd{\t}, for @key{ESC} and @key{TAB}), then they can also be represented as
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2826 strings:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2827
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2828 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2829 (viper-record-kbd-macro "aa" 'vi-state "aaa\e" "my-buffer")
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2830 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2831
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2832 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2833 Thus, typing @kbd{aa} fast in Vi state will switch Viper to Insert state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2834 (due to the first @kbd{a}), insert @kbd{aa}, and then it will switch back to Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2835 state. All this will take effect only in the buffer named @code{my-buffer}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2836
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2837 Note that the last argument to @code{viper-record-kbd-macro} must be either a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2838 string (a buffer name), a symbol representing a major mode, or @code{t};
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2839 the latter says that the macro is to be defined for all buffers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2840 (which is how macros are defined in original Vi).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2841
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2842 For convenience, Viper also lets you define Vi-style macros in its Emacs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2843 state. There is no Ex command, like @kbd{:map} and @kbd{:map!} for doing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2844 this, but the user can include such a macro in the @file{~/.viper} file. The
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2845 only thing is that the @code{viper-record-kbd-macro} command should specify
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2846 @code{emacs-state} instead of @code{vi-state} or @code{insert-state}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2847
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2848 The user can get rid of a macro either by using the Ex commands @kbd{:unmap}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2849 and @kbd{:unmap!} or by issuing a call to @code{viper-unrecord-kbd-macro}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2850 The latter is more powerful, since it can delete macros even in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2851 @code{emacs-state}. However, @code{viper-unrecord-kbd-macro} is usually
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2852 needed only when the user needs to get rid of the macros that are already
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2853 predefined in Viper.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2854 The syntax is:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2855 @findex @code{viper-unrecord-kbd-macro}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2856 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2857 (viper-unrecord-kbd-macro macro state)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2858 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2859 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2860 The second argument must be @code{vi-state}, @code{insert-state}, or
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2861 @code{emacs-state}. The first argument is a name of a macro. To avoid
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2862 mistakes in specifying names of existing macros, type @kbd{M-x
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2863 viper-describe-kbd-macros} and use a name from the list displayed by this
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2864 command.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2865
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2866 If an error occurs during macro definition, Emacs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2867 aborts the process, and it must be repeated. This is analogous to Vi,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2868 except that in Vi the user doesn't know there is an error until the macro is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2869 actually run. All that means that in order for a definition to be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2870 successful, the user must do some simple planning of the process in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2871 advance, to avoid errors. For instance, if you want to map @kbd{gg} to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2872 @kbd{llll} in Vi state, you must make sure that there is enough room on the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2873 current line. Since @kbd{l} moves the cursor forward, it may signal an
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2874 error on reaching the end of line, which will abort the definition.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2875
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2876 These precautions are necessary only when defining macros; they will help
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2877 avoid the need to redo the job. When macros are actually run, an error
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2878 during the execution will simply terminate the current execution
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2879 (but the macro will remain mapped).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2880
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2881 A macro name can be a string of characters or a vector of keys.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2882 The latter makes it possible to define macros bound to, say, double-hits
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2883 on a function key, such as @kbd{up} or @kbd{f13}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2884 This is very useful if you run out of function keys on your keyboard; it
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2885 makes Viper macro facility a @emph{keyboard doubler}, so to speak.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2886
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2887 Elsewhere (@xref{Key Bindings}, for details), we review
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2888 the standard Emacs mechanism for binding function keys to commands.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2889 For instance,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2890
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2891 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2892 (global-set-key [f13] 'repeat-complex-command)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2893 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2894
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2895 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2896 binds the key f13 to the Emacs function that repeats the last minibuffer
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2897 command. Under Viper, however, you may still use this key for additional
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2898 purposes, if you bind, say, a double-hitting action for that key to some
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2899 other function. Emacs doesn't allow the user to do that, but Viper does
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2900 this through its keyboard macro facility. To do this, type @kbd{:map }
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2901 first. When you are asked to enter a macro name, hit f13 twice, followed by
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2902 @key{RET} or @key{SPC}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2903
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2904 Emacs will now start the mapping process by actually executing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2905 Vi and Emacs commands, so that you could see what will happen each time the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2906 macro is executed. Suppose now we wanted to bind the key sequence
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2907 @kbd{f13 f13} to the command @code{eval-last-sexp}. To accomplish this, we
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2908 can type @kbd{M-x eval-last-sexp} followed by @kbd{C-x )}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2909 If you answer positively to Viper's offer to save this macro in @file{~/.viper}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2910 for future uses, the following will be inserted in that file:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2911
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2912 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2913 (viper-record-kbd-macro [f16 f16] 'vi-state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2914 [(meta x) e v a l - l a s t - s e x p]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2915 'lisp-interaction-mode)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2916 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2917
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2918 To illustrate the above point, Viper provides two canned macros, which, by
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2919 default, are bound to @kbd{[f12 \1]} and @kbd{[f12 \2]} (invoked by typing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2920 @kbd{f12} then @kbd{1} and @kbd{2}, respectively). These macros are useful
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2921 shortcuts to Viper's command ring history. The first macro will execute the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2922 second-last destructive command (the last one is executed by @kbd{.}, as
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2923 usual). The second macro executes the third-last command.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2924
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2925 If you need to go deeper into the command history, you will have to use
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2926 other commands, as described earlier in this section; or you can bind,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2927 say, @kbd{f12 \3} like this:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2928
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2929 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2930 (viper-record-kbd-macro [f12 \3] 'vi-state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2931 [(meta x) r e p e a t - f r o m - h i s t o r y]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2932 t)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2933 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2934
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2935
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2936 Note that even though the macro uses the function key @kbd{f12}, the key is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2937 actually free and can still be bound to some Emacs function via
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2938 @code{define-key} or @code{global-set-key}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2939
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2940
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2941 Viper allows the user to define macro names that are prefixes of other macros.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2942 For instance, one can define @kbd{[[} and @kbd{[[[[} to be macros.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2943 If you type the exact sequence of such keys and then pause, Viper will
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2944 execute the right macro. However, if you don't pause and, say, type
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2945 @kbd{[[[[text} then the conflict is resolved as follows. If only one of the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2946 key sequences, @kbd{[[} or @kbd{[[[[} has a definition applicable to the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2947 current buffer, then, in fact, there is no conflict and the right macro
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2948 will be chosen. If both have applicable definitions, then the first one
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2949 found will be executed. Usually this is the macro with a shorter name. So,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2950 in our case, @kbd{[[[[text} will cause the macro @kbd{[[} to be executed
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2951 twice and then the remaining keys, @kbd{t e x t}, will be processed.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2952
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2953 When defining macros using @kbd{:map} or @kbd{:map!}, the user enters
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2954 the actually keys to be used to invoke the macro. For instance, you
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2955 should hit the actual key @kbd{f6} if it is to be part of a macro
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2956 name; you do @emph{not} write @kbd{f 6}. When entering keys, Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2957 displays them as strings or vectors (e.g., @code{"abc"} or @code{[f6
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2958 f7 a]}). The same holds for unmapping. Hitting @key{TAB} while
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2959 typing a macro name in the @kbd{:unmap} or @kbd{:unmap!} command will
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2960 cause name completion. Completions are displayed as strings or
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2961 vectors. However, as before, you don't actually type @samp{"},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2962 @samp{[}, or @samp{]} that appear in the completions. These are
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2963 meta-symbols that indicate whether the corresponding macro name is a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2964 vector or a string.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2965
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2966 One last difference from Vi: Vi-style keyboard macros cannot be defined in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2967 terms of other Vi-style keyboard macros (but named Emacs macros are OK).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2968 More precisely, while defining or executing a macro, the special meaning
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2969 of key sequences (as Vi macros) is ignored.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2970 This is because it is all too easy to create an infinite loop in this way.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2971 Since Viper macros are much more powerful than Vi's it is impossible to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2972 detect such loops. In practice, this is not really a limitation but,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2973 rather, a feature.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2974
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
2975 We should also note that Vi macros are disabled in the minibuffer, which
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2976 helps keep some potential troubles away.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2977
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2978 The rate at which the user must type keys in order for them to be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2979 recognized as a timeout macro is controlled by the variable
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2980 @code{viper-fast-keyseq-timeout}, which defaults to 200 milliseconds.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2981
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2982 For the most part, Viper macros defined in @file{~/.viper} can be shared
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2983 between X and TTY modes.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2984 The problem with TTY may be that the function keys there generate sequences
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2985 of events instead of a single event (as under a window system).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2986 Emacs maps some of these sequences back to the logical keys
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2987 (e.g., the sequences generated by the arrow keys are mapped to @kbd{up},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2988 @kbd{left}, etc.). However, not all function keys are mapped in this way.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2989 Macros that are bound to key sequences that contain such unmapped function
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2990 keys have to be redefined for TTY's (and possibly for every type of TTY you
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2991 may be using). To do this, start Emacs on an appropriate TTY device and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2992 define the macro using @kbd{:map}, as usual.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2993
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2994 @findex @code{viper-describe-kbd-macros}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2995 Finally, Viper provides a function that conveniently displays all macros
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2996 currently defined. To see all macros along with their definitions, type
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2997 @kbd{M-x viper-describe-kbd-macros}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2998
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
2999 @node Commands,,Customization,Top
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3000 @chapter Commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3001
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3002 This section is a semi-automatically bowdlerized version of the Vi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3003 reference created by @* @samp{maart@@cs.vu.nl} and others. It can be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3004 found on the Vi archives. This reference has been adapted for Viper.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3005
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3006 @menu
109264
f1266b2f017e Untabify doc/misc/*.texi.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
3007 * Groundwork:: Textual Conventions and Viper basics
f1266b2f017e Untabify doc/misc/*.texi.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
3008 * Text Handling:: Moving, Editing, Undoing.
f1266b2f017e Untabify doc/misc/*.texi.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
3009 * Display:: Scrolling.
f1266b2f017e Untabify doc/misc/*.texi.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
3010 * File and Buffer Handling:: Editing, Writing and Quitting.
f1266b2f017e Untabify doc/misc/*.texi.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
3011 * Mapping:: Mapping Keys, Keyboard Macros
f1266b2f017e Untabify doc/misc/*.texi.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
3012 * Shell Commands:: Accessing Shell Commands, Processing Text
f1266b2f017e Untabify doc/misc/*.texi.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
3013 * Options:: Ex options, the @kbd{:set} commands
f1266b2f017e Untabify doc/misc/*.texi.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
3014 * Emacs Related Commands:: Meta Keys, Windows
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3015 * Mouse-bound Commands:: Search and insertion of text
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3016 @end menu
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3017
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3018 @node Groundwork, Text Handling, Commands, Commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3019 @comment node-name, next, previous, up
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3020 @section Groundwork
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3021
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3022 The VI command set is based on the idea of combining motion commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3023 with other commands. The motion command is used as a text region
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3024 specifier for other commands.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3025 We classify motion commands into @dfn{point commands} and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3026 @dfn{line commands}.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3027
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3028 @cindex point commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3029
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3030 The point commands are:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3031
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3032 @quotation
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3033 @kbd{h}, @kbd{l}, @kbd{0}, @kbd{$}, @kbd{w}, @kbd{W}, @kbd{b}, @kbd{B},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3034 @kbd{e}, @kbd{E}, @kbd{(}, @kbd{)}, @kbd{/}, @kbd{?}, @kbd{`}, @kbd{f},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3035 @kbd{F}, @kbd{t}, @kbd{T}, @kbd{%}, @kbd{;}, @kbd{,}, @kbd{^}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3036 @end quotation
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3037
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3038 @cindex line commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3039
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3040 The line commands are:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3041
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3042 @quotation
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3043 @kbd{j}, @kbd{k}, @kbd{+}, @kbd{-}, @kbd{H}, @kbd{M}, @kbd{L}, @kbd{@{},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3044 @kbd{@}}, @kbd{G}, @kbd{'}, @kbd{[[}, @kbd{]]}, @kbd{[]}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3045 @end quotation
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3046 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3047
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3048 Text Deletion Commands (@pxref{Deleting Text}), Change commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3049 (@pxref{Changing Text}), even Shell Commands (@pxref{Shell Commands})
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3050 use these commands to describe a region of text to operate on.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3051
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3052 @cindex r and R region specifiers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3053
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3054 Viper adds two region descriptors, @kbd{r} and @kbd{R}. These describe
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3055 the Emacs regions (@pxref{Basics}), but they are not movement commands.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3056
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3057 The command description uses angle brackets @samp{<>} to indicate
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3058 metasyntactic variables, since the normal conventions of using simple
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3059 text can be confusing with Viper where the commands themselves are
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3060 characters. Watch out where @kbd{<} shift commands and @kbd{<count>} are
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3061 mentioned together!!!
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3062
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3063 @kindex <move>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3064 @kindex <a-z>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3065 @kindex <address>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3066 @cindex <move>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3067 @cindex <a-z>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3068 @cindex <address>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3069 @cindex movements
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3070
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3071 @samp{<move>} refers to the above movement commands, and @samp{<a-z>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3072 refers to registers or textmarkers from @samp{a} to @samp{z}. Note
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3073 that the @samp{<move>} is described by full move commands, that is to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3074 say they will take counts, and otherwise behave like normal move commands.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3075 @cindex Ex addresses
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3076 @samp{<address>} refers to Ex line addresses, which include
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3077
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3078 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3079 @item .@: <No address>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3080 Current line
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3081 @item .+n .-n
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3082 Add or subtract for current line
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3083 @item number
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3084 Actual line number, use @kbd{.=} to get the line number
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3085 @item '<a-z>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3086 Textmarker
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3087 @item $
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3088 Last line
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3089 @item x,y
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3090 Where x and y are one of the above
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3091 @item %
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3092 @cindex % (Ex address)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3093 For the whole file, same as (1,$).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3094 @item /<pat>/
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3095 @itemx ?<pat>?
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3096 Next or previous line with pattern <pat>.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3097
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3098 Note that the pattern is allowed to contain newline character (inserted as
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3099 @kbd{C-qC-j}). Therefore, one can search for patterns that span several
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3100 lines.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3101 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3102
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3103 @cindex % (Current file)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3104 Note that @samp{%} is used in Ex commands @kbd{:e} and @kbd{:r <shell-cmd>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3105 to mean current file. If you want a @samp{%} in your command, it must be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3106 escaped as @samp{\%}. Note that @kbd{:w} and the regular @kbd{:r <file>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3107 command doesn't support the meta symbols @samp{%} and @samp{#}, because
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3108 file history is a better mechanism.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3109 @cindex # (Previous file)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3110 Similarly, @samp{#} expands to the previous file. The previous file is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3111 the first file in @kbd{:args} listing. This defaults to previous window
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3112 in the VI sense if you have one window only.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3113
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3114 @kindex <args>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3115 @kindex <cmd>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3116 @cindex <args>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3117 @cindex <cmd>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3118 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3119 Others like @samp{<args> -- arguments}, @samp{<cmd> -- command} etc.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3120 should be fairly obvious.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3121
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3122 @noindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3123 Common characters referred to include:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3124
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3125 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3126 @item <sp>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3127 Space
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3128 @item <ht>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3129 Tab
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3130 @item <lf>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3131 Linefeed
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3132 @item <esc>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3133 Escape
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3134 @item <cr>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3135 Return, Enter
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3136 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3137 @cindex <cr>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3138 @cindex <esc>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3139 @cindex <lf>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3140 @cindex <ht>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3141 @cindex <sp>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3142
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3143 @cindex words
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3144 @cindex WORDS
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3145 @cindex char
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3146 @cindex CHAR
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3147
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3148 We also use @samp{word} for alphanumeric/non-alphanumeric words, and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3149 @samp{WORD} for whitespace delimited words. @samp{char} refers to any
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3150 @acronym{ASCII} character, @samp{CHAR} to non-whitespace character.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3151 Brackets @samp{[]} indicate optional parameters; @samp{<count>} also
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3152 optional, usually defaulting to 1. Brackets are elided for
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3153 @samp{<count>} to eschew obfuscation.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3154
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3155 Viper's idea of Vi's words is slightly different from Vi. First, Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3156 words understand Emacs symbol tables. Therefore, all symbols declared to be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3157 alphanumeric in a symbol table can automatically be made part of the Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3158 word. This is useful when, for instance, editing text containing European,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3159 Cyrillic, Japanese, etc., texts.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3160
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3161 Second, Viper lets you depart from Vi's idea of a word by changing the a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3162 syntax preference via the customization widget (the variable
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3163 @code{viper-syntax-preference}) or by executing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3164 @code{viper-set-syntax-preference} interactively.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3165
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3166 By default, Viper syntax preference is @code{reformed-vi}, which means that
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3167 Viper considers only those symbols to be part of a word that are specified
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3168 as word-symbols by the current Emacs syntax table (which may be different
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3169 for different major modes) plus the underscore symbol @kbd{_}, minus the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3170 symbols that are not considered words in Vi (e.g., `,',;, etc.), but may be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3171 considered as word-symbols by various Emacs major modes. Reformed-Vi works
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3172 very close to Vi, and it also recognizes words in other
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3173 alphabets. Therefore, this is the most appropriate mode for editing text
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3174 and is likely to fit all your needs.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3175
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3176 You can also set Viper syntax preference to @code{strict-vi}, which would
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3177 cause Viper to view all non-English letters as non-word-symbols.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3178
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3179 You can also specify @code{emacs} as your preference, which would
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3180 make Viper use exactly the same notion of a word as Emacs does. In
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3181 particular, the underscore may not be part of a word in some major modes.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3182
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3183 Finally, if @code{viper-syntax-preference} is set to @code{extended}, Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3184 words would consist of characters that are classified as alphanumeric
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3185 @emph{or} as parts of symbols. This is convenient for editing programs.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3186
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3187 @code{viper-syntax-preference} is a local variable, so it can have different
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3188 values for different major modes. For instance, in programming modes it can
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3189 have the value @code{extended}. In text modes where words contain special
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3190 characters, such as European (non-English) letters, Cyrillic letters, etc.,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3191 the value can be @code{reformed-vi} or @code{emacs}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3192 If you consider using different syntactic preferences for different major
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3193 modes, you should execute, for example,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3194
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3195 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3196 (viper-set-syntax-preference nil "extended")
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3197 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3198
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3199 in the appropriate major mode hooks.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3200
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3201 @vindex @code{viper-syntax-preference}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3202 @findex @code{viper-set-syntax-preference}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3203 @cindex syntax table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3204
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3205
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3206
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3207 The above discussion concerns only the movement commands. In regular
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3208 expressions, words remain the same as in Emacs. That is, the expressions
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3209 @code{\w}, @code{\>}, @code{\<}, etc., use Emacs' idea of what is a word,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3210 and they don't look into the value of variable
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3211 @code{viper-syntax-preference}. This is because Viper avoids changing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3212 syntax tables in order to not thwart the various major modes that set these
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3213 tables.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3214
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3215 The usual Emacs convention is used to indicate Control Characters, i.e
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3216 C-h for Control-h. @emph{Do not confuse this with a sequence of separate
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3217 characters
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3218 C, -, h!!!} The @kbd{^} is itself, never used to indicate a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3219 Control character.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3220
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3221 Finally, we note that Viper's Ex-style commands can be made to work on the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3222 current Emacs region. This is done by typing a digit argument before
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3223 @kbd{:}. For instance, typing @kbd{1:} will prompt you with something like
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3224 @emph{:123,135}, assuming that the current region starts at line 123 and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3225 ends at line 135. There is no need to type the line numbers, since Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3226 inserts them automatically in front of the Ex command.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3227 @cindex Ex commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3228
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3229 @node Text Handling, Display, Groundwork, Commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3230 @section Text Handling
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3231
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3232 @menu
109264
f1266b2f017e Untabify doc/misc/*.texi.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
3233 * Move Commands:: Moving, Searching
f1266b2f017e Untabify doc/misc/*.texi.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
3234 * Marking:: Textmarkers in Viper and the Emacs Mark.
f1266b2f017e Untabify doc/misc/*.texi.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
3235 * Appending Text:: Text insertion, Shifting, Putting
f1266b2f017e Untabify doc/misc/*.texi.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
3236 * Editing in Insert State:: Autoindent, Quoting etc.
f1266b2f017e Untabify doc/misc/*.texi.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
3237 * Deleting Text:: Deleting
f1266b2f017e Untabify doc/misc/*.texi.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
3238 * Changing Text:: Changing, Replacement, Joining
f1266b2f017e Untabify doc/misc/*.texi.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
3239 * Search and Replace:: Searches, Query Replace, Pattern Commands
f1266b2f017e Untabify doc/misc/*.texi.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
3240 * Yanking:: Yanking, Viewing Registers
f1266b2f017e Untabify doc/misc/*.texi.
Glenn Morris <rgm@gnu.org>
parents: 106815
diff changeset
3241 * Undoing:: Multiple Undo, Backups
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3242 @end menu
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3243
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3244 @node Move Commands,Marking,,Text Handling
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3245 @subsection Move Commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3246
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3247 @cindex movement commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3248 @cindex searching
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3249 @cindex textmarkers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3250 @cindex markers
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3251 @cindex column movement
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3252 @cindex paragraphs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3253 @cindex headings
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3254 @cindex sections
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3255 @cindex sentences
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3256 @cindex matching parens
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3257 @cindex paren matching
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3258
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3259 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3260 @item <count> h C-h
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3261 <count> chars to the left.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3262 @item <count> j <lf> C-n
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3263 <count> lines downward.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3264 @item <count> l <sp>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3265 <count> chars to the right.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3266 @item <count> k C-p
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3267 <count> lines upward.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3268 @item <count> $
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3269 To the end of line <count> from the cursor.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3270 @item <count> ^
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3271 To the first CHAR <count> - 1 lines lower.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3272 @item <count> -
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3273 To the first CHAR <count> lines higher.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3274 @item <count> + <cr>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3275 To the first CHAR <count> lines lower.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3276 @item 0
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3277 To the first char of the line.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3278 @item <count> |
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3279 To column <count>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3280 @item <count> f<char>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3281 <count> <char>s to the right (find).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3282 @item <count> t<char>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3283 Till before <count> <char>s to the right.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3284 @item <count> F<char>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3285 <count> <char>s to the left.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3286 @item <count> T<char>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3287 Till after <count> <char>s to the left.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3288 @item <count> ;
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3289 Repeat latest @kbd{f t F T} <count> times.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3290 @item <count> ,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3291 Repeat latest @kbd{f t F T}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3292 <count> times in opposite direction.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3293 @item <count> w
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3294 <count> words forward.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3295 @item <count> W
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3296 <count> WORDS forward.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3297 @item <count> b
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3298 <count> words backward.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3299 @item <count> B
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3300 <count> WORDS backward.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3301 @item <count> e
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3302 To the end of word <count> forward.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3303 @item <count> E
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3304 To the end of WORD <count> forward.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3305 @item <count> G
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3306 Go to line <count> (default end-of-file).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3307 @item <count> H
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3308 To line <count> from top of the screen (home).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3309 @item <count> L
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3310 To line <count> from bottom of the screen (last).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3311 @item M
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3312 To the middle line of the screen.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3313 @item <count> )
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3314 <count> sentences forward.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3315 @item <count> (
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3316 <count> sentences backward.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3317 @item <count> @}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3318 <count> paragraphs forward.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3319 @item <count> @{
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3320 <count> paragraphs backward.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3321 @item <count> ]]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3322 To the <count>th heading.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3323 @item <count> [[
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3324 To the <count>th previous heading.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3325 @item <count> []
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3326 To the end of <count>th heading.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3327 @item m<a-z>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3328 Mark the cursor position with a letter.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3329 @item `<a-z>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3330 To the mark.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3331 @item '<a-z>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3332 To the first CHAR of the line with the mark.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3333 @item [<a-z>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3334 Show contents of textmarker.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3335 @item ]<a-z>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3336 Show contents of register.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3337 @item ``
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3338 To the cursor position before the latest absolute
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3339 jump (of which are examples @kbd{/} and @kbd{G}).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3340 @item ''
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3341 To the first CHAR of the line on which the cursor
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3342 was placed before the latest absolute jump.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3343 @item <count> /<string>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3344 To the <count>th occurrence of <string>.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3345 @item <count> /<cr>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3346 To the <count>th occurrence of <string> from previous @kbd{/ or ?}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3347 @item <count> ?<string>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3348 To the <count>th previous occurrence of <string>.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3349 @item <count> ?<cr>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3350 To the <count>th previous occurrence of <string> from previous @kbd{?@: or /}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3351 @item n
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3352 Repeat latest @kbd{/} @kbd{?} (next).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3353 @item N
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3354 Repeat latest search in opposite direction.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3355 @item C-c /
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3356 Without a prefix argument, this command toggles
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3357 case-sensitive/case-insensitive search modes and plain vanilla/regular
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3358 expression search. With the prefix argument 1, i.e.,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3359 @kbd{1 C-c /}, this toggles case-sensitivity; with the prefix argument 2,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3360 toggles plain vanilla search and search using
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3361 regular expressions. @xref{Viper Specials}, for alternative ways to invoke
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3362 this function.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3363 @cindex vanilla search
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3364 @cindex case-sensitive search
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3365 @cindex case-insensitive search
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3366 @item %
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3367 Find the next bracket/parenthesis/brace and go to its match.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3368 By default, Viper ignores brackets/parentheses/braces that occur inside
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3369 parentheses. You can change this by setting
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3370 @code{viper-parse-sexp-ignore-comments} to @code{nil} in your @file{.viper} file.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3371 This option can also be toggled interactively if you quickly hit @kbd{%%%}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3372
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3373 This latter feature is implemented as a vi-style keyboard macro. If you
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3374 don't want this macro, put
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3375
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3376 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3377 (viper-set-parsing-style-toggling-macro 'undefine)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3378 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3379 @findex @code{viper-set-parsing-style-toggling-macro}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3380
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3381 in your @file{~/.viper} file.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3382
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3383 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3384 @kindex @kbd{%}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3385 @kindex @kbd{C-c /}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3386 @kindex @kbd{N}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3387 @kindex @kbd{n}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3388 @kindex @kbd{?<cr>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3389 @kindex @kbd{/<cr>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3390 @kindex @kbd{?<string>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3391 @kindex @kbd{/<string>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3392 @kindex @kbd{''}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3393 @kindex @kbd{``}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3394 @kindex @kbd{]<a-z>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3395 @kindex @kbd{[<a-z>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3396 @kindex @kbd{'<a-z>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3397 @kindex @kbd{`<a-z>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3398 @kindex @kbd{m<a-z>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3399 @kindex @kbd{[]}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3400 @kindex @kbd{[[}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3401 @kindex @kbd{]]}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3402 @kindex @kbd{@{}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3403 @kindex @kbd{@}}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3404 @kindex @kbd{(}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3405 @kindex @kbd{)}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3406 @kindex @kbd{M}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3407 @kindex @kbd{L}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3408 @kindex @kbd{H}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3409 @kindex @kbd{G}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3410 @kindex @kbd{E}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3411 @kindex @kbd{e}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3412 @kindex @kbd{B}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3413 @kindex @kbd{b}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3414 @kindex @kbd{W}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3415 @kindex @kbd{w}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3416 @kindex @kbd{,}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3417 @kindex @kbd{;}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3418 @kindex @kbd{T<char>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3419 @kindex @kbd{F<char>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3420 @kindex @kbd{t<char>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3421 @kindex @kbd{f<char>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3422 @kindex @kbd{|}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3423 @kindex @kbd{0}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3424 @kindex @kbd{<cr>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3425 @kindex @kbd{+}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3426 @kindex @kbd{-}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3427 @kindex @kbd{^}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3428 @kindex @kbd{$}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3429 @kindex @kbd{C-p}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3430 @kindex @kbd{<lf>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3431 @kindex @kbd{<sp>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3432 @kindex @kbd{C-n}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3433 @kindex @kbd{C-h}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3434 @kindex @kbd{h}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3435 @kindex @kbd{j}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3436 @kindex @kbd{k}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3437 @kindex @kbd{l}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3438 @vindex @code{viper-parse-sexp-ignore-comments}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3439
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3440 @node Marking,Appending Text,Move Commands,Text Handling
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3441 @subsection Marking
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3442
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3443 Emacs mark is referred to in the region specifiers @kbd{r} and @kbd{R}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3444 @xref{Emacs Preliminaries}, and @xref{Basics}, for explanation. Also
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3445 see @ref{Mark,,Mark,emacs,The GNU Emacs manual}, for an explanation of
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3446 the Emacs mark ring.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3447
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3448 @cindex marking
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3449
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3450 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3451 @item m<a-z>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3452 Mark the current file and position with the specified letter.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3453 @item m .
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3454 Set the Emacs mark (@pxref{Emacs Preliminaries}) at point.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3455 @item m ^
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3456 Set the Emacs mark (@pxref{Emacs Preliminaries}) back to where it was last
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3457 set with the @kbd{m.} command. This is useful when you set the mark with
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3458 @kbd{m.}, but then some other command (such as @kbd{L} or @kbd{G}) changes
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3459 it in a way that you didn't like.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3460 @item m <
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3461 Set the Emacs mark at beginning of buffer.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3462 @item m >
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3463 Set the Emacs mark at end of buffer.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3464 @item m ,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3465 Jump to the Emacs mark.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3466 @item :mark <char>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3467 Mark position with text marker named <char>. This is an Ex command.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3468 @item :k <char>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3469 Same as @kbd{:mark}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3470 @item ``
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3471 Exchange point and mark.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3472 @item ''
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3473 Exchange point and mark and go to the first CHAR on line.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3474 @item '<a-z>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3475 Go to specified Viper mark.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3476 @item
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3477 Go to specified Viper mark and go to the first CHAR on line.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3478 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3479 @kindex @kbd{m<a-z>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3480 @kindex @kbd{m.}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3481 @kindex @kbd{m>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3482 @kindex @kbd{m<}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3483 @kindex @kbd{m,}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3484 @kindex @kbd{m^}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3485 @findex @kbd{:mark}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3486 @findex @kbd{:k}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3487 @kindex @kbd{''}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3488 @kindex @kbd{``}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3489 @kindex @kbd{`<a-z>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3490 @kindex @kbd{'<a-z>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3491
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3492 @node Appending Text, Editing in Insert State, Marking,Text Handling
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3493 @subsection Appending Text
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3494
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3495 @xref{Options}, to see how to change tab and shiftwidth size. See the GNU
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3496 Emacs manual, or try @kbd{C-ha tabs} (If you have turned Emacs help on).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3497 Check out the variable @code{indent-tabs-mode} to put in just spaces.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3498 Also see options for word-wrap.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3499
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3500 @cindex inserting
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3501 @cindex appending
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3502 @cindex paste
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3503 @cindex put
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3504
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3505 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3506 @item <count> a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3507 <count> times after the cursor.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3508 @item <count> A
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3509 <count> times at the end of line.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3510 @item <count> i
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3511 <count> times before the cursor (insert).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3512 @item <count> I
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3513 <count> times before the first CHAR of the line
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3514 @item <count> o
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3515 On a new line below the current (open).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3516 The count is only useful on a slow terminal.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3517 @item <count> O
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3518 On a new line above the current.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3519 The count is only useful on a slow terminal.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3520 @item <count> ><move>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3521 Shift the lines described by <count><move> one
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3522 shiftwidth to the right (layout!).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3523 @item <count> >>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3524 Shift <count> lines one shiftwidth to the right.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3525 @item <count> ["<a-z1-9>]p
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3526 Put the contents of the (default undo) buffer
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3527 <count> times after the cursor. The register will
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3528 be automatically down-cased.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3529 @item <count> ["<a-z1-9>]P
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3530 Put the contents of the (default undo) buffer
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3531 <count> times before the cursor. The register will
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3532 @item [<a-z>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3533 Show contents of textmarker.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3534 @item ]<a-z>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3535 Show contents of register.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3536 @item <count> .
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3537 Repeat previous command <count> times. For destructive
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3538 commands as well as undo.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3539 @item f1 1 and f1 2
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3540 While @kbd{.} repeats the last destructive command,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3541 these two macros repeat the second-last and the third-last destructive
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3542 commands. @xref{Vi Macros}, for more information on Vi macros.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3543 @item C-c M-p and C-c M-n
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3544 In Vi state,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3545 these commands help peruse the history of Vi's destructive commands.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3546 Successive typing of @kbd{C-c M-p} causes Viper to search the history in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3547 the direction
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3548 of older commands, while hitting @kbd{C-c M-n} does so in reverse
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
3549 order. Each command in the history is displayed in the minibuffer. The
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3550 displayed command can
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3551 then be executed by typing `@kbd{.}'.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3552
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3553 Since typing the above sequences of keys may be tedious, the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3554 functions doing the perusing can be bound to unused keyboard keys in the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3555 @file{~/.viper} file. @xref{Viper Specials}, for details.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3556 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3557 @kindex @kbd{C-c M-p}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3558 @kindex @kbd{C-c M-n}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3559 @kindex @kbd{.}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3560 @kindex @kbd{]<a-z>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3561 @kindex @kbd{[<a-z>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3562 @kindex @kbd{P}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3563 @kindex @kbd{p}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3564 @kindex @kbd{"<a-z1-9>p}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3565 @kindex @kbd{"<a-z1-9>P}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3566 @kindex @kbd{>>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3567 @kindex @kbd{><move>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3568 @kindex @kbd{O}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3569 @kindex @kbd{o}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3570 @kindex @kbd{i}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3571 @kindex @kbd{A}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3572 @kindex @kbd{a}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3573
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3574 @node Editing in Insert State, Deleting Text, Appending Text,Text Handling
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3575 @subsection Editing in Insert State
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3576
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3577 Minibuffer can be edited similarly to Insert state, and you can switch
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3578 between Insert/Replace/Vi states at will.
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
3579 Some users prefer plain Emacs feel in the minibuffer. To this end, set
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3580 @var{viper-vi-style-in-minibuffer} to @code{nil}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3581
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3582 @cindex Insert state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3583
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3584 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3585 @item C-v
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3586 Deprive the next char of its special meaning (quoting).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3587 @item C-h
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3588 One char back.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3589 @item C-w
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3590 One word back.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3591 @item C-u
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3592 Back to the begin of the change on the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3593 current line.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3594
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3595 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3596 @kindex @kbd{C-u}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3597 @kindex @kbd{C-w}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3598 @kindex @kbd{C-v}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3599
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3600 @node Deleting Text, Changing Text, Editing in Insert State, Text Handling
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3601 @subsection Deleting Text
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3602
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3603
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3604 There is one difference in text deletion that you should be
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3605 aware of. This difference comes from Emacs and was adopted in Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3606 because we find it very useful. In Vi, if you delete a line, say, and then
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3607 another line, these two deletions are separated and are put back
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3608 separately if you use the @samp{p} command. In Emacs (and Viper), successive
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3609 series of deletions that are @emph{not interrupted} by other commands are
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3610 lumped together, so the deleted text gets accumulated and can be put back
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3611 as one chunk. If you want to break a sequence of deletions so that the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3612 newly deleted text could be put back separately from the previously deleted
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3613 text, you should perform a non-deleting action, e.g., move the cursor one
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3614 character in any direction.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3615
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3616 @cindex shifting text
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3617
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3618 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3619 @item <count> x
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3620 Delete <count> chars under and after the cursor.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3621 @item <count> X
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3622 Delete <count> chars before the cursor.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3623 @item <count> d<move>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3624 Delete from point to endpoint of <count><move>.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3625 @item <count> dd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3626 Delete <count> lines.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3627 @item D
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3628 The rest of the line.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3629 @item <count> <<move>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3630 Shift the lines described by <count><move> one
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3631 shiftwidth to the left (layout!).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3632 @item <count> <<
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3633 Shift <count> lines one shiftwidth to the left.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3634 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3635 @kindex @kbd{<<}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3636 @kindex @kbd{<<move>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3637 @kindex @kbd{D}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3638 @kindex @kbd{dd}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3639 @kindex @kbd{d<move>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3640 @kindex @kbd{X}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3641 @kindex @kbd{x}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3642
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3643 @node Changing Text, Search and Replace, Deleting Text,Text Handling
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3644 @subsection Changing Text
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3645
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3646 @cindex joining lines
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3647 @cindex changing case
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3648 @cindex quoting regions
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3649 @cindex substitution
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3650
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3651 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3652 @item <count> r<char>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3653 Replace <count> chars by <char> - no <esc>.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3654 @item <count> R
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3655 Overwrite the rest of the line,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3656 appending change @var{count - 1} times.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3657 @item <count> s
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3658 Substitute <count> chars.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3659 @item <count> S
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3660 Change <count> lines.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3661 @item <count> c<move>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3662 Change from begin to endpoint of <count><move>.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3663 @item <count> cc
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3664 Change <count> lines.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3665 @item <count> C
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3666 The rest of the line and <count> - 1 next lines.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3667 @item <count> =<move>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3668 Reindent the region described by move.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3669 @item <count> ~
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3670 Switch lower and upper cases.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3671 @item <count> J
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3672 Join <count> lines (default 2).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3673 @item :[x,y]s/<pat>/<repl>/<f>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3674 Substitute (on lines x through y) the pattern
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3675 <pat> (default the last pattern) with <repl>. Useful
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3676 flags <f> are @samp{g} for @samp{global} (i.e.@: change every
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3677 non-overlapping occurrence of <pat>) and @samp{c} for
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3678 @samp{confirm} (type @samp{y} to confirm a particular
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3679 substitution, else @samp{n} ). Instead of @kbd{/} any
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3680 punctuation CHAR unequal to <space> <tab> and <lf> can be used as
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3681 delimiter.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3682
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3683 In Emacs, @samp{\&} stands for the last matched expression, so
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3684 @kbd{s/[ab]+/\&\&/} will double the string matched by @kbd{[ab]}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3685 Viper doesn't treat @samp{&} specially, unlike Vi: use @samp{\&} instead.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3686
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3687 Viper does not parse search patterns and does not expand special symbols
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3688 found there (e.g., @samp{~} is not expanded to the result of the previous
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3689 substitution).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3690
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3691 Note: @emph{The newline character (inserted as @kbd{C-qC-j})
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3692 can be used in <repl>}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3693 @item :[x,y]copy [z]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3694 Copy text between @kbd{x} and @kbd{y} to the position after @kbd{z}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3695 @item :[x,y]t [z]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3696 Same as @kbd{:copy}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3697 @item :[x,y]move [z]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3698 Move text between @kbd{x} and @kbd{y} to the position after @kbd{z}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3699 @item &
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3700 Repeat latest Ex substitute command, e.g.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3701 @kbd{:s/wrong/right}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3702 @item :x,yp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3703 @itemx :g/Pat/p
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3704 @itemx :v/Pat/p
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3705 The above commands display certain buffer lines in a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3706 temporary buffer. The first form above displays the buffer lines between
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3707 @kbd{x} and @kbd{y}. The second displays the lines of the buffer, which
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3708 match a given pattern. The third form displays the lines that do @emph{not}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3709 match the given pattern.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3710 @item #c<move>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3711 Change upper-case characters in the region to lower-case.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3712 @item #C<move>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3713 Change lower-case characters in the region to upper-case.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3714 @item #q<move>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3715 Insert specified string at the beginning of each line in the region
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3716 @item C-c M-p and C-c M-n
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3717 In Insert and Replace states, these keys are bound to commands that peruse
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3718 the history of the text
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3719 previously inserted in other insert or replace commands. By repeatedly typing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3720 @kbd{C-c M-p} or @kbd{C-c M-n}, you will cause Viper to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3721 insert these previously used strings one by one.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3722 When a new string is inserted, the previous one is deleted.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3723
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3724 In Vi state, these keys are bound to functions that peruse the history of
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3725 destructive Vi commands.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3726 @xref{Viper Specials}, for details.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3727 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3728 @kindex @kbd{C-c M-p}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3729 @kindex @kbd{C-c M-n}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3730 @kindex @kbd{#q<move> }
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3731 @kindex @kbd{#C<move>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3732 @kindex @kbd{#c<move>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3733 @kindex @kbd{&}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3734 @kindex @kbd{\&}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3735 @findex @kbd{:substitute/<pat>/<repl>/<f>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3736 @findex @kbd{:s/<pat>/<repl>/<f>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3737 @findex @kbd{:copy [z]}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3738 @findex @kbd{:t [z]}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3739 @findex @kbd{:move [z]}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3740 @kindex @kbd{J}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3741 @kindex @kbd{~}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3742 @kindex @kbd{=<move>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3743 @kindex @kbd{C}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3744 @kindex @kbd{cc}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3745 @kindex @kbd{c<move>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3746 @kindex @kbd{S}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3747 @kindex @kbd{s}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3748 @kindex @kbd{R}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3749 @kindex @kbd{r<char>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3750
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3751 @node Search and Replace, Yanking, Changing Text,Text Handling
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3752 @subsection Search and Replace
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3753
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3754 @xref{Groundwork}, for Ex address syntax. @xref{Options}, to see how to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3755 get literal (non-regular-expression) search and how to stop search from
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3756 wrapping around.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3757
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3758 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3759 @item C-c /
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3760 Toggle case-sensitive search. With prefix argument, toggle vanilla/regular
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3761 expression search.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3762 @item <count> /<string>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3763 To the <count>th occurrence of <string>.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3764
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3765 Viper does not parse search patterns and does not expand special symbols
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3766 found there (e.g., @samp{~} is not expanded to the result of the previous
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3767 substitution).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3768
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
3769 After typing @kbd{/} or @kbd{?} all the usual Emacs minibuffer commands, such as
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
3770 @kbd{M-p} and @kbd{M-n} are available. In addition, typing @kbd{C-s} will
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
3771 insert the last search string used by the Emacs incremental search command
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
3772 (which is bound to @kbd{C-s} everywhere except in this case).
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
3773
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3774 @item <count> ?<string>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3775 To the <count>th previous occurrence of <string>.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3776 @item <count> g<move>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3777 Search for the text described by move. (off by default)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3778 @item n
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3779 Repeat latest @kbd{/} @kbd{?} (next).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3780 @item N
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3781 Idem in opposite direction.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3782 @item %
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3783 Find the next bracket and go to its match
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3784 @item :[x,y]g/<string>/<cmd>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3785 @cindex text processing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3786 Search globally [from line x to y] for <string>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3787 and execute the Ex <cmd> on each occurrence.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3788 @item :[x,y]v/<string>/<cmd>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3789 Execute <cmd> on the lines that don't match.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3790 @item #g<move>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3791 Execute the last keyboard macro for each line in the region.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3792 @xref{Macros and Registers}, for more info.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3793 @item Q
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3794 Query Replace.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3795 @item :ta <name>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3796 Search in the tags file where <name> is defined (file, line), and go to it.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3797 @item :[x,y]s/<pat>/<repl>/<f>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3798 Substitute (on lines x through y) the pattern <pat> (default the last
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3799 pattern) with <repl>. Useful
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3800 flags <f> are @samp{g} for @samp{global} (i.e.@: change every
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3801 non-overlapping occurrence of <pat>) and @samp{c} for
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3802 @samp{confirm} (type @samp{y} to confirm a particular
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3803 substitution, else @samp{n}). Instead of @kbd{/} any
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3804 punctuation character other than <space> <tab> and <lf> can be used as
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3805 delimiter.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3806
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3807 Note: @emph{The newline character (inserted as @kbd{C-qC-j})
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3808 can be used in <repl>}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3809 @item &
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3810 Repeat latest Ex substitute command, e.g.@: @kbd{:s/wrong/right}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3811 @item :global /<pattern>/<ex-command>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3812 @itemx :g /<pattern>/<ex-command>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3813 Execute <ex-command> on all lines that match <pattern>.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3814 @item :vglobal /<pattern>/<ex-command>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3815 @itemx :v /<pattern>/<ex-command>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3816 Execute <ex-command> on all lines that do not match <pattern>.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3817 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3818 @kindex @kbd{&}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3819 @findex @kbd{:substitute/<pat>/<repl>/<f>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3820 @kindex @kbd{Q}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3821 @kindex @kbd{#g<move>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3822 @findex @kbd{:v}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3823 @findex @kbd{:g}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3824 @findex @kbd{:global}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3825 @findex @kbd{:vglobal}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3826 @findex @kbd{:tag <name>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3827 @kindex @kbd{%}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3828 @kindex @kbd{N}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3829 @kindex @kbd{n}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3830 @kindex @kbd{g<move>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3831 @kindex @kbd{?<string>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3832 @kindex @kbd{/<string>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3833
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3834 @node Yanking,Undoing,Search and Replace,Text Handling
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3835 @subsection Yanking
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3836
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3837 @cindex cut and paste
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3838 @cindex paste
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3839
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3840 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3841 @item <count> y<move>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3842 Yank from begin to endpoint of <count><move>.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3843 @item <count> "<a-z>y<move>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3844 Yank from begin to endpoint of <count><move> to register.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3845 @item <count> "<A-Z>y<move>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3846 Yank from begin to endpoint of <count><move> and append
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3847 to register.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3848 @item <count> yy
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3849 <count> lines.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3850 @item <count> Y
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3851 Idem (should be equivalent to @kbd{y$} though).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3852 @item m<a-z>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3853 Mark the cursor position with a letter.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3854 @item [<a-z>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3855 Show contents of textmarker.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3856 @item ]<a-z>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3857 Show contents of register.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3858 @item <count> ["<a-z1-9>]p
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3859 Put the contents of the (default undo) buffer
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3860 <count> times after the cursor. The register will
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3861 be automatically down-cased.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3862 @item <count> ["<a-z1-9>]P
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3863 Put the contents of the (default undo) buffer
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3864 <count> times before the cursor. The register will
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3865 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3866 @kindex @kbd{P}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3867 @kindex @kbd{p}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3868 @kindex @kbd{"<a-z1-9>p}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3869 @kindex @kbd{"<a-z1-9>P}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3870 @kindex @kbd{]<a-z>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3871 @kindex @kbd{[<a-z>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3872 @kindex @kbd{m<a-z>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3873 @kindex @kbd{Y}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3874 @kindex @kbd{yy}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3875 @kindex @kbd{"<A-Z>y<move>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3876 @kindex @kbd{"<a-z>y<move>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3877 @kindex @kbd{y<move>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3878 @kindex @kbd{yank}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3879 @findex @kbd{:yank}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3880
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3881 @node Undoing,, Yanking,Text Handling
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3882 @subsection Undoing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3883
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3884 @cindex undo
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3885 @cindex backup files
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3886
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3887 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3888 @item u U
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3889 Undo the latest change.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3890 @item .
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3891 Repeat undo.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3892 @item :q!
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3893 Quit Vi without writing.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3894 @item :e!
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3895 Re-edit a messed-up file.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3896 @item :rec
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3897 Recover file from autosave. Viper also creates backup files
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3898 that have a @samp{~} appended to them.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3899 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3900 @findex @kbd{:rec}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3901 @findex @kbd{:e!}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3902 @findex @kbd{:q!}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3903 @kindex @kbd{.}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3904 @kindex @kbd{U}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3905 @kindex @kbd{u}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3906
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3907 @node Display, File and Buffer Handling, Text Handling, Commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3908 @section Display
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3909
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3910 @cindex scrolling
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3911
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3912 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3913 @item C-g
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3914 At user level 1,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3915 give file name, status, current line number
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3916 and relative position.@*
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3917 At user levels 2 and higher, abort the current command.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3918 @item C-c g
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3919 Give file name, status, current line number and relative position -- all
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3920 user levels.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3921 @item C-l
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3922 Refresh the screen.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3923 @item <count> C-e
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3924 Expose <count> more lines at bottom, cursor stays put (if possible).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3925 @item <count> C-y
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3926 Expose <count> more lines at top, cursor stays put (if possible).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3927 @item <count> C-d
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3928 Scroll <count> lines downward (default the number of the previous scroll;
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3929 initialization: half a page).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3930 @item <count> C-u
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3931 Scroll <count> lines upward (default the number of the previous scroll;
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3932 initialization: half a page).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3933 @item <count> C-f
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3934 <count> pages forward.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3935 @item <count> C-b
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3936 <count> pages backward (in older versions @kbd{C-b} only works without count).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3937 @item <count> z<cr>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3938 @item zH
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3939 Put line <count> at the top of the window (default the current line).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3940 @item <count> z-
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3941 @item zL
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3942 Put line <count> at the bottom of the window
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3943 (default the current line).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3944 @item <count> z.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3945 @item zM
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3946 Put line <count> in the center of the window
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3947 (default the current line).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3948 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3949 @kindex @kbd{zM}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3950 @kindex @kbd{zL}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3951 @kindex @kbd{zH}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3952 @kindex @kbd{z<cr>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3953 @kindex @kbd{z.}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3954 @kindex @kbd{z-}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3955 @kindex @kbd{z<cr>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3956 @kindex @kbd{C-b}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3957 @kindex @kbd{C-f}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3958 @kindex @kbd{C-u}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3959 @kindex @kbd{C-d}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3960 @kindex @kbd{C-y}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3961 @kindex @kbd{C-e}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3962 @kindex @kbd{C-l}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3963 @kindex @kbd{C-g}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3964
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3965
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3966 @node File and Buffer Handling, Mapping, Display,Commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3967 @section File and Buffer Handling
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3968
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3969 @cindex multiple files
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3970
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3971 In all file handling commands, space should be typed before entering the file
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3972 name. If you need to type a modifier, such as @kbd{>>} or @kbd{!}, don't
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3973 put any space between the command and the modifier.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3974
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3975 Note that many Ex commands, e.g., @kbd{:w}, accept command arguments. The
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3976 effect is that the command would start acting on the current region. For
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3977 instance, if the current region spans the lines 11 through 22, then if you
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3978 type @kbd{1:w} you would see @samp{:11,22w} in the minibuffer.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3979
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3980 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3981 @item :q
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3982 Quit buffer except if modified.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3983 @item :q!
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3984 Quit buffer without checking. In Viper, these two commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3985 are identical. Confirmation is required if exiting modified buffers that
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3986 visit files.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3987 @item :suspend
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3988 @item :stop
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3989 Suspend Viper
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3990 @item :[x,y] w
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3991 Write the file. Viper makes sure that a final newline is always added to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3992 any file where this newline is missing. This is done by setting Emacs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3993 variable @code{require-final-newline} to @code{t}. If you don't like this
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3994 feature, use @code{setq-default} to set @code{require-final-newline} to
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3995 @code{nil}. This must be done in @file{.viper} file.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3996 @item :[x,y] w <name>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3997 Write to the file <name>.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3998 @item :[x,y] w>> <name>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
3999 Append the buffer to the file <name>. There should be no space between
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4000 @kbd{w} and @kbd{>>}. Type space after the @kbd{>>} and see what happens.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4001 @item :w!@: <name>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4002 Overwrite the file <name>. In Viper, @kbd{:w} and @kbd{:w!} are identical.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4003 Confirmation is required for writing to an existing file (if this is not
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4004 the file the buffer is visiting) or to a read-only file.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4005 @item :x,y w <name>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4006 Write lines x through y to the file <name>.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4007 @item :wq
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4008 Write the file and kill buffer.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4009 @item :r <file> [<file> ...]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4010 Read file into a buffer, inserting its contents after the current line.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4011 @item :xit
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4012 Same as @kbd{:wq}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4013 @item :Write
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4014 @itemx :W
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4015 Save all unsaved buffers, asking for confirmation.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4016 @item :WWrite
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4017 @itemx :WW
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4018 Like @kbd{W}, but without asking for confirmation.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4019 @item ZZ
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4020 Save current buffer and kill it. If user level is 1, then save all files
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4021 and kill Emacs. Killing Emacs is the wrong way to use it, so you should
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4022 switch to higher user levels as soon as possible.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4023 @item :x [<file>]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4024 Save and kill buffer.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4025 @item :x!@: [<file>]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4026 @kbd{:w![<file>]} and @kbd{:q}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4027 @item :pre
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4028 Preserve the file -- autosave buffers.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4029 @item :rec
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4030 Recover file from autosave.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4031 @item :f [<file>]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4032 without the argument, prints file name and character/line information afout
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4033 the currently visited file. With an argument, sets the currently visited
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4034 filename to @file{file}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4035 @item :cd [<dir>]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4036 Set the working directory to <dir> (default home directory).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4037 @item :pwd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4038 Print present working directory.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4039 @item :e [+<cmd>] <files>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4040 Edit files. If no filename is given, edit the file visited by the current
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4041 buffer. If buffer was modified or the file changed on disk, ask for
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4042 confirmation. Unlike Vi, Viper allows @kbd{:e} to take multiple arguments.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4043 The first file is edited the same way as in Vi. The rest are visited
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4044 in the usual Emacs way.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4045 @item :e!@: [+<cmd>] <files>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4046 Re-edit file. If no filename, re-edit current file.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4047 In Viper, unlike Vi, @kbd{e!} is identical to @kbd{:e}. In both cases, the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4048 user is asked to confirm if there is a danger of discarding changes to a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4049 buffer.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4050 @item :q!
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4051 Quit Vi without writing.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4052 @item C-^
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4053 Edit the alternate (normally the previous) file.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4054 @item :rew
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4055 Obsolete
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4056 @item :args
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4057 List files not shown anywhere with counts for next
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4058 @item :n [count] [+<cmd>] [<files>]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4059 Edit <count> file, or edit files. The count comes from @kbd{:args}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4060 @item :N [count] [+<cmd>] [<files>]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4061 Like @kbd{:n}, but the meaning of the variable
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4062 @var{ex-cycle-other-window} is reversed.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4063 @item :b
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4064 Switch to another buffer. If @var{ex-cycle-other-window} is @code{t},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4065 switch in another window. Buffer completion is supported.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4066 The variable @var{viper-read-buffer-function} controls which function is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4067 actually used to read the buffer name. The default is @code{read-buffer},
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4068 but better alternatives are also available in Emacs (e.g.,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4069 @code{iswitchb-read-buffer}).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4070 @vindex @var{viper-read-buffer-function}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4071 @item :B
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4072 Like @kbd{:b}, but the meaning of @var{ex-cycle-other-window} is reversed.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4073 @item :<address>r <name>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4074 Read the file <name> into the buffer after the line <address>.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4075 @item v, V, C-v
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4076 Edit a file in current or another window, or in another frame. File name
104278
25648648783d 2009-08-15 Michael Kifer <kifer@cs.stonybrook.edu>
Michael Kifer <kifer@cs.stonybrook.edu>
parents: 102059
diff changeset
4077 is typed in minibuffer. File completion and history are supported.
84323
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4078 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4079 @kindex @kbd{v}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4080 @kindex @kbd{V}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4081 @findex @kbd{:args}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4082 @findex @kbd{:rew}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4083 @kindex @kbd{C-^}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4084 @findex @kbd{:e!@: [<files>]}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4085 @findex @kbd{:e [<files>]}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4086 @findex @kbd{:edit [<files>]}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4087 @findex @kbd{:edit!@: [<files>]}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4088 @findex @kbd{:q!}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4089 @findex @kbd{:q}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4090 @findex @kbd{:quit}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4091 @findex @kbd{:quit!}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4092 @findex @kbd{:f}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4093 @findex @kbd{:rec}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4094 @findex @kbd{:r}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4095 @findex @kbd{:read}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4096 @findex @kbd{:pre}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4097 @kindex @kbd{ZZ}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4098 @findex @kbd{:wq}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4099 @findex @kbd{:w <file>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4100 @findex @kbd{:w!@: <file>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4101 @findex @kbd{:w >> <file>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4102 @findex @kbd{:write <file>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4103 @findex @kbd{:write!@: <file>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4104 @findex @kbd{:write >> <file>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4105 @findex @kbd{:W}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4106 @findex @kbd{:WW}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4107 @findex @kbd{:Write}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4108 @findex @kbd{:WWrite}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4109 @findex @kbd{:WWrite}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4110 @findex @kbd{:x}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4111 @findex @kbd{:x!}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4112 @findex @kbd{:suspend}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4113 @findex @kbd{:stop}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4114 @findex @kbd{:n [<count> | <file>]}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4115 @findex @kbd{:cd [<dir>]}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4116 @findex @kbd{:pwd}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4117
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4118 @node Mapping, Shell Commands, File and Buffer Handling, Commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4119 @section Mapping
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4120
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4121 @cindex key bindings
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4122 @cindex key mapping
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4123
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4124 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4125 @item :map <string>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4126 Start defining a Vi-style keyboard macro.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4127 For instance, typing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4128 @kbd{:map www} followed by @kbd{:!wc %} and then typing @kbd{C-x )}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4129 will cause @kbd{www} to run wc on
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4130 current file (Vi replaces @samp{%} with the current file name).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4131 @item C-x )
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4132 Finish defining a keyboard macro.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4133 In Viper, this command completes the process of defining all keyboard
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4134 macros, whether they are Emacs-style or Vi-style.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4135 This is a departure from Vi, needed to allow WYSIWYG mapping of
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4136 keyboard macros and to permit the use of function keys and arbitrary Emacs
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4137 functions in the macros.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4138 @item :unmap <string>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4139 Deprive <string> of its mappings in Vi state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4140 @item :map!@: <string>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4141 Map a macro for Insert state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4142 @item :unmap!@: <string>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4143 Deprive <string> of its mapping in Insert state (see @kbd{:unmap}).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4144 @item @@<a-z>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4145 In Vi state,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4146 execute the contents of register as a command.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4147 @item @@@@
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4148 In Vi state,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4149 repeat last register command.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4150 @item @@#
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4151 In Vi state,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4152 begin keyboard macro. End with @@<a-z>. This will
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4153 put the macro in the proper register. Register will
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4154 be automatically down-cased.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4155 @xref{Macros and Registers}, for more info.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4156 @item @@!<a-z>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4157 In Vi state,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4158 yank anonymous macro to register
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4159 @item *
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4160 In Vi state,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4161 execute anonymous macro (defined by C-x( and C-x )).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4162 @item C-x e
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4163 Like @kbd{*}, but works in all Viper states.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4164 @item #g<move>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4165 Execute the last keyboard macro for each line in the region.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4166 @xref{Macros and Registers}, for more info.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4167 @item [<a-z>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4168 Show contents of textmarker.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4169 @item ]<a-z>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4170 Show contents of register.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4171 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4172 @kindex @kbd{]<a-z>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4173 @kindex @kbd{[<a-z>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4174 @kindex @kbd{#g<move>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4175 @kindex @kbd{*}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4176 @kindex @kbd{@@!<a-z>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4177 @kindex @kbd{@@#}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4178 @kindex @kbd{@@@@}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4179 @kindex @kbd{@@<a-z>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4180 @findex @kbd{:unmap <char>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4181 @findex @kbd{:map <char> <seq>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4182 @findex @kbd{:unmap!@: <char>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4183 @findex @kbd{:map!@: <char> <seq>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4184
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4185 @node Shell Commands, Options, Mapping, Commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4186 @section Shell Commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4187
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4188 @cindex % (Current file)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4189
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4190 The symbol @samp{%} is used in Ex shell commands to mean current file. If
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4191 you want a @samp{%} in your command, it must be escaped as @samp{\%}.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4192 @cindex @samp{%} (Ex address)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4193 However if @samp{%} is the first character, it stands as the address for
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4194 the whole file.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4195 @cindex @samp{#} (Previous file)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4196 Similarly, @samp{#} expands to the previous file. The previous file is the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4197 first file in @kbd{:args} listing. This defaults to the previous file in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4198 the VI sense if you have one window.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4199
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4200 Symbols @samp{%} and @samp{#} are also used in the Ex commands @kbd{:e} and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4201 @kbd{:r <shell-cmd>}. The commands @kbd{:w} and the regular @kbd{:r
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4202 <file>} command don't support these meta symbols, because file history is a
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4203 better mechanism.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4204
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4205 @cindex shell commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4206
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4207 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4208 @item :sh
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4209 Execute a subshell in another window
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4210 @item :[x,y]!<cmd>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4211 Execute a shell <cmd> [on lines x through y;
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4212 % is replace by current file, \% is changed to %
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4213 @item :[x,y]!!@: [<args>]
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4214 Repeat last shell command [and append <args>].
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4215 @item :!<cmd>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4216 Just execute command and display result in a buffer.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4217 @item :!!@: <args>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4218 Repeat last shell command and append <args>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4219 @item <count> !<move><cmd>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4220 The shell executes <cmd>, with standard
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4221 input the lines described by <count><move>,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4222 next the standard output replaces those lines
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4223 (think of @samp{cb}, @samp{sort}, @samp{nroff}, etc.).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4224 @item <count> !!<cmd>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4225 Give <count> lines as standard input to the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4226 shell <cmd>, next let the standard output
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4227 replace those lines.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4228 @item :[x,y] w !<cmd>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4229 Let lines x to y be standard input for <cmd>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4230 (notice the <sp> between @kbd{w} and @kbd{!}).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4231 @item :<address>r !<cmd>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4232 Put the output of <cmd> after the line <address> (default current).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4233 @item :<address>r <name>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4234 Read the file <name> into the buffer after the line <address> (default
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4235 current).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4236 @item :make
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4237 Run the make command in the current directory.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4238 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4239 @findex @kbd{:<address>r <name>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4240 @findex @kbd{:<address>r !<cmd>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4241 @findex @kbd{!<cmd>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4242 @findex @kbd{!!<cmd>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4243 @findex @kbd{!<move><cmd>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4244 @findex @kbd{:w !<cmd>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4245 @findex @kbd{:x,y w !<cmd>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4246 @findex @kbd{:!!@: <args>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4247 @findex @kbd{:!<cmd>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4248 @findex @kbd{:sh}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4249 @findex @kbd{:make}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4250
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4251 @node Options,Emacs Related Commands,Shell Commands,Commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4252 @section Options
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4253
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4254 @cindex Vi options
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4255
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4256 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4257 @item autoindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4258 @itemx ai
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4259 @cindex autoindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4260 autoindent -- In append mode after a <cr> the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4261 cursor will move directly below the first
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4262 character on the previous line.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4263 This setting affects the current buffer only.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4264 @item autoindent-global
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4265 @itemx ai-global
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4266 Same as `autoindent', but affects all buffers.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4267 @item noautoindent
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4268 @itemx noai
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4269 Cancel autoindent.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4270 @item noautoindent-global
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4271 @itemx noai-g
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4272 Cancel autoindent-global.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4273 @item ignorecase
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4274 @itemx ic
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4275 @cindex case and searching
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4276 ignorecase -- No distinction between upper and lower cases when searching.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4277 @item noignorecase
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4278 @itemx noic
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4279 Cancel ignorecase.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4280 @item magic
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4281 @itemx ma
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4282 @cindex literal searching
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4283 Regular expressions used in searches; nomagic means no regexps.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4284 @item nomagic
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4285 @item noma
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4286 Cancel magic.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4287 @item readonly
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4288 @itemx ro
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4289 @cindex readonly files
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4290 readonly -- The file is not to be changed.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4291 If the user attempts to write to this file, confirmation will be requested.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4292 @item noreadonly
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4293 @itemx noro
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4294 Cancel readonly.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4295 @item shell=<string>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4296 @itemx sh=<string>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4297 @cindex shell
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4298 shell -- The program to be used for shell escapes
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4299 (default @samp{$SHELL} (default @file{/bin/sh})).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4300 @item shiftwidth=<count>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4301 @itemx sw=<count>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4302 @cindex layout
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4303 @cindex shifting text
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4304 shiftwidth -- Gives the shiftwidth (default 8 positions).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4305 @item showmatch
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4306 @itemx sm
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4307 @cindex paren matching
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4308 @cindex matching parens
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4309 showmatch -- Whenever you append a @kbd{)}, Vi shows
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4310 its match if it's on the same page; also with
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4311 @kbd{@{} and @kbd{@}}. If there's no match, Vi will beep.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4312 @item noshowmatch
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4313 @itemx nosm
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4314 Cancel showmatch.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4315 @item tabstop=<count>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4316 @itemx ts=<count>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4317 @cindex changing tab width
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4318 @cindex tabbing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4319 tabstop -- The length of a <ht>; warning: this is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4320 only IN the editor, outside of it <ht>s have
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4321 their normal length (default 8 positions).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4322 This setting affects the current buffer only.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4323 @item tabstop-global
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4324 @itemx ts-g
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4325 Same as `tabstop', but affects all buffers.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4326 @item wrapmargin=<count>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4327 @itemx wm=<count>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4328 @cindex auto fill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4329 @cindex word wrap
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4330 wrapmargin -- In append mode Vi automatically
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4331 puts a <lf> whenever there is a <sp> or <ht>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4332 within <wm> columns from the right margin.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4333 @item wrapscan
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4334 @itemx ws
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4335 @cindex searching
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4336 wrapscan -- When searching, the end is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4337 considered @samp{stuck} to the begin of the file.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4338 @item nowrapscan
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4339 @itemx nows
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4340 Cancel wrapscan.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4341 @item :set <option>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4342 Turn <option> on.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4343 @item :set no<option>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4344 Turn <option> off.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4345 @item :set <option>=<value>
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4346 Set <option> to <value>.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4347 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4348 @findex @kbd{:set <option>=<value>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4349 @findex @kbd{:set no<option>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4350 @findex @kbd{:set <option>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4351 @findex @kbd{:set ws}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4352 @findex @kbd{:set wrapscan}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4353 @findex @kbd{:set wm=<count>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4354 @findex @kbd{:set wrapmargin=<count>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4355 @findex @kbd{:set ts=<count>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4356 @findex @kbd{:set tabstop=<count>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4357 @findex @kbd{:set tab-stop-local=<count>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4358 @findex @kbd{:set sm}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4359 @findex @kbd{:set showmatch}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4360 @findex @kbd{:set sw=<count>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4361 @findex @kbd{:set shiftwidth=<count>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4362 @findex @kbd{:set sh=<string>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4363 @findex @kbd{:set shell=<string>}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4364 @findex @kbd{:set ro}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4365 @findex @kbd{:set readonly}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4366 @findex @kbd{:set magic}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4367 @findex @kbd{:set ic}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4368 @findex @kbd{:set ignorecase}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4369 @findex @kbd{:set ai}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4370 @findex @kbd{:set autoindent}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4371
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4372 @node Emacs Related Commands,,Options,Commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4373 @section Emacs Related Commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4374
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4375 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4376 @item C-\
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4377 Begin Meta command in Vi or Insert states. Most often used as C-\ x (M-x).
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4378
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4379 Note: Emacs binds @kbd{C-\} to a function that offers to change the
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4380 keyboard input method in the multilingual environment. Viper overrides this
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4381 binding. However, it is still possible to switch the input method by typing
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4382 @kbd{\ C-\} in the Vi command state and @kbd{C-z \ C-\} in the Insert state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4383 Or you can use the MULE menu on the menubar.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4384 @item C-z
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4385 In Insert and Replace states, prepare Viper to accept the next command and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4386 execute it as if Viper was in Vi state. Then return to Insert state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4387
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4388 In Vi state, switch to Emacs state; in Emacs state, switch to Vi state.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4389 @item C-c \
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4390 Switches to Vi state for the duration of a single command. Then goes back
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4391 to the original Viper state. Works from Vi, Insert, Replace, and Emacs states.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4392 @item C-x0
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4393 Close Window
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4394 @item C-x1
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4395 Close Other Windows
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4396 @item C-x2
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4397 Split Window
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4398 @item C-xo
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4399 Move among windows
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4400 @item C-xC-f
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4401 Emacs find-file, useful in Insert state
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4402 @item C-y
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4403 Put back the last killed text. Similar to Vi's @kbd{p}, but also works in
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4404 Insert and Replace state. This command doesn't work in Vi command state,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4405 since this binding is taken for something else.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4406 @item M-y
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4407 Undoes the last @kbd{C-y} and puts another kill from the kill ring.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4408 Using this command, you can try may different kills until you find the one
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4409 you need.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4410 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4411 @kindex @kbd{M-y}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4412 @kindex @kbd{C-y}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4413 @kindex @kbd{C-xC-f}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4414 @kindex @kbd{C-xo}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4415 @kindex @kbd{C-x2}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4416 @kindex @kbd{C-x1}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4417 @kindex @kbd{C-x0}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4418 @kindex @kbd{C-z}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4419 @kindex @kbd{C-\}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4420 @kindex @kbd{C-c\}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4421
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4422 @node Mouse-bound Commands,,,Commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4423 @section Mouse-bound Commands
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4424
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4425 The following two mouse actions are normally bound to special search and
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4426 insert commands in of Viper:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4427
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4428 @table @kbd
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4429 @item S-Mouse-1
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4430 Holding Shift and clicking mouse button 1 will
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4431 initiate search for
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4432 a region under the mouse pointer.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4433 This command can take a prefix argument. Note: Viper sets this
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4434 binding only if this mouse action is not
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4435 already bound to something else.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4436 @xref{Viper Specials}, for more information.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4437
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4438 @item S-Mouse-2
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4439 Holding Shift and clicking button 2 of the mouse will
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4440 insert a region surrounding the mouse pointer.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4441 This command can also take a prefix argument.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4442 Note: Viper sets this binding only if this mouse action is not
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4443 already bound to something else.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4444 @xref{Viper Specials}, for more details.@refill
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4445 @end table
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4446 @kindex @kbd{S-Mouse-1}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4447 @kindex @kbd{S-Mouse-2}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4448 @kindex @kbd{meta button1up}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4449 @kindex @kbd{meta button2up}
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4450
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4451 @node Acknowledgments,,,Top
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4452 @comment node-name, next, previous, up
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4453 @unnumbered Acknowledgments
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4454
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4455 Viper, formerly known as VIP-19, was written by Michael Kifer. Viper is
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4456 based on the original VIP package by Masahiko Sato and on its enhancement,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4457 VIP 4.4, by Aamod Sane. This manual is an adaptation of the manual for VIP
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4458 4.4, which, in turn, was based on Sato's manual for VIP 3.5.
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4459
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4460 Many contributors on the Net pointed out bugs and suggested a number of
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4461 useful features. Scott Bronson and Samuel Padgett contributed patches that
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4462 were incorporated in this code. Here is a hopefully complete list of
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4463 contributors:
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4464
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4465 @example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4466 aaronl@@vitelus.com (Aaron Lehmann),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4467 ahg@@panix.com (Al Gelders),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4468 amade@@diagram.fr (Paul-Bernard Amade),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4469 ascott@@fws214.intel.com (Andy Scott),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4470 bronson@@trestle.com (Scott Bronson),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4471 cook@@biostat.wisc.edu (Tom Cook),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4472 csdayton@@midway.uchicago.edu (Soren Dayton),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4473 dave@@hellgate.utah.edu,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4474 dm@@scs.cs.nyu.edu (David Mazieres),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4475 dominik@@strw.LeidenUniv.nl (Carsten Dominik),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4476 dwallach@@cs.princeton.edu (Dan Wallach),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4477 dwight@@toolucky.llnl.gov (Dwight Shih),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4478 dxc@@xprt.net (David X Callaway),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4479 edmonds@@edmonds.home.cs.ubc.ca (Brian Edmonds),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4480 gin@@mo.msk.ru (Golubev I.N.),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4481 gviswana@@cs.wisc.edu (Guhan Viswanathan),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4482 gvr@@halcyon.com (George V.@: Reilly),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4483 hatazaki@@bach.convex.com (Takao Hatazaki),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4484 hpz@@ibmhpz.aug.ipp-garching.mpg.de (Hans-Peter Zehrfeld),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4485 irie@@t.email.ne.jp (Irie Tetsuya),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4486 jackr@@dblues.engr.sgi.com (Jack Repenning),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4487 jamesm@@bga.com (D.J.@: Miller II),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4488 jjm@@hplb.hpl.hp.com (Jean-Jacques Moreau),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4489 jl@@cse.ogi.edu (John Launchbury),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4490 jobrien@@hchp.org (John O'Brien),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4491 johnw@@borland.com (John Wiegley),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4492 kanze@@gabi-soft.fr (James Kanze),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4493 kin@@isi.com (Kin Cho),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4494 kwzh@@gnu.org (Karl Heuer),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4495 lindstro@@biostat.wisc.edu (Mary Lindstrom),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4496 lektu@@terra.es (Juanma Barranquero),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4497 lennart.borgman.073@@student.lu.se (Lennart Borgman),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4498 minakaji@@osaka.email.ne.jp (Mikio Nakajima),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4499 Mark.Bordas@@East.Sun.COM (Mark Bordas),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4500 meyering@@comco.com (Jim Meyering),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4501 martin@@xemacs.org (Martin Buchholz),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4502 mbutler@@redfernnetworks.com (Malcolm Butler),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4503 mveiga@@dit.upm.es (Marcelino Veiga Tuimil),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4504 paulk@@summit.esg.apertus.com (Paul Keusemann),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4505 pfister@@cs.stonybrook.edu (Hanspeter Pfister),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4506 phil_brooks@@MENTORG.COM (Phil Brooks),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4507 pogrell@@informatik.hu-berlin.de (Lutz Pogrell),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4508 pradyut@@cs.uchicago.edu (Pradyut Shah),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4509 roderick@@argon.org (Roderick Schertler),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4510 rxga@@ulysses.att.com,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4511 sawdey@@lcse.umn.edu (Aaron Sawdey),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4512 simonb@@prl.philips.co.uk (Simon Blanchard),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4513 spadgett1@@nc.rr.com (Samuel Padgett),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4514 stephen@@farrell.org (Stephen Farrell),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4515 storm@@cua.dk (Kim F. Storm),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4516 sudish@@MindSpring.COM (Sudish Joseph),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4517 schwab@@issan.informatik.uni-dortmund.de (Andreas Schwab)
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4518 terra@@diku.dk (Morten Welinder),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4519 thanh@@informatics.muni.cz (Han The Thanh),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4520 toma@@convex.convex.com,
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4521 vrenjak@@sun1.racal.com (Milan Vrenjak),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4522 whicken@@dragon.parasoft.com (Wendell Hicken),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4523 zapman@@cc.gatech.edu (Jason Zapman II),
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4524 @end example
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4525
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4526 @node GNU Free Documentation License,,, Top
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4527 @appendix GNU Free Documentation License
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4528 @include doclicense.texi
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4529
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4530 @node Key Index,Function Index,,Top
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4531 @comment node-name, next, previous, up
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4532 @unnumbered Key Index
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4533
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4534 @printindex ky
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4535
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4536 @node Function Index,Variable Index,Key Index,Top
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4537 @comment node-name, next, previous, up
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4538 @unnumbered Function Index
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4539
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4540 @printindex fn
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4541
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4542 @node Variable Index,Package Index,Function Index,Top
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4543 @comment node-name, next, previous, up
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4544 @unnumbered Variable Index
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4545
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4546 @printindex vr
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4547
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4548 @node Package Index,Concept Index,Variable Index,Top
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4549 @comment node-name, next, previous, up
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4550 @unnumbered Package Index
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4551
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4552 @printindex pg
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4553
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4554 @node Concept Index,,Package Index,Top
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4555 @comment node-name, next, previous, up
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4556 @unnumbered Concept Index
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4557
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4558 @printindex cp
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4559
d3d86492715a Move here from ../../man
Glenn Morris <rgm@gnu.org>
parents:
diff changeset
4560 @bye