@unnumbered Distribution
@noindent
-Copyright @copyright{} 1995, 1996, 1997 Free Software Foundation, Inc.
+Copyright @copyright{} 1995, 1996, 1997, 2001 Free Software Foundation, Inc.
-Permission is granted to make and distribute verbatim copies of
-this manual provided the copyright notice and this permission notice
-are preserved on all copies.
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover texts being ``A GNU
+Manual'', and with the Back-Cover Texts as in (a) below. A copy of the
+license is included in the section entitled ``GNU Free Documentation
+License'' in the Emacs manual.
-@ignore
-Permission is granted to process this file through TeX and print the
-results, provided the printed document carries copying permission
-notice identical to this one except for the removal of this paragraph
-(this paragraph not being relevant to the printed manual).
+(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
+this GNU Manual, like GNU software. Copies published by the Free
+Software Foundation raise funds for GNU development.''
-@end ignore
-Permission is granted to copy and distribute modified versions of this
-manual under the conditions for verbatim copying, provided that the entire
-resulting derived work is distributed under the terms of a permission
-notice identical to this one.
-
-Permission is granted to copy and distribute translations of this manual
-into another language, under the same conditions as for modified versions.
+This document is part of a collection distributed under the GNU Free
+Documentation License. If you want to distribute this document
+separately from the collection, you can do so by adding a copy of the
+license to the document, as described in section 6 of the license.
@ifinfo
@node Top, Overview,, (DIR)
Emacs ideas that you should know about, how to use Viper within Emacs and
some incompatibilities.
+This manual is written with the assumption that you are an experienced Vi
+user who wants to switch to Emacs while retaining the ability to edit files
+Vi style. Incredible as it might seem, there are experienced Emacs users
+who use Viper as a backdoor into the superior (as every Vi user already knows)
+world of Vi! These users are well familiar with Emacs bindings and prefer them
+in some cases, especially in the Vi Insert state. John Hawkins
+<jshawkin@@eecs.umich.edu> has provided a set of customizations, which
+enables additional Emacs bindings under Viper. These customizations can be
+included in your @file{~/.viper} file and are found at the following URL:
+@file{http://www.eecs.umich.edu/~jshawkin/viper-sample}.
+
Viper was formerly known as VIP-19, which was
a descendant of VIP 3.5 by Masahiko Sato and VIP 4.4 by Aamod Sane.
@item Insert state
Insert state is the Vi insertion mode. @key{ESC} will take you back to
Vi state. Insert state editing can be done, including auto-indentation. By
-default, Viper disables Emacs keybindings in Insert state.
+default, Viper disables Emacs key bindings in Insert state.
@item Replace state
Commands like @kbd{cw} invoke the Replace state. When you cross the
help with key bindings for the major mode of that buffer).
If you switch to Vi in Dired or similar modes---no harm is done. It is just
-that the special keybindings provided by those modes will be temporarily
+that the special key bindings provided by those modes will be temporarily
overshadowed by Viper's bindings. Switching back to Viper's Emacs state
will revive the environment provided by the current major mode.
@cindex Ex commands
The current working directory of a buffer is automatically inserted in the
minibuffer if you type @kbd{:e} then space. Absolute filenames are
-required less often in Viper. For path names, Emacs uses a convention that
-is slightly different from that of Unix. It is designed to minimize the
-need for deleting path names that Emacs provides in its prompts. (This is
-usually convenient, but occasionally the prompt may suggest a wrong path
+required less often in Viper. For file names, Emacs uses a convention that
+is slightly different from other programs. It is designed to minimize the
+need for deleting file names that Emacs provides in its prompts. (This is
+usually convenient, but occasionally the prompt may suggest a wrong file
name for you.) If you see a prompt @kbd{/usr/foo/} and you wish to edit the
file @kbd{~/.viper}, you don't have to erase the prompt. Instead, simply
continue typing what you need. Emacs will interpret @kbd{/usr/foo/~/.viper}
text, you should perform a non-deleting action, e.g., move the cursor one
character in any direction.
@item Absolute Filenames
-@cindex absolute paths
+@cindex absolute file names
The current directory name for a file is automatically prepended to the
file name in any
@kbd{:e}, @kbd{:r}, @kbd{:w}, etc., command (in Emacs, each buffer has a
You should be aware that Emacs interprets @kbd{/foo/bar//bla} as
@kbd{/bla} and @kbd{/foo/~/bar} as @kbd{~/bar}. This is designed to
-minimize the need for erasing path names that Emacs suggests in its
-prompts, if a suggested path name is not what you wanted.
+minimize the need for erasing file names that Emacs suggests in its
+prompts, if a suggested file name is not what you wanted.
The command @kbd{:cd} will change the default directory for the
current Emacs buffer. The Ex command @kbd{:e} will interpret the
@cindex completion
Completion is done when you type @key{TAB}. The Emacs completer does not
-grok wildcards in filenames. Once you type a wildcard, the completer will
-no longer work for that path. Remember that Emacs interprets a file name
+grok wildcards in file names. Once you type a wildcard, the completer will
+no longer work for that file name. Remember that Emacs interprets a file name
of the form @kbd{/foo//bar} as @kbd{/bar} and @kbd{/foo/~/bar} as
@kbd{~/bar}.
@menu
* Rudimentary Changes:: Simple constant definitions.
-* Keybindings:: Enabling Emacs Keys, Rebinding keys, etc.
+* Key Bindings:: Enabling Emacs Keys, Rebinding keys, etc.
* Packages that Change Keymaps:: How to deal with such beasts.
* Viper Specials:: Special Viper commands.
* Vi Macros:: How to do Vi style macros.
@end menu
-@node Rudimentary Changes,Keybindings,Customization,Customization
+@node Rudimentary Changes,Key Bindings,Customization,Customization
@section Rudimentary Changes
@cindex setting variables
@item viper-glob-function
The value of this variable is the function symbol used to expand wildcard
symbols. This is platform-dependent. The default tries to set this variable
-to work with most Unix shells, MS Windows, OS/2, etc. However, if it
+to work with most shells, MS Windows, OS/2, etc. However, if it
doesn't work the way you expect, you should write your own.
Use @code{viper-glob-unix-files} and @code{viper-glob-mswindows-files} in
@file{viper-util.el} as examples.
@vindex @code{viper-replace-state-hook}
@vindex @code{viper-emacs-state-hook}
-@node Keybindings, Packages that Change Keymaps, Rudimentary Changes,Customization
-@section Keybindings
+@node Key Bindings, Packages that Change Keymaps, Rudimentary Changes,Customization
+@section Key Bindings
-@cindex keybindings
+@cindex key bindings
@cindex keymaps
Viper lets you define hot keys, i.e., you can associate keyboard keys
@findex @code{viper-add-local-keys}
@findex @code{viper-zap-local-keys}
-@node Packages that Change Keymaps,Viper Specials,Keybindings,Customization
+@node Packages that Change Keymaps,Viper Specials,Key Bindings,Customization
@subsection Packages that Change Keymaps
@cindex C-c and Viper
@cindex Viper and C-c
master and put the following at the end of that file:
@lisp
;;; Local Variables:
-;;; eval: (viper-setup-master-buffer "file1" "file2" "file3" "file5" "file5")
+;;; eval: (viper-setup-master-buffer "file1" "file2" "file3" "file4")
;;; End:
@end lisp
@noindent
-where @code{file1} to @code{file5} are names of files related to the master
+where @code{file1} to @code{file4} are names of files related to the master
file. Next time, when the master file is visited, the command
@code{viper-setup-master-buffer} will be evaluated and the above files will
be associated with the master file. Then, the new Ex command
-@kbd{:RelatedFile} (abbr.@: @kbd{:R}) will display files 1 to 5 one after
+@kbd{:RelatedFile} (abbr.@: @kbd{:R}) will display files 1 to 4 one after
another, so you can edit them. If a file is not in any Emacs buffer, it
will be visited. The command @kbd{PreviousRelatedFile} (abbr., @kbd{:P})
goes through the file list in the opposite direction.
This is very useful if you run out of function keys on your keyboard; it
makes Viper macro facility a @emph{keyboard doubler}, so to speak.
-Elsewhere (@xref{Keybindings}, for details), we review
+Elsewhere (@xref{Key Bindings}, for details), we review
the standard Emacs mechanism for binding function keys to commands.
For instance,
@node Mapping, Shell Commands, File and Buffer Handling, Commands
@section Mapping
-@cindex keybindings
+@cindex key bindings
@cindex key mapping
@table @kbd
@item :<address>r <name>
Read the file <name> into the buffer after the line <address> (default
current).
+@item :make
+Run the make command in the current directory.
@end table
@findex @kbd{:<address>r <name>}
@findex @kbd{:<address>r !<cmd>}
@findex @kbd{:!!@: <args>}
@findex @kbd{:!<cmd>}
@findex @kbd{:sh}
+@findex @kbd{:make}
@node Options,Emacs Related Commands,Shell Commands,Commands
@section Options
ahg@@panix.com (Al Gelders),
amade@@diagram.fr (Paul-Bernard Amade),
ascott@@fws214.intel.com (Andy Scott),
+bronson@@trestle.com (Scott Bronson),
cook@@biostat.wisc.edu (Tom Cook),
csdayton@@midway.uchicago.edu (Soren Dayton),
dave@@hellgate.utah.edu,
Mark.Bordas@@East.Sun.COM (Mark Bordas),
meyering@@comco.com (Jim Meyering),
martin@@xemacs.org (Martin Buchholz),
+mbutler@@redfernnetworks.com (Malcolm Butler),
mveiga@@dit.upm.es (Marcelino Veiga Tuimil),
paulk@@summit.esg.apertus.com (Paul Keusemann),
pfister@@cs.sunysb.edu (Hanspeter Pfister),