123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743 |
- % ViperCard -- The Reference Card for Viper under GNU Emacs and XEmacs
- % Copyright (C) 1995-1997, 2001-2012 Free Software Foundation, Inc.
- % Author: Michael Kifer <kifer@cs.sunysb.edu> (Viper)
- % Aamod Sane <sane@cs.uiuc.edu> (VIP 4.3)
- % Masahiko Sato <ms@sail.stanford.edu> (VIP 3.5)
- % This file is part of GNU Emacs.
- % GNU Emacs is free software: you can redistribute it and/or modify
- % it under the terms of the GNU General Public License as published by
- % the Free Software Foundation, either version 3 of the License, or
- % (at your option) any later version.
- % GNU Emacs is distributed in the hope that it will be useful,
- % but WITHOUT ANY WARRANTY; without even the implied warranty of
- % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- % GNU General Public License for more details.
- % You should have received a copy of the GNU General Public License
- % along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
- % This file is intended to be processed by plain TeX (TeX82).
- %
- % The final reference card has six columns, three on each side.
- % This file can be used to produce it in any of three ways:
- % 1 column per page
- % produces six separate pages, each of which needs to be reduced to 80%.
- % This gives the best resolution.
- % 2 columns per page
- % produces three already-reduced pages.
- % You will still need to cut and paste.
- % 3 columns per page
- % produces two pages which must be printed sideways to make a
- % ready-to-use 8.5 x 11 inch reference card.
- % For this you need a dvi device driver that can print sideways.
- % Which mode to use is controlled by setting \columnsperpage.
- %**start of header
- % This file can be printed with 1 or 2 columns per page.
- % Specify how many you want here.
- \newcount\columnsperpage
- \columnsperpage=2
- % PDF output layout. 0 for A4, 1 for letter (US), a `l' is added for
- % a landscape layout.
- \input pdflayout.sty
- \pdflayout=(1)
- \def\versionemacs{21} % version of Emacs this is for
- \def\year{2012} % latest copyright year
- \def\versionxemacs{20} % version of XEmacs this is for
- \def\versionviper{3.0} % version of Viper this is for
- % Nothing else needs to be changed.
- \def\shortcopyrightnotice{\vskip 1ex plus 2 fill
- \centerline{\small \copyright\ \year\ Free Software Foundation, Inc.
- Permissions on back.}}
- \def\copyrightnotice{
- %\vskip 1ex plus 2 fill\begingroup\small
- \vskip 1ex \begingroup\small
- \centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}
- \centerline{by Michael Kifer, Viper \versionviper}
- \centerline{by Aamod Sane, VIP version 4.3}
- \centerline{by Masahiko Sato, VIP version 3.5}
- Permission is granted to make and distribute copies of
- this card provided the copyright notice and this permission notice
- are preserved on all copies.
- For copies of the GNU Emacs manual, see:
- {\tt http://www.gnu.org/software/emacs/\#Manuals}
- \endgroup}
- % make \bye not \outer so that the \def\bye in the \else clause below
- % can be scanned without complaint.
- \def\bye{\par\vfill\supereject\end}
- \newdimen\intercolumnskip
- \newbox\columna
- \newbox\columnb
- \def\ncolumns{\the\columnsperpage}
- \message{[\ncolumns\space
- column\if 1\ncolumns\else s\fi\space per page]}
- \def\scaledmag#1{ scaled \magstep #1}
- % This multi-way format was designed by Stephen Gildea
- % October 1986.
- % Slightly modified by Masahiko Sato, September 1987.
- \if 1\ncolumns
- \hsize 4in
- \vsize 10in
- %\voffset -.7in
- \voffset -.57in
- \font\titlefont=\fontname\tenbf \scaledmag3
- \font\headingfont=\fontname\tenbf \scaledmag2
- \font\miniheadingfont=\fontname\tenbf \scaledmag1 % masahiko
- \font\smallfont=\fontname\sevenrm
- \font\smallsy=\fontname\sevensy
- \footline{\hss\folio}
- \def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}
- \else
- %\hsize 3.2in
- %\vsize 7.95in
- \hsize 3.41in % masahiko
- \vsize 8in % masahiko
- \hoffset -.75in
- \voffset -.745in
- \font\titlefont=cmbx10 \scaledmag2
- \font\headingfont=cmbx10 \scaledmag1
- \font\miniheadingfont=cmbx10 % masahiko
- \font\smallfont=cmr6
- \font\smallsy=cmsy6
- \font\eightrm=cmr8
- \font\eightbf=cmbx8
- \font\eightit=cmti8
- \font\eightsl=cmsl8
- \font\eighttt=cmtt8
- \font\eightsy=cmsy8
- \textfont0=\eightrm
- \textfont2=\eightsy
- \def\rm{\eightrm}
- \def\bf{\eightbf}
- \def\it{\eightit}
- \def\sl{\eightsl} % masahiko
- \def\tt{\eighttt}
- \normalbaselineskip=.8\normalbaselineskip
- \normallineskip=.8\normallineskip
- \normallineskiplimit=.8\normallineskiplimit
- \normalbaselines\rm %make definitions take effect
- \if 2\ncolumns
- \let\maxcolumn=b
- \footline{\hss\rm\folio\hss}
- \def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}}
- \else \if 3\ncolumns
- \let\maxcolumn=c
- \nopagenumbers
- \else
- \errhelp{You must set \columnsperpage equal to 1, 2, or 3.}
- \errmessage{Illegal number of columns per page}
- \fi\fi
- %\intercolumnskip=.46in
- \intercolumnskip=.19in % masahiko .19x4 + 3.41x3 = 10.99
- \def\abc{a}
- \output={%
- % This next line is useful when designing the layout.
- %\immediate\write16{Column \folio\abc\space starts with \firstmark}
- \if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
- \else\if a\abc
- \global\setbox\columna\columnbox \global\def\abc{b}
- %% in case we never use \columnb (two-column mode)
- \global\setbox\columnb\hbox to -\intercolumnskip{}
- \else
- \global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
- \def\multicolumnformat{\shipout\vbox{\makeheadline
- \hbox{\box\columna\hskip\intercolumnskip
- \box\columnb\hskip\intercolumnskip\columnbox}
- \makefootline}\advancepageno}
- \def\columnbox{\leftline{\pagebody}}
- \def\bye{\par\vfill\supereject
- \if a\abc \else\null\vfill\eject\fi
- \if a\abc \else\null\vfill\eject\fi
- \end}
- \fi
- % we won't be using math mode much, so redefine some of the characters
- % we might want to talk about
- \catcode`\^=12
- \catcode`\_=12
- \chardef\\=`\\
- \chardef\{=`\{
- \chardef\}=`\}
- \hyphenation{mini-buf-fer}
- \parindent 0pt
- \parskip 1ex plus .5ex minus .5ex
- \def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}
- \outer\def\newcolumn{\vfill\eject}
- \outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex}
- \outer\def\section#1{\par\filbreak
- \vskip 3ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
- \vskip 2ex plus 1ex minus 1.5ex}
- % masahiko
- \outer\def\subsection#1{\par\filbreak
- \vskip 2ex plus 2ex minus 2ex {\miniheadingfont #1}\mark{#1}%
- \vskip 1ex plus 1ex minus 1.5ex}
- \newdimen\keyindent
- \def\beginindentedkeys{\keyindent=1em}
- \def\endindentedkeys{\keyindent=0em}
- \endindentedkeys
- \def\paralign{\vskip\parskip\halign}
- \def\<#1>{$\langle${\rm #1}$\rangle$}
- \def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows
- \def\beginexample{\par\leavevmode\begingroup
- \obeylines\obeyspaces\parskip0pt\tt}
- {\obeyspaces\global\let =\ }
- \def\endexample{\endgroup}
- \def\key#1#2{\leavevmode\hbox to \hsize{\vtop
- {\hsize=.75\hsize\rightskip=1em
- \hskip\keyindent\relax#1}\kbd{#2}\hfil}}
- \newbox\metaxbox
- \setbox\metaxbox\hbox{\kbd{M-x }}
- \newdimen\metaxwidth
- \metaxwidth=\wd\metaxbox
- \def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize
- {\hskip\keyindent\relax#1\hfil}%
- \hskip -\metaxwidth minus 1fil
- \kbd{#2}\hfil}}
- \def\fivecol#1#2#3#4#5{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad
- &\kbd{#3}\quad&\kbd{#4}\quad&\kbd{#5}\cr}
- \def\fourcol#1#2#3#4{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad
- &\kbd{#3}\quad&\kbd{#4}\quad\cr}
- \def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad
- &\kbd{#3}\quad\cr}
- \def\twocol#1#2{\hskip\keyindent\relax\kbd{#1}\hfil&\kbd{#2}\quad\cr}
- \def\twocolkey#1#2#3#4{\hskip\keyindent\relax#1\hfil&\kbd{#2}\quad&\relax#3\hfil&\kbd{#4}\quad\cr}
- %**end of header
- \beginindentedkeys
- \title{ViperCard: Viper Reference Pal}
- \centerline{(Version \versionviper\ for Emacs \versionemacs\ and XEmacs \versionxemacs)}
- %\copyrightnotice
- \section{Loading Viper}
- Just type \kbd{M-x viper-mode} followed by \kbd{RET}
- OR put
- (setq viper-mode t)
- (require 'viper)
- in .emacs
- \section{Viper States}
- Viper has four states: {\it emacs state}, {\it vi state}, {\it insert state},
- {\it replace state}.
- Mode line tells you which state you are in.
- In emacs state you can do all the normal GNU Emacs editing.
- This card explains only vi state and insert state (replace state is similar
- to insert state).
- {\bf GNU Emacs Reference Card} explains emacs state.
- You can switch states as follows.
- \key{from emacs state to vi state}{C-z}
- \key{from vi state to emacs state}{C-z}
- \key{from vi state to emacs state for 1 command}{$\backslash$}
- \metax{from vi state to insert state}{i, I, a, A, o, O}
- \metax{from vi state to replace state}{c, C, R}
- \key{from insert or replace state to vi state}{ESC}
- \key{from insert state to vi state for 1 command}{C-z}
- \section{Insert Mode}
- You can do editing in insert state.
- \metax{go back to vi state}{ESC}
- \metax{delete previous character}{C-h, DEL}
- \key{delete previous word}{C-w}
- \key{delete line word}{C-u}
- \key{indent shiftwidth forward}{C-t}
- \key{indent shiftwidth backward}{C-d}
- \key{delete line word}{C-u}
- \key{quote following character}{C-v}
- \key{emulate Meta key in emacs state}{C-$\backslash$}
- \key{escape to Vi state for one command}{C-z}
- \vskip 2mm
- {\bf The rest of this card explains commands in {\bf vi state}.}
- \section{Getting Information on Viper}
- Execute info command by typing \kbd{M-x info} and select menu item
- \kbd{viper}. Also:
- \key{describe function attached to the key {\it x}}{$\backslash$ C-h k {\it x}}
- \section{Leaving Emacs}
- \metax{suspend Emacs}{:st {\rm or} :su}
- \metax{exit Emacs permanently}{C-xC-c}
- \metax{exit current file}{:wq {\rm or} :q}
- \shortcopyrightnotice
- \section{Error Recovery}
- \metax{abort command}{C-c (user level = 1)}
- \metax{abort command}{C-g (user level > 1)}
- \key{redraw messed up screen}{C-l}
- \metax{{\bf recover} after system crash}{:rec file}
- \metax{restore a buffer }{:e!\ {\rm or} M-x revert-buffer}
- \section{Counts}
- Most commands in vi state accept a {\it count} which can be supplied as a
- prefix to the commands. In most cases, if a count is given, the
- command is executed that many times. E.g., \kbd{5 d d} deletes 5
- lines.
- \section{Registers}
- There are 26 registers (\kbd{a} to \kbd{z}) that can store texts
- and marks.
- You can append a text at the end of a register (say \kbd{x}) by
- specifying the register name in capital letter (say \kbd{X}).
- There are also 9 read only registers (\kbd{1} to \kbd{9}) that store
- up to 9 previous changes.
- We will use {\it x\/} to denote a register.
- \section{Entering Insert Mode}
- \key{{\bf insert} at point}{i}
- \key{{\bf append} after cursor}{a}
- \key{{\bf insert} before first non-white}{I}
- \key{{\bf append} at end of line}{A}
- \key{{\bf open} line below}{o}
- \key{{\bf open} line above}{O}
- \section{Buffers and Windows}
- \key{move cursor to {\bf next} window}{C-x o}
- \key{delete current window}{C-x 0}
- \key{delete other windows}{C-x 1}
- \key{split current window into two windows}{C-x 2}
- \key{{\bf switch} to a buffer in the current window}{C-x {\sl buffer}}
- \metax{{\bf switch} to a buffer in another window}{:n, :b, {\rm or} C-x 4 {\sl buf}}
- \key{{\bf kill} a buffer}{:q! {\rm or} C-x k}
- \key{list existing {\bf buffers}}{:args {\rm or} C-x b}
- \section{Files}
- \metax{{\bf visit} file in the current window}{v {\sl file} {\rm or} :e {\sl file}}
- \key{{\bf visit} file in another window}{V {\sl file}}
- \key{{\bf visit} file in another frame}{C-v {\sl file}}
- \key{{\bf save} buffer to the associated file}{:w {\rm or} C-xC-s}
- \metax{{\bf write} buffer to a specified file}{:w {\sl file} {\rm or} C-xC-w}
- \metax{{\bf insert} a specified file at point}{:r {\sl file} {\rm or} C-xi}
- \key{{\bf get} information on the current {\bf file}}{C-c g {\rm or} :f}
- \key{run the {\bf directory} editor}{:e RET {\rm or} C-xd}
- %\shortcopyrightnotice
- \section{Viewing the Buffer}
- \key{scroll to next screen}{C-f}
- \key{scroll to previous screen}{C-b}
- \key{scroll {\bf down} half screen}{C-d}
- \key{scroll {\bf up} half screen}{C-u}
- \key{scroll down one line}{C-e}
- \key{scroll up one line}{C-y}
- \key{put current line on the {\bf home} line}{z H {\rm or} z RET}
- \key{put current line on the {\bf middle} line}{z M {\rm or} z .}
- \key{put current line on the {\bf last} line}{z L {\rm or} z -}
- \section{Marking and Returning}
- \key{{\bf mark} point in register {\it x}}{m {\it x}}
- \key{set mark at buffer beginning}{m <}
- \key{set mark at buffer end}{m >}
- \key{set mark at point}{m .}
- \key{jump to mark}{m ,}
- \key{exchange point and mark}{` `}
- \key{... and skip to first non-white on line}{' '}
- \key{go to mark {\it x}}{` {\it x}}
- \key{... and skip to first non-white on line}{' {\it x}}
- \key{view contents of marker {\it x}}{[ {\it x}}
- \key{view contents of register {\it x}}{] {\it x}}
- \section{Macros}
- Emacs style macros:
- \key{start remembering keyboard macro}{C-x (}
- \key{finish remembering keyboard macro}{C-x )}
- \key{call last keyboard macro}{*}
- \key{start remembering keyboard macro}{@ \#}
- \key{finish macro and put into register {\it x}}{@ {\it x}}
- \key{execute macro stored in register {\it x}}{@ {\it x}}
- \key{repeat last @{\it x} command}{@ @}
- \key{Pull last macro into register {\it x}}{@ ! {\it x}}
- Vi-style macros (keys to be hit in quick succession):
- \key{define Vi-style macro for Vi state}{:map}
- \key{define Vi-style macro for Insert state}{:map!}
- \key{toggle case-sensitive search}{//}
- \key{toggle regular expression search}{///}
- \key{toggle `\%' to ignore parentheses inside comments}{\%\%\%}
- \section{Motion Commands}
- \key{go backward one character}{h {\rm or} C-h}
- \key{go forward one character}{l}
- \metax{next line keeping the column}{j {\rm or} LF {\rm or} C-n}
- \key{previous line keeping the column}{k}
- \metax{next line at first non-white}{+ {\rm or} RET {\rm or} C-p}
- \key{previous line at first non-white}{-}
- \key{beginning of line}{0}
- \key{first non-white on line}{^}
- \key{end of line}{\$}
- \key{go to {\it n}-th column on line}{{\it n} |}
- \key{go to {\it n}-th line}{{\it n} G}
- \key{go to last line}{G}
- \key{find matching parenthesis for \kbd{()}, \kbd{\{\}} and \kbd{[]}}{\%}
- \key{go to {\bf home} window line}{H}
- \key{go to {\bf middle} window line}{M}
- \key{go to {\bf last} window line}{L}
- \subsection{Words, Sentences, Paragraphs, Headings}
- \key{forward {\bf word}}{w {\rm or} W}
- \key{{\bf backward} word}{b {\rm or} B}
- \key{{\bf end} of word}{e {\rm or} E}
- In the case of capital letter commands, a word is delimited by a
- non-white character.
- \key{forward sentence}{)}
- \key{backward sentence}{(}
- \key{forward paragraph}{\}}
- \key{backward paragraph}{\{}
- \key{forward heading}{]]}
- \key{backward heading}{[[}
- \key{end of heading}{[]}
- \subsection{Find Characters on the Line}
- \key{{\bf find} {\it c} forward on line}{f {\it c}}
- \key{{\bf find} {\it c} backward on line}{F {\it c}}
- \key{up {\bf to} {\it c} forward on line}{t {\it c}}
- \key{up {\bf to} {\it c} backward on line}{T {\it c}}
- \key{repeat previous \kbd{f}, \kbd{F}, \kbd{t} or \kbd{T}}{;}
- \key{... in the opposite direction}{,}
- %\newcolumn
- %\title{Viper Quick Reference Card}
- \section{Searching and Replacing}
- \key{search forward for {\sl pat}}{/ {\sl pat}}
- \key{search backward with previous {\sl pat}}{?\ RET}
- \key{search forward with previous {\sl pat}}{/ RET}
- \key{search backward for {\sl pat}}{?\ {\sl pat}}
- \key{repeat previous search}{n}
- \key{... in the opposite direction}{N}
- \key{{\bf query} replace}{Q}
- \key{{\bf replace} a character by another character {\it c}}{r {\it c}}
- \key{{\bf overwrite} {\it n} lines}{{\it n} R}
- \metax{{\bf buffer} search (if enabled)}{g {\it move command}}
- \section{Modifying Commands}
- Most commands that operate on text regions accept the motion commands,
- to describe regions. They also accept the Emacs region specifications
- {\bf r} and {\bf R}. {\bf r} describes the region between {\it point}
- and {\it mark}, and {\bf R} describes whole lines in that region.
- Motion commands are classified into {\it point commands} and
- {\it line commands}. In the case of line commands, whole lines will
- be affected by the command.
- The point commands are as follows:
- \hskip 5ex
- \kbd{h l 0 ^ \$ w W b B e E ( ) / ?\ ` f F t T \% ; ,}
- The line commands are as follows:
- \hskip 5ex
- \kbd{j k + - H M L \{ \} G '}
- These region specifiers will be referred to as {\it m} below.
- \subsection{Delete/Yank/Change Commands}
- \paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\tabskip=0pt&#\cr
- \fourcol{}{{\bf delete}}{{\bf yank}}{{\bf change}}
- \fourcol{region determined by {\it m}}{d {\it m}}{y {\it m}}{c {\it m}}
- \fourcol{... into register {\it x}}{" {\it x\/} d {\it m}}{" {\it x\/} y {\it m}}{" {\it x\/} c {\it m}}
- \fourcol{a line}{d d}{Y {\rm or} y y}{c c}
- \fourcol{current {\bf region}}{d r}{y r}{c r}
- \fourcol{expanded {\bf region}}{d R}{y R}{c R}
- \fourcol{to end of line}{D}{y \$}{c \$}
- \fourcol{a character after point}{x}{y l}{c l}
- \fourcol{a character before point}{DEL}{y h}{c h}
- }
- \vskip 2ex
- \key{Overwrite {\it n} lines}{{\it n} R}
- \subsection{Put Back Commands}
- Deleted/yanked/changed text can be put back by the following commands.
- \key{{\bf Put} back at point/above line}{P}
- \key{... from register {\it x}}{" {\it x\/} P}
- \key{{\bf put} back after point/below line}{p}
- \key{... from register {\it x}}{" {\it x\/} p}
- \subsection{Repeating and Undoing Modifications}
- \key{{\bf undo} last change}{u {\rm or} :und}
- \key{repeat last change}{.\ {\rm (dot)}}
- Undo is undoable by \kbd{u} and repeatable by \kbd{.}.
- For example, \kbd{u...} will undo 4 previous changes.
- A \kbd{.} after \kbd{5dd} is equivalent to \kbd{5dd},
- while \kbd{3.} after \kbd{5dd} is equivalent to \kbd{3dd}.
- \section{Miscellaneous Commands}
- \endindentedkeys
- \paralign to \hsize{#\tabskip=5pt plus 1 fil&#\tabskip=0pt&#\tabskip=0pt&#\tabskip=0pt&#\cr
- \fivecol{}{{\bf shift left}}{{\bf shift right}}{{\bf filter shell command}}{{\bf indent}}
- \fivecol{region}{< {\it m}}{> {\it m}}{!\ {\it m\/} {\sl shell-com}}{= {\it m}}
- \fivecol{line}{< <}{> >}{!\ !\ {\sl shell-com}}{= =}
- }
- \key{{\bf join} lines}{J}
- \key{toggle case (takes count)}{\~{}}
- \key{view register {\it x}}{] {\it x}}
- \key{view marker {\it x}}{] {\it x}}
- \key{lowercase region}{\# c {\it m}}
- \key{uppercase region}{\# C {\it m}}
- \key{execute last keyboard macro on each line in the region}{\# g {\it m}}
- \key{insert specified string for each line in the region}{\# q {\it m}}
- \key{check spelling of the words in the region}{\# s {\it m}}
- \key{repeat previous ex substitution}{\&}
- \key{change to previous file}{C-^}
- \key{Viper Meta key}{_}
- \section{Customization}
- By default, search is case sensitive.
- You can change this by including the following line in your \kbd{\~{}/.vip} file.
- \hskip 5ex
- \kbd{(setq viper-case-fold-search t)}
- The following is a subset of the variety of
- options available for customizing Viper.
- See the Viper manual for details on these and other options.
- \beginindentedkeys
- \paralign to \hsize{#\tabskip=10pt plus 1 fil&#\tabskip=0pt&#\cr
- \twocol{{\bf variable}}{{\bf default value}}
- \twocol{viper-search-wrap-around}{t}
- \twocol{viper-case-fold-search}{nil}
- \twocol{viper-re-search}{t}
- \twocol{viper-re-replace}{t}
- \twocol{viper-re-query-replace}{t}
- \twocol{viper-auto-indent}{nil}
- \twocol{viper-shift-width}{8}
- \twocol{viper-tags-file-name}{"TAGS"}
- \twocol{viper-no-multiple-ESC}{t}
- \twocol{viper-ex-style-motion}{t}
- \twocol{viper-always}{t}
- \twocol{viper-custom-file-name}{"\~{}/.vip"}
- \twocol{ex-find-file-shell}{"csh"}
- \twocol{ex-cycle-other-window}{t}
- \twocol{ex-cycle-through-non-buffers}{t}
- \twocol{blink-matching-paren}{t}
- \twocol{buffer-read-only}{{\it buffer dependent}}
- }
- To bind keys in Vi command state, put lines like these in your
- \kbd{\~{}/.vip} file:
- \beginexample
- (define-key viper-vi-global-user-map "\\C-v" 'scroll-down)
- (define-key viper-vi-global-user-map "\\C-cm" 'smail)
- \endexample
- \newcolumn
- \title{Ex Commands in Viper}
- In vi state, an Ex command is entered by typing:
- \hskip 5ex
- \kbd{:\ {\sl ex-command} RET}
- \section{Ex Addresses}
- \paralign to \hsize{#\tabskip=5pt plus 1 fil&#\tabskip=2pt&#\tabskip=5pt plus 1 fil&#\cr
- \twocolkey{current line}{.}{next line with {\sl pat}}{/ {\sl pat} /}
- \twocolkey{line {\it n}}{{\it n}}{previous line with {\sl pat}}{?\ {\sl pat} ?}
- \twocolkey{last line}{\$}{{\it n\/} line before {\it a}}{{\it a} - {\it n}}
- \twocolkey{next line}{+}{{\it a\/} through {\it b}}{{\it a\/} , {\it b}}
- \twocolkey{previous line}{-}{line marked with {\it x}}{' {\it x}}
- \twocolkey{entire buffer}{\%}{previous context}{' '}
- }
- Addresses can be specified in front of a command.
- For example,
- \hskip 5ex
- \kbd{:.,.+10m\$}
- moves 11 lines below current line to the end of buffer.
- \section{Ex Commands}
- Avoid Ex text manipulation commands except substitute.
- There are better VI equivalents
- for all of them. Also note that all Ex commands expand \% to
- current file name. To include a \% in the command, escape it with a $\backslash$.
- Similarly, \# is replaced by previous file. For Viper, this is the
- first file in the {\sl :args} listing for that buffer. This defaults
- to the previous file in the VI sense if you have one window.
- Ex commands can be made to have history. See the manual for details.
- \subsection{Ex Text Commands}
- \endindentedkeys
- \key{mark lines matching {\sl pat} and execute {\sl cmds} on these lines}{:g /{\sl pat}/ {\sl cmds}}
- \key{mark lines {\it not\/} matching {\sl pat} and execute {\sl cmds} on these lines}{:v /{\sl pat}/ {\sl cmds}}
- \key{{\bf move} specified lines after {\sl addr}}{:m {\sl addr}}
- \key{{\bf copy} specified lines after {\sl addr}}{:co\rm\ (or \kbd{:t})\ \sl addr}
- \key{{\bf delete} specified lines [into register {\it x\/}]}{:d {\rm [{\it x\/}]}}
- \key{{\bf yank} specified lines [into register {\it x\/}]}{:y {\rm [{\it x\/}]}}
- \key{{\bf put} back text [from register {\it x\/}]}{:pu {\rm [{\it x\/}]}}
- \key{{\bf substitute} {\sl repl} for first string on line matching {\sl pat}}{:s /{\sl pat}/{\sl repl}/}
- \key{repeat last substitution}{:\&}
- \key{repeat previous substitute with previous search pattern as {\sl pat}}{:\~{}}
- \subsection{Ex File and Shell Commands}
- \key{{\bf edit} file}{:e {\sl file}}
- \key{reedit messed up current file}{:e!}
- \key{edit previous file}{:e\#}
- \key{{\bf read} in a file}{:r {\sl file}}
- \key{{\bf read} in the output of a shell command}{:r {\sl !command}}
- \key{write out specified lines into {\sl file}}{:w {\sl file}}
- \key{save all modified buffers, ask confirmation}{:W {\sl file}}
- \key{save all modified buffers, no confirmation}{:WW {\sl file}}
- \key{write out specified lines at the end of {\sl file}}{:w>> {\sl file}}
- \key{{\bf write} to the input of a shell command}{:w {\sl !command}}
- \key{write out and then quit}{:wq {\sl file}}
- \key{run a sub{\bf shell} in a window}{:sh}
- \key{execute shell command {\sl command}}{:!\ {\sl command}}
- \key{execute previous shell command with {\it args} appended}{:!! {\sl args}}
- \subsection{Ex Miscellaneous Commands}
- \key{define a macro {\it x} that expands to {\sl cmd}}{:map {\it x} {\sl cmd}}
- \key{remove macro expansion associated with {\it x}}{:unma {\it x}}
- \key{define a macro {\it x} that expands to {\sl cmd} in insert state}{:map!\ {\it x} {\sl cmd}}
- \key{remove macro expansion associated with {\it x} in insert state}{:unma!\ {\it x}}
- \key{print line number}{:.=}
- \key{print last line number}{:=}
- \key{print {\bf version} number of Viper}{:ve}
- \key{shift specified lines to the right}{:>}
- \key{shift specified lines to the left}{:<}
- \key{{\bf join} lines}{:j}
- \key{mark specified line to register {\it x}}{:k {\it x}}
- \key{{\bf set} a variable's value}{:se}
- \key{find first definition of {\bf tag} {\sl tag}}{:ta {\sl tag}}
- \key{Current directory}{:pwd}
- \copyrightnotice
- \bye
- % Local variables:
- % compile-command: "pdftex viperCard"
- % End:
|