viper: New Commands
2.9 New Commands
================
These commands have no Vi analogs.
‘C-x, C-c’
These two keys invoke many important Emacs functions. For example,
if you hit ‘C-x’ followed by ‘2’, then the current window will be
split into 2. Except for novice users, ‘C-c’ is also set to
execute an Emacs command from the current major mode. <ESC> will
do the same, if you configure <ESC> as Meta by setting
‘viper-no-multiple-ESC’ to ‘nil’ in your Viper customization file.
Customization. ‘C-\’ in Insert, Replace, or Vi states will
make Emacs think ‘Meta’ has been hit.
‘\’
Escape to Emacs to execute a single Emacs command. For instance,
‘\ <ESC>’ will act like a Meta key.
‘Q’
‘Q’ is for query replace. By default, each string to be replaced
is treated as a regular expression. You can use ‘(setq
viper-re-query-replace nil)’ in your ‘.emacs’ file to turn this
off. (For normal searches, ‘:se nomagic’ will work. Note that
‘:se nomagic’ turns Regexps off completely, unlike Vi).
‘v’
‘V’
‘C-v’
These keys are used to visit files. ‘v’ will switch to a buffer
visiting file whose name can be entered in the minibuffer. ‘V’ is
similar, but will use a window different from the current window.
‘C-v’ is like ‘V’, except that a new frame (X window) will be used
instead of a new Emacs window.
‘#’
If followed by a certain character CH, it becomes an operator whose
argument is the region determined by the motion command that
follows (indicated as <move>). Currently, CH can be one of ‘c’,
‘C’, ‘g’, ‘q’, and ‘s’. For instance, ‘#qr’ will prompt you for a
string and then prepend this string to each line in the buffer.
‘# c’
Change upper-case characters in the region to lower-case
(‘downcase-region’). Emacs command ‘M-l’ does the same for words.
‘# C’
Change lower-case characters in the region to upper-case. For
instance, ‘# C 3 w’ will capitalize 3 words from the current point
(‘upcase-region’). Emacs command ‘M-u’ does the same for words.
‘# g’
Execute last keyboard macro for each line in the region
(‘viper-global-execute’).
‘# q’
Insert specified string at the beginning of each line in the region
(‘viper-quote-region’). The default string is composed of the
comment character(s) appropriate for the current major mode.
‘# s’
Check spelling of words in the region (‘spell-region’). The
function used for spelling is determined from the variable
‘viper-spell-function’.
‘*’
Call last keyboard macro.
‘m .’
Set mark at point and push old mark off the ring
‘m<’
‘m>’
Set mark at beginning and end of buffer, respectively.
‘m,’
Jump to mark and pop mark off the ring. Mark (emacs)Mark,
for more info.
‘] register’
View contents of register
‘[ textmarker’
View filename and position of textmarker
‘@#’
‘@register’
‘@!’
Begin/end keyboard macro. @register has a different meaning when
used after a ‘@#’. Macros and Registers, for details
‘[]’
Go to end of heading.
‘g <_movement command_>’
Search buffer for text delimited by movement command. The
canonical example is ‘gw’ to search for the word under the cursor.
Improved Search, for details.
‘C-g and C-]’
Quit and Abort Recursive edit. These may be necessary on occasion.
Vi State, for a reason.
‘C-c C-g’
Hitting ‘C-c’ followed by ‘C-g’ will display the information on the
current buffer. This is the same as hitting ‘C-g’ in Vi, but, as
explained above, ‘C-g’ is needed for other purposes in Emacs.
‘C-c /’
Without a prefix argument, this command toggles
case-sensitive/case-insensitive search modes and plain
vanilla/regular expression search. With the prefix argument 1,
i.e., ‘1 C-c /’, this toggles case-sensitivity; with the prefix
argument 2, toggles plain vanilla search and search using regular
expressions. Viper Specials, for alternative ways to
invoke this function.
‘M-p and M-n’
In the minibuffer, these commands navigate through the minibuffer
histories, such as the history of search strings, Ex commands, etc.
‘C-s’
If the minibuffer is entered via a Viper search commands ‘/’ or
‘?’, then typing this key inserts the last search string used by
the Emacs incremental search command (that is bound to ‘C-s’
everywhere except in this case).
‘C-c M-p and C-c M-n’
In Insert or Replace state, these commands let the user peruse the
history of insertion strings used in previous insert or replace
commands. Try to hit ‘C-c M-p’ or ‘C-c M-n’ repeatedly and see
what happens. Viper Specials, for more.
In Vi state, these commands let the user peruse the history of
Vi-style destructive commands, such as ‘dw’, ‘J’, ‘a’, etc. By
repeatedly typing ‘C-c M-p’ or ‘C-c M-n’ you will cycle Viper
through the recent history of Vi commands, displaying the commands
one by one. Once an appropriate command is found, it can be
executed by typing a period.
Since typing ‘C-c M-p’ is tedious, it is more convenient to bind an
appropriate function to a function key on the keyboard and use that
key. Viper Specials, for details.
‘Ex commands’
The commands ‘:args’, ‘:next’, ‘:pre’ behave differently. ‘:pwd’
exists to get current directory. The commands ‘:b’ and ‘:B’ switch
buffers around. File and Buffer Handling, for details.
There are also the new commands ‘:RelatedFile’ and
‘PreviousRelatedFile’ (which abbreviate to ‘R’ and ‘P’,
respectively. Viper Specials, for details.
Apart from the new commands, many old commands have been enhanced.
Most notably, Vi style macros are much more powerful in Viper than in
Vi. Vi Macros, for details.