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. See 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 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).


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


Set mark at beginning and end of buffer, respectively.


Jump to mark and pop mark off the ring. See Mark in The GNU Emacs Manual, for more info.

] register

View contents of register

[ textmarker

View filename and position of textmarker


Begin/end keyboard macro. @register has a different meaning when used after a @#. See 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. See Improved Search, for details.

C-g and C-]

Quit and Abort Recursive edit. These may be necessary on occasion. See 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. See 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.


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. See 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. See 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. See File and Buffer Handling, for details. There are also the new commands :RelatedFile and PreviousRelatedFile (which abbreviate to R and P, respectively. See 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. See Vi Macros, for details.