25853
|
1 % ViperCard -- The Reference Card for Viper under GNU Emacs 20 and XEmacs 20
|
|
2 %**start of header
|
|
3 \newcount\columnsperpage
|
|
4
|
|
5 % This file can be printed with 1 or 2 columns per page (see below).
|
|
6 % Specify how many you want here. Nothing else needs to be changed.
|
|
7
|
|
8 \columnsperpage=2
|
|
9
|
|
10 % Copyright (c) 1995, 1996, 1997 Free Software Foundation, Inc.
|
|
11
|
|
12 % This file is part of GNU Emacs.
|
|
13
|
|
14 % This file is distributed in the hope that it will be useful,
|
|
15 % but WITHOUT ANY WARRANTY. No author or distributor
|
|
16 % accepts responsibility to anyone for the consequences of using it
|
|
17 % or for whether it serves any particular purpose or describes
|
|
18 % any piece of software unless they say so in writing. Refer to the
|
|
19 % GNU Emacs General Public License for full details.
|
|
20 %
|
|
21 % Permission is granted to copy, modify and redistribute this source
|
|
22 % file provided the copyright notice and permission notices are
|
|
23 % preserved on all copies.
|
|
24 %
|
|
25 % Permission is granted to process this file through TeX and print the
|
|
26 % results, provided the printed document carries copyright and
|
|
27 % permission notices identical to the ones below.
|
|
28
|
|
29 % This file is intended to be processed by plain TeX (TeX82).
|
|
30 %
|
|
31 % The final reference card has six columns, three on each side.
|
|
32 % This file can be used to produce it in any of three ways:
|
|
33 % 1 column per page
|
|
34 % produces six separate pages, each of which needs to be reduced to 80%.
|
|
35 % This gives the best resolution.
|
|
36 % 2 columns per page
|
|
37 % produces three already-reduced pages.
|
|
38 % You will still need to cut and paste.
|
|
39 % 3 columns per page
|
|
40 % produces two pages which must be printed sideways to make a
|
|
41 % ready-to-use 8.5 x 11 inch reference card.
|
|
42 % For this you need a dvi device driver that can print sideways.
|
|
43 % Which mode to use is controlled by setting \columnsperpage above.
|
|
44 %
|
|
45 % Author of Viper:
|
|
46 % Michael Kifer
|
|
47 % email: kifer@cs.sunysb.edu
|
|
48 %
|
|
49 % Author of VIP 4.3:
|
|
50 % Aamod Sane
|
|
51 % email: sane@cs.uiuc.edu
|
|
52 %
|
|
53 % Author of VIP 3.5:
|
|
54 % Masahiko Sato
|
|
55 % email: ms@sail.stanford.edu
|
|
56 %
|
|
57 % The original TeX code for formatting the reference card was written by:
|
|
58 % Stephen Gildea
|
|
59 % UUCP: mit-erl!gildea
|
|
60 % email: gildea@erl.mit.edu
|
|
61
|
|
62
|
|
63 \def\versionnumber{3.0}
|
|
64 \def\year{1997}
|
|
65 \def\version{August \year\ v\versionnumber}
|
|
66
|
|
67 \def\shortcopyrightnotice{\vskip 1ex plus 2 fill
|
|
68 \centerline{\small \copyright\ \year\ Free Software Foundation, Inc.
|
|
69 Permissions on back. v\versionnumber}}
|
|
70
|
|
71 \def\copyrightnotice{
|
|
72 %\vskip 1ex plus 2 fill\begingroup\small
|
|
73 \vskip 1ex \begingroup\small
|
|
74 \centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}
|
|
75 \centerline{by Michael Kifer, Viper \version}
|
|
76 \centerline{by Aamod Sane, VIP version 4.3}
|
|
77 \centerline{by Masahiko Sato, VIP version 3.5}
|
|
78
|
|
79 Permission is granted to make and distribute copies of
|
|
80 this card provided the copyright notice and this permission notice
|
|
81 are preserved on all copies.
|
|
82
|
|
83 For copies of the GNU Emacs manual, write to the Free Software
|
|
84 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
85
|
|
86 \endgroup}
|
|
87
|
|
88 % make \bye not \outer so that the \def\bye in the \else clause below
|
|
89 % can be scanned without complaint.
|
|
90 \def\bye{\par\vfill\supereject\end}
|
|
91
|
|
92 \newdimen\intercolumnskip
|
|
93 \newbox\columna
|
|
94 \newbox\columnb
|
|
95
|
|
96 \def\ncolumns{\the\columnsperpage}
|
|
97
|
|
98 \message{[\ncolumns\space
|
|
99 column\if 1\ncolumns\else s\fi\space per page]}
|
|
100
|
|
101 \def\scaledmag#1{ scaled \magstep #1}
|
|
102
|
|
103 % This multi-way format was designed by Stephen Gildea
|
|
104 % October 1986.
|
|
105 % Slightly modified by Masahiko Sato, September 1987.
|
|
106 \if 1\ncolumns
|
|
107 \hsize 4in
|
|
108 \vsize 10in
|
|
109 %\voffset -.7in
|
|
110 \voffset -.57in
|
|
111 \font\titlefont=\fontname\tenbf \scaledmag3
|
|
112 \font\headingfont=\fontname\tenbf \scaledmag2
|
|
113 \font\miniheadingfont=\fontname\tenbf \scaledmag1 % masahiko
|
|
114 \font\smallfont=\fontname\sevenrm
|
|
115 \font\smallsy=\fontname\sevensy
|
|
116
|
|
117 \footline{\hss\folio}
|
|
118 \def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}
|
|
119 \else
|
|
120 %\hsize 3.2in
|
|
121 %\vsize 7.95in
|
|
122 \hsize 3.41in % masahiko
|
|
123 \vsize 8in % masahiko
|
|
124 \hoffset -.75in
|
|
125 \voffset -.745in
|
|
126 \font\titlefont=cmbx10 \scaledmag2
|
|
127 \font\headingfont=cmbx10 \scaledmag1
|
|
128 \font\miniheadingfont=cmbx10 % masahiko
|
|
129 \font\smallfont=cmr6
|
|
130 \font\smallsy=cmsy6
|
|
131 \font\eightrm=cmr8
|
|
132 \font\eightbf=cmbx8
|
|
133 \font\eightit=cmti8
|
|
134 \font\eightsl=cmsl8
|
|
135 \font\eighttt=cmtt8
|
|
136 \font\eightsy=cmsy8
|
|
137 \textfont0=\eightrm
|
|
138 \textfont2=\eightsy
|
|
139 \def\rm{\eightrm}
|
|
140 \def\bf{\eightbf}
|
|
141 \def\it{\eightit}
|
|
142 \def\sl{\eightsl} % masahiko
|
|
143 \def\tt{\eighttt}
|
|
144 \normalbaselineskip=.8\normalbaselineskip
|
|
145 \normallineskip=.8\normallineskip
|
|
146 \normallineskiplimit=.8\normallineskiplimit
|
|
147 \normalbaselines\rm %make definitions take effect
|
|
148
|
|
149 \if 2\ncolumns
|
|
150 \let\maxcolumn=b
|
|
151 \footline{\hss\rm\folio\hss}
|
|
152 \def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}}
|
|
153 \else \if 3\ncolumns
|
|
154 \let\maxcolumn=c
|
|
155 \nopagenumbers
|
|
156 \else
|
|
157 \errhelp{You must set \columnsperpage equal to 1, 2, or 3.}
|
|
158 \errmessage{Illegal number of columns per page}
|
|
159 \fi\fi
|
|
160
|
|
161 %\intercolumnskip=.46in
|
|
162 \intercolumnskip=.19in % masahiko .19x4 + 3.41x3 = 10.99
|
|
163 \def\abc{a}
|
|
164 \output={%
|
|
165 % This next line is useful when designing the layout.
|
|
166 %\immediate\write16{Column \folio\abc\space starts with \firstmark}
|
|
167 \if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
|
|
168 \else\if a\abc
|
|
169 \global\setbox\columna\columnbox \global\def\abc{b}
|
|
170 %% in case we never use \columnb (two-column mode)
|
|
171 \global\setbox\columnb\hbox to -\intercolumnskip{}
|
|
172 \else
|
|
173 \global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
|
|
174 \def\multicolumnformat{\shipout\vbox{\makeheadline
|
|
175 \hbox{\box\columna\hskip\intercolumnskip
|
|
176 \box\columnb\hskip\intercolumnskip\columnbox}
|
|
177 \makefootline}\advancepageno}
|
|
178 \def\columnbox{\leftline{\pagebody}}
|
|
179
|
|
180 \def\bye{\par\vfill\supereject
|
|
181 \if a\abc \else\null\vfill\eject\fi
|
|
182 \if a\abc \else\null\vfill\eject\fi
|
|
183 \end}
|
|
184 \fi
|
|
185
|
|
186 % we won't be using math mode much, so redefine some of the characters
|
|
187 % we might want to talk about
|
|
188 \catcode`\^=12
|
|
189 \catcode`\_=12
|
|
190
|
|
191 \chardef\\=`\\
|
|
192 \chardef\{=`\{
|
|
193 \chardef\}=`\}
|
|
194
|
|
195 \hyphenation{mini-buf-fer}
|
|
196
|
|
197 \parindent 0pt
|
|
198 \parskip 1ex plus .5ex minus .5ex
|
|
199
|
|
200 \def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}
|
|
201
|
|
202 \outer\def\newcolumn{\vfill\eject}
|
|
203
|
|
204 \outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex}
|
|
205
|
|
206 \outer\def\section#1{\par\filbreak
|
|
207 \vskip 3ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
|
|
208 \vskip 2ex plus 1ex minus 1.5ex}
|
|
209
|
|
210 % masahiko
|
|
211 \outer\def\subsection#1{\par\filbreak
|
|
212 \vskip 2ex plus 2ex minus 2ex {\miniheadingfont #1}\mark{#1}%
|
|
213 \vskip 1ex plus 1ex minus 1.5ex}
|
|
214
|
|
215 \newdimen\keyindent
|
|
216
|
|
217 \def\beginindentedkeys{\keyindent=1em}
|
|
218 \def\endindentedkeys{\keyindent=0em}
|
|
219 \endindentedkeys
|
|
220
|
|
221 \def\paralign{\vskip\parskip\halign}
|
|
222
|
|
223 \def\<#1>{$\langle${\rm #1}$\rangle$}
|
|
224
|
|
225 \def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows
|
|
226
|
|
227 \def\beginexample{\par\leavevmode\begingroup
|
|
228 \obeylines\obeyspaces\parskip0pt\tt}
|
|
229 {\obeyspaces\global\let =\ }
|
|
230 \def\endexample{\endgroup}
|
|
231
|
|
232 \def\key#1#2{\leavevmode\hbox to \hsize{\vtop
|
|
233 {\hsize=.75\hsize\rightskip=1em
|
|
234 \hskip\keyindent\relax#1}\kbd{#2}\hfil}}
|
|
235
|
|
236 \newbox\metaxbox
|
|
237 \setbox\metaxbox\hbox{\kbd{M-x }}
|
|
238 \newdimen\metaxwidth
|
|
239 \metaxwidth=\wd\metaxbox
|
|
240
|
|
241 \def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize
|
|
242 {\hskip\keyindent\relax#1\hfil}%
|
|
243 \hskip -\metaxwidth minus 1fil
|
|
244 \kbd{#2}\hfil}}
|
|
245
|
|
246 \def\fivecol#1#2#3#4#5{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad
|
|
247 &\kbd{#3}\quad&\kbd{#4}\quad&\kbd{#5}\cr}
|
|
248
|
|
249 \def\fourcol#1#2#3#4{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad
|
|
250 &\kbd{#3}\quad&\kbd{#4}\quad\cr}
|
|
251
|
|
252 \def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad
|
|
253 &\kbd{#3}\quad\cr}
|
|
254
|
|
255 \def\twocol#1#2{\hskip\keyindent\relax\kbd{#1}\hfil&\kbd{#2}\quad\cr}
|
|
256
|
|
257 \def\twocolkey#1#2#3#4{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad&\relax#3\hfil&\kbd{#4}\quad\cr}
|
|
258
|
|
259 %**end of header
|
|
260
|
|
261 \beginindentedkeys
|
|
262
|
|
263 \title{ViperCard: Viper Reference Pal}
|
|
264
|
|
265 \centerline{(Version 3.0 (Polyglot) for Emacs 20 and XEmacs 20)}
|
|
266
|
|
267 %\copyrightnotice
|
|
268
|
|
269 \section{Loading Viper}
|
|
270
|
|
271 Just type \kbd{M-x viper-mode} followed by \kbd{RET}
|
|
272
|
|
273 OR put
|
|
274
|
|
275 (setq viper-mode t)
|
|
276 (require 'viper)
|
|
277
|
|
278 in .emacs
|
|
279
|
|
280 \section{Viper States}
|
|
281
|
|
282 Viper has four states: {\it emacs state}, {\it vi state}, {\it insert state},
|
|
283 {\it replace state}.
|
|
284 Mode line tells you which state you are in.
|
|
285 In emacs state you can do all the normal GNU Emacs editing.
|
|
286 This card explains only vi state and insert state (replace state is similar
|
|
287 to insert state).
|
|
288 {\bf GNU Emacs Reference Card} explains emacs state.
|
|
289 You can switch states as follows.
|
|
290
|
|
291 \key{from emacs state to vi state}{C-z}
|
|
292 \key{from vi state to emacs state}{C-z}
|
|
293 \key{from vi state to emacs state for 1 command}{$\backslash$}
|
|
294 \metax{from vi state to insert state}{i, I, a, A, o, O}
|
|
295 \metax{from vi state to replace state}{c, C, R}
|
|
296 \key{from insert or replace state to vi state}{ESC}
|
|
297 \key{from insert state to vi state for 1 command}{C-z}
|
|
298
|
|
299
|
|
300 \section{Insert Mode}
|
|
301 You can do editing in insert state.
|
|
302
|
|
303 \metax{go back to vi state}{ESC}
|
|
304 \metax{delete previous character}{C-h, DEL}
|
|
305 \key{delete previous word}{C-w}
|
|
306 \key{delete line word}{C-u}
|
|
307 \key{indent shiftwidth forward}{C-t}
|
|
308 \key{indent shiftwidth backward}{C-d}
|
|
309 \key{delete line word}{C-u}
|
|
310 \key{quote following character}{C-v}
|
|
311 \key{emulate Meta key in emacs state}{C-$\backslash$}
|
|
312 \key{escape to Vi state for one command}{C-z}
|
|
313
|
|
314 \vskip 2mm
|
|
315
|
|
316 {\bf The rest of this card explains commands in {\bf vi state}.}
|
|
317
|
|
318 \section{Getting Information on Viper}
|
|
319
|
|
320 Execute info command by typing \kbd{M-x info} and select menu item
|
|
321 \kbd{viper}. Also:
|
|
322
|
|
323 \key{describe function attached to the key {\it x}}{$\backslash$ C-h k {\it x}}
|
|
324
|
|
325 \section{Leaving Emacs}
|
|
326
|
|
327 \metax{suspend Emacs}{:st {\rm or} :su}
|
|
328 \metax{exit Emacs permanently}{C-xC-c}
|
|
329 \metax{exit current file}{:wq {\rm or} :q}
|
|
330
|
|
331 \shortcopyrightnotice
|
|
332
|
|
333 \section{Error Recovery}
|
|
334
|
|
335 \metax{abort command}{C-c (user level = 1)}
|
|
336 \metax{abort command}{C-g (user level > 1)}
|
|
337 \key{redraw messed up screen}{C-l}
|
|
338 \metax{{\bf recover} after system crash}{:rec file}
|
|
339 \metax{restore a buffer }{:e!\ {\rm or} M-x revert-buffer}
|
|
340
|
|
341
|
|
342 \section{Counts}
|
|
343
|
|
344 Most commands in vi state accept a {\it count} which can be supplied as a
|
|
345 prefix to the commands. In most cases, if a count is given, the
|
|
346 command is executed that many times. E.g., \kbd{5 d d} deletes 5
|
|
347 lines.
|
|
348
|
|
349 \section{Registers}
|
|
350
|
|
351 There are 26 registers (\kbd{a} to \kbd{z}) that can store texts
|
|
352 and marks.
|
|
353 You can append a text at the end of a register (say \kbd{x}) by
|
|
354 specifying the register name in capital letter (say \kbd{X}).
|
|
355 There are also 9 read only registers (\kbd{1} to \kbd{9}) that store
|
|
356 up to 9 previous changes.
|
|
357 We will use {\it x\/} to denote a register.
|
|
358 \section{Entering Insert Mode}
|
|
359
|
|
360 \key{{\bf insert} at point}{i}
|
|
361 \key{{\bf append} after cursor}{a}
|
|
362 \key{{\bf insert} before first non-white}{I}
|
|
363 \key{{\bf append} at end of line}{A}
|
|
364 \key{{\bf open} line below}{o}
|
|
365 \key{{\bf open} line above}{O}
|
|
366
|
|
367 \section{Buffers and Windows}
|
|
368
|
|
369 \key{move cursor to {\bf next} window}{C-x o}
|
|
370 \key{delete current window}{C-x 0}
|
|
371 \key{delete other windows}{C-x 1}
|
|
372 \key{split current window into two windows}{C-x 2}
|
|
373 \key{{\bf switch} to a buffer in the current window}{C-x {\sl buffer}}
|
|
374 \metax{{\bf switch} to a buffer in another window}{:n, :b, {\rm or} C-x 4 {\sl buf}}
|
|
375 \key{{\bf kill} a buffer}{:q! {\rm or} C-x k}
|
|
376 \key{list existing {\bf buffers}}{:args {\rm or} C-x b}
|
|
377
|
|
378 \section{Files}
|
|
379
|
|
380 \metax{{\bf visit} file in the current window}{v {\sl file} {\rm or} :e {\sl file}}
|
|
381 \key{{\bf visit} file in another window}{V {\sl file}}
|
|
382 \key{{\bf visit} file in another frame}{C-v {\sl file}}
|
|
383 \key{{\bf save} buffer to the associated file}{:w {\rm or} C-xC-s}
|
|
384 \metax{{\bf write} buffer to a specified file}{:w {\sl file} {\rm or} C-xC-w}
|
|
385 \metax{{\bf insert} a specified file at point}{:r {\sl file} {\rm or} C-xi}
|
|
386 \key{{\bf get} information on the current {\bf file}}{C-c g {\rm or} :f}
|
|
387 \key{run the {\bf directory} editor}{:e RET {\rm or} C-xd}
|
|
388
|
|
389 %\shortcopyrightnotice
|
|
390
|
|
391 \section{Viewing the Buffer}
|
|
392
|
|
393 \key{scroll to next screen}{C-f}
|
|
394 \key{scroll to previous screen}{C-b}
|
|
395 \key{scroll {\bf down} half screen}{C-d}
|
|
396 \key{scroll {\bf up} half screen}{C-u}
|
|
397 \key{scroll down one line}{C-e}
|
|
398 \key{scroll up one line}{C-y}
|
|
399
|
|
400 \key{put current line on the {\bf home} line}{z H {\rm or} z RET}
|
|
401 \key{put current line on the {\bf middle} line}{z M {\rm or} z .}
|
|
402 \key{put current line on the {\bf last} line}{z L {\rm or} z -}
|
|
403
|
|
404 \section{Marking and Returning}
|
|
405
|
|
406 \key{{\bf mark} point in register {\it x}}{m {\it x}}
|
|
407 \key{set mark at buffer beginning}{m <}
|
|
408 \key{set mark at buffer end}{m >}
|
|
409 \key{set mark at point}{m .}
|
|
410 \key{jump to mark}{m ,}
|
|
411 \key{exchange point and mark}{` `}
|
|
412 \key{... and skip to first non-white on line}{' '}
|
|
413 \key{go to mark {\it x}}{` {\it x}}
|
|
414 \key{... and skip to first non-white on line}{' {\it x}}
|
|
415 \key{view contents of marker {\it x}}{[ {\it x}}
|
|
416 \key{view contents of register {\it x}}{] {\it x}}
|
|
417
|
|
418 \section{Macros}
|
|
419
|
|
420 Emacs style macros:
|
|
421
|
|
422 \key{start remembering keyboard macro}{C-x (}
|
|
423 \key{finish remembering keyboard macro}{C-x )}
|
|
424 \key{call last keyboard macro}{*}
|
|
425
|
|
426 \key{start remembering keyboard macro}{@ \#}
|
|
427 \key{finish macro and put into register {\it x}}{@ {\it x}}
|
|
428 \key{execute macro stored in register {\it x}}{@ {\it x}}
|
|
429 \key{repeat last @{\it x} command}{@ @}
|
|
430
|
|
431 \key{Pull last macro into register {\it x}}{@ ! {\it x}}
|
|
432
|
|
433 Vi-style macros (keys to be hit in quick succession):
|
|
434
|
|
435 \key{define Vi-style macro for Vi state}{:map}
|
|
436 \key{define Vi-style macro for Insert state}{:map!}
|
|
437
|
|
438 \key{toggle case-sensitive search}{//}
|
|
439 \key{toggle regular expression search}{///}
|
|
440 \key{toggle `\%' to ignore parentheses inside comments}{\%\%\%}
|
|
441
|
|
442
|
|
443 \section{Motion Commands}
|
|
444
|
|
445 \key{go backward one character}{h {\rm or} C-h}
|
|
446 \key{go forward one character}{l}
|
|
447 \metax{next line keeping the column}{j {\rm or} LF {\rm or} C-n}
|
|
448 \key{previous line keeping the column}{k}
|
|
449 \metax{next line at first non-white}{+ {\rm or} RET {\rm or} C-p}
|
|
450 \key{previous line at first non-white}{-}
|
|
451
|
|
452 \key{beginning of line}{0}
|
|
453 \key{first non-white on line}{^}
|
|
454 \key{end of line}{\$}
|
|
455 \key{go to {\it n}-th column on line}{{\it n} |}
|
|
456
|
|
457 \key{go to {\it n}-th line}{{\it n} G}
|
|
458 \key{go to last line}{G}
|
|
459 \key{find matching parenthesis for \kbd{()}, \kbd{\{\}} and \kbd{[]}}{\%}
|
|
460
|
|
461 \key{go to {\bf home} window line}{H}
|
|
462 \key{go to {\bf middle} window line}{M}
|
|
463 \key{go to {\bf last} window line}{L}
|
|
464
|
|
465 \subsection{Words, Sentences, Paragraphs, Headings}
|
|
466
|
|
467 \key{forward {\bf word}}{w {\rm or} W}
|
|
468 \key{{\bf backward} word}{b {\rm or} B}
|
|
469 \key{{\bf end} of word}{e {\rm or} E}
|
|
470
|
|
471 In the case of capital letter commands, a word is delimited by a
|
|
472 non-white character.
|
|
473
|
|
474 \key{forward sentence}{)}
|
|
475 \key{backward sentence}{(}
|
|
476
|
|
477 \key{forward paragraph}{\}}
|
|
478 \key{backward paragraph}{\{}
|
|
479
|
|
480 \key{forward heading}{]]}
|
|
481 \key{backward heading}{[[}
|
|
482 \key{end of heading}{[]}
|
|
483
|
|
484 \subsection{Find Characters on the Line}
|
|
485
|
|
486 \key{{\bf find} {\it c} forward on line}{f {\it c}}
|
|
487 \key{{\bf find} {\it c} backward on line}{F {\it c}}
|
|
488 \key{up {\bf to} {\it c} forward on line}{t {\it c}}
|
|
489 \key{up {\bf to} {\it c} backward on line}{T {\it c}}
|
|
490 \key{repeat previous \kbd{f}, \kbd{F}, \kbd{t} or \kbd{T}}{;}
|
|
491 \key{... in the opposite direction}{,}
|
|
492
|
|
493 %\newcolumn
|
|
494 %\title{Viper Quick Reference Card}
|
|
495
|
|
496 \section{Searching and Replacing}
|
|
497
|
|
498 \key{search forward for {\sl pat}}{/ {\sl pat}}
|
|
499 \key{search backward with previous {\sl pat}}{?\ RET}
|
|
500 \key{search forward with previous {\sl pat}}{/ RET}
|
|
501 \key{search backward for {\sl pat}}{?\ {\sl pat}}
|
|
502 \key{repeat previous search}{n}
|
|
503 \key{... in the opposite direction}{N}
|
|
504
|
|
505 \key{{\bf query} replace}{Q}
|
|
506 \key{{\bf replace} a character by another character {\it c}}{r {\it c}}
|
|
507 \key{{\bf overwrite} {\it n} lines}{{\it n} R}
|
|
508
|
|
509 \metax{{\bf buffer} search (if enabled)}{g {\it move command}}
|
|
510
|
|
511 \section{Modifying Commands}
|
|
512
|
|
513 Most commands that operate on text regions accept the motion commands,
|
|
514 to describe regions. They also accept the Emacs region specifications
|
|
515 {\bf r} and {\bf R}. {\bf r} describes the region between {\it point}
|
|
516 and {\it mark}, and {\bf R} describes whole lines in that region.
|
|
517 Motion commands are classified into {\it point commands} and
|
|
518 {\it line commands}. In the case of line commands, whole lines will
|
|
519 be affected by the command.
|
|
520
|
|
521 The point commands are as follows:
|
|
522
|
|
523 \hskip 5ex
|
|
524 \kbd{h l 0 ^ \$ w W b B e E ( ) / ?\ ` f F t T \% ; ,}
|
|
525
|
|
526 The line commands are as follows:
|
|
527
|
|
528 \hskip 5ex
|
|
529 \kbd{j k + - H M L \{ \} G '}
|
|
530
|
|
531 These region specifiers will be referred to as {\it m} below.
|
|
532
|
|
533 \subsection{Delete/Yank/Change Commands}
|
|
534
|
|
535 \paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\tabskip=0pt&#\cr
|
|
536 \fourcol{}{{\bf delete}}{{\bf yank}}{{\bf change}}
|
|
537 \fourcol{region determined by {\it m}}{d {\it m}}{y {\it m}}{c {\it m}}
|
|
538 \fourcol{... into register {\it x}}{" {\it x\/} d {\it m}}{" {\it x\/} y {\it m}}{" {\it x\/} c {\it m}}
|
|
539 \fourcol{a line}{d d}{Y {\rm or} y y}{c c}
|
|
540 \fourcol{current {\bf region}}{d r}{y r}{c r}
|
|
541 \fourcol{expanded {\bf region}}{d R}{y R}{c R}
|
|
542 \fourcol{to end of line}{D}{y \$}{c \$}
|
|
543 \fourcol{a character after point}{x}{y l}{c l}
|
|
544 \fourcol{a character before point}{DEL}{y h}{c h}
|
|
545 }
|
|
546
|
|
547 \vskip 2ex
|
|
548 \key{Overwrite {\it n} lines}{{\it n} R}
|
|
549
|
|
550 \subsection{Put Back Commands}
|
|
551
|
|
552 Deleted/yanked/changed text can be put back by the following commands.
|
|
553
|
|
554 \key{{\bf Put} back at point/above line}{P}
|
|
555 \key{... from register {\it x}}{" {\it x\/} P}
|
|
556 \key{{\bf put} back after point/below line}{p}
|
|
557 \key{... from register {\it x}}{" {\it x\/} p}
|
|
558
|
|
559 \subsection{Repeating and Undoing Modifications}
|
|
560
|
|
561 \key{{\bf undo} last change}{u {\rm or} :und}
|
|
562 \key{repeat last change}{.\ {\rm (dot)}}
|
|
563
|
|
564 Undo is undoable by \kbd{u} and repeatable by \kbd{.}.
|
|
565 For example, \kbd{u...} will undo 4 previous changes.
|
|
566 A \kbd{.} after \kbd{5dd} is equivalent to \kbd{5dd},
|
|
567 while \kbd{3.} after \kbd{5dd} is equivalent to \kbd{3dd}.
|
|
568
|
|
569 \section{Miscellaneous Commands}
|
|
570
|
|
571 \endindentedkeys
|
|
572
|
|
573 \paralign to \hsize{#\tabskip=5pt plus 1 fil&#\tabskip=0pt&#\tabskip=0pt&#\tabskip=0pt&#\cr
|
|
574 \fivecol{}{{\bf shift left}}{{\bf shift right}}{{\bf filter shell command}}{{\bf indent}}
|
|
575 \fivecol{region}{< {\it m}}{> {\it m}}{!\ {\it m\/} {\sl shell-com}}{= {\it m}}
|
|
576 \fivecol{line}{< <}{> >}{!\ !\ {\sl shell-com}}{= =}
|
|
577 }
|
|
578
|
|
579 \key{{\bf join} lines}{J}
|
|
580 \key{toggle case (takes count)}{\~{}}
|
|
581
|
|
582 \key{view register {\it x}}{] {\it x}}
|
|
583 \key{view marker {\it x}}{] {\it x}}
|
|
584
|
|
585 \key{lowercase region}{\# c {\it m}}
|
|
586 \key{uppercase region}{\# C {\it m}}
|
|
587 \key{execute last keyboard macro on each line in the region}{\# g {\it m}}
|
|
588
|
|
589 \key{insert specified string for each line in the region}{\# q {\it m}}
|
|
590 \key{check spelling of the words in the region}{\# s {\it m}}
|
|
591
|
|
592 \key{repeat previous ex substitution}{\&}
|
|
593 \key{change to previous file}{C-^}
|
|
594
|
|
595 \key{Viper Meta key}{_}
|
|
596
|
|
597 \section{Customization}
|
|
598
|
|
599 By default, search is case sensitive.
|
|
600 You can change this by including the following line in your \kbd{\~{}/.vip} file.
|
|
601
|
|
602 \hskip 5ex
|
|
603 \kbd{(setq viper-case-fold-search t)}
|
|
604
|
|
605 The following is a subset of the variety of
|
|
606 options available for customizing Viper.
|
|
607 See the Viper manual for details on these and other options.
|
|
608
|
|
609 \beginindentedkeys
|
|
610
|
|
611 \paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
|
|
612 \twocol{{\bf variable}}{{\bf default value}}
|
|
613 \twocol{viper-search-wrap-around}{t}
|
|
614 \twocol{viper-case-fold-search}{nil}
|
|
615 \twocol{viper-re-search}{t}
|
|
616 \twocol{viper-re-replace}{t}
|
|
617 \twocol{viper-re-query-replace}{t}
|
|
618 \twocol{viper-auto-indent}{nil}
|
|
619 \twocol{viper-shift-width}{8}
|
|
620 \twocol{viper-tags-file-name}{"TAGS"}
|
|
621 \twocol{viper-no-multiple-ESC}{t}
|
|
622 \twocol{viper-ex-style-motion}{t}
|
|
623 \twocol{viper-always}{t}
|
|
624 \twocol{viper-custom-file-name}{"\~{}/.vip"}
|
|
625 \twocol{ex-find-file-shell}{"csh"}
|
|
626 \twocol{ex-cycle-other-window}{t}
|
|
627 \twocol{ex-cycle-through-non-buffers}{t}
|
|
628 \twocol{blink-matching-paren}{t}
|
|
629 \twocol{buffer-read-only}{{\it buffer dependent}}
|
|
630 }
|
|
631
|
|
632 To bind keys in Vi command state, put lines like these in your
|
|
633 \kbd{\~{}/.vip} file:
|
|
634
|
|
635 \beginexample
|
|
636 (define-key viper-vi-global-user-map "\\C-v" 'scroll-down)
|
|
637 (define-key viper-vi-global-user-map "\\C-cm" 'smail)
|
|
638 \endexample
|
|
639
|
|
640
|
|
641 \newcolumn
|
|
642
|
|
643 \title{Ex Commands in Viper}
|
|
644
|
|
645 In vi state, an Ex command is entered by typing:
|
|
646
|
|
647 \hskip 5ex
|
|
648 \kbd{:\ {\sl ex-command} RET}
|
|
649
|
|
650 \section{Ex Addresses}
|
|
651
|
|
652 \paralign to \hsize{#\tabskip=5pt plus 1 fil&#\tabskip=2pt&#\tabskip=5pt plus 1 fil&#\cr
|
|
653 \twocolkey{current line}{.}{next line with {\sl pat}}{/ {\sl pat} /}
|
|
654 \twocolkey{line {\it n}}{{\it n}}{previous line with {\sl pat}}{?\ {\sl pat} ?}
|
|
655 \twocolkey{last line}{\$}{{\it n\/} line before {\it a}}{{\it a} - {\it n}}
|
|
656 \twocolkey{next line}{+}{{\it a\/} through {\it b}}{{\it a\/} , {\it b}}
|
|
657 \twocolkey{previous line}{-}{line marked with {\it x}}{' {\it x}}
|
|
658 \twocolkey{entire buffer}{\%}{previous context}{' '}
|
|
659 }
|
|
660
|
|
661 Addresses can be specified in front of a command.
|
|
662 For example,
|
|
663
|
|
664 \hskip 5ex
|
|
665 \kbd{:.,.+10m\$}
|
|
666
|
|
667 moves 11 lines below current line to the end of buffer.
|
|
668
|
|
669 \section{Ex Commands}
|
|
670
|
|
671 Avoid Ex text manipulation commands except substitute.
|
|
672 There are better VI equivalents
|
|
673 for all of them. Also note that all Ex commands expand \% to
|
|
674 current file name. To include a \% in the command, escape it with a $\backslash$.
|
|
675 Similarly, \# is replaced by previous file. For Viper, this is the
|
|
676 first file in the {\sl :args} listing for that buffer. This defaults
|
|
677 to the previous file in the VI sense if you have one window.
|
|
678 Ex commands can be made to have history. See the manual for details.
|
|
679
|
|
680 \subsection{Ex Text Commands}
|
|
681
|
|
682 \endindentedkeys
|
|
683
|
|
684 \key{mark lines matching {\sl pat} and execute {\sl cmds} on these lines}{:g /{\sl pat}/ {\sl cmds}}
|
|
685
|
|
686 \key{mark lines {\it not\/} matching {\sl pat} and execute {\sl cmds} on these lines}{:v /{\sl pat}/ {\sl cmds}}
|
|
687
|
|
688
|
|
689 \key{{\bf move} specified lines after {\sl addr}}{:m {\sl addr}}
|
|
690 \key{{\bf copy} specified lines after {\sl addr}}{:co\rm\ (or \kbd{:t})\ \sl addr}
|
|
691 \key{{\bf delete} specified lines [into register {\it x\/}]}{:d {\rm [{\it x\/}]}}
|
|
692 \key{{\bf yank} specified lines [into register {\it x\/}]}{:y {\rm [{\it x\/}]}}
|
|
693 \key{{\bf put} back text [from register {\it x\/}]}{:pu {\rm [{\it x\/}]}}
|
|
694
|
|
695 \key{{\bf substitute} {\sl repl} for first string on line matching {\sl pat}}{:s /{\sl pat}/{\sl repl}/}
|
|
696
|
|
697 \key{repeat last substitution}{:\&}
|
|
698 \key{repeat previous substitute with previous search pattern as {\sl pat}}{:\~{}}
|
|
699
|
|
700 \subsection{Ex File and Shell Commands}
|
|
701
|
|
702 \key{{\bf edit} file}{:e {\sl file}}
|
|
703 \key{reedit messed up current file}{:e!}
|
|
704 \key{edit previous file}{:e\#}
|
|
705 \key{{\bf read} in a file}{:r {\sl file}}
|
|
706 \key{{\bf read} in the output of a shell command}{:r {\sl !command}}
|
|
707 \key{write out specified lines into {\sl file}}{:w {\sl file}}
|
|
708 \key{save all modified buffers, ask confirmation}{:W {\sl file}}
|
|
709 \key{save all modified buffers, no confirmation}{:WW {\sl file}}
|
|
710 \key{write out specified lines at the end of {\sl file}}{:w>> {\sl file}}
|
|
711 \key{{\bf write} to the input of a shell command}{:w {\sl !command}}
|
|
712 \key{write out and then quit}{:wq {\sl file}}
|
|
713
|
|
714 \key{run a sub{\bf shell} in a window}{:sh}
|
|
715 \key{execute shell command {\sl command}}{:!\ {\sl command}}
|
|
716 \key{execute previous shell command with {\it args} appended}{:!! {\sl args}}
|
|
717
|
|
718 \subsection{Ex Miscellaneous Commands}
|
|
719
|
|
720 \key{define a macro {\it x} that expands to {\sl cmd}}{:map {\it x} {\sl cmd}}
|
|
721 \key{remove macro expansion associated with {\it x}}{:unma {\it x}}
|
|
722 \key{define a macro {\it x} that expands to {\sl cmd} in insert state}{:map!\ {\it x} {\sl cmd}}
|
|
723 \key{remove macro expansion associated with {\it x} in insert state}{:unma!\ {\it x}}
|
|
724
|
|
725 \key{print line number}{:.=}
|
|
726 \key{print last line number}{:=}
|
|
727 \key{print {\bf version} number of Viper}{:ve}
|
|
728
|
|
729 \key{shift specified lines to the right}{:>}
|
|
730 \key{shift specified lines to the left}{:<}
|
|
731
|
|
732 \key{{\bf join} lines}{:j}
|
|
733 \key{mark specified line to register {\it x}}{:k {\it x}}
|
|
734 \key{{\bf set} a variable's value}{:se}
|
|
735 \key{find first definition of {\bf tag} {\sl tag}}{:ta {\sl tag}}
|
|
736
|
|
737 \key{Current directory}{:pwd}
|
|
738
|
|
739
|
|
740 \copyrightnotice
|
|
741
|
|
742 \bye
|
|
743
|
|
744 % Local variables:
|
|
745 % compile-command: "tex viperCard"
|
|
746 % End:
|