Viper has four states, Emacs, Vi, Insert, and Replace.
`Emacs state '
|
This is the state plain vanilla Emacs is normally in. After you have loaded Viper, C-z will normally take you to Vi command state. Another C-z will take you back to Emacs state. This toggle key can be changed, see Customization You can also type M-x viper-mode to change to Vi state. For users who chose to set their user level to 1 at Viper setup time, switching to Emacs state is deliberately made harder in order to not confuse the novice user. In this case, C-z will either iconify Emacs (if Emacs runs as an application under X Windows) or it will stop Emacs (if Emacs runs on a dumb terminal or in an Xterm window). |
`Vi state '
|
This is the Vi command mode. Any of the Vi commands, such as i, o, a,
..., will take you to Insert state. All Vi commands may
be used in this mode. Most Ex commands can also be used.
For a full list of Ex commands supported by Viper, type
: and then In Viper, Ex commands can be made to work on the current Emacs region. This is done by typing a digit argument before :. For instance, typing 1: will propmt you with something like :123,135, assuming that the current region starts at line 123 and ends at line 135. There is no need to type the line numbers, since Viper inserts them automatically in front of the Ex command. |
`Insert state '
|
Insert state is the Vi insertion mode. |
`Replace state '
|
Commands like cw invoke the Replace state. When you cross the
boundary of a replacement region (usually designated via a ` |
The modes are indicated on the mode line as <E>, <I>, <V>, and <R>, so that the multiple modes do not confuse you. Most of your editing can be done in Vi and Insert states. Viper will try to make all new buffers be in Vi state, but sometimes they may come up in Emacs state. C-z will take you to Vi state in such a case. In some major modes, like Dired, Info, Gnus, etc., you should not switch to Vi state (and Viper will not attempt to do so) because these modes are not intended for text editing and many of the Vi keys have special meaning there. If you plan to read news, browse directories, read mail, etc., from Emacs (which you should start doing soon!), you should learn about the meaning of the various keys in those special modes (typing C-h m in a buffer provides 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 overshadowed by Viper's bindings. Switching back to Viper's Emacs state will revive the environment provided by the current major mode.
States in Viper are orthogonal to Emacs major modes, such as C mode or Dired mode. You can turn Viper on and off for any Emacs state. When Viper is turned on, Vi state can be used to move around. In Insert state, the bindings for these modes can be accessed. For beginners (users at Viper levels 1 and 2), these bindings are suppressed in Insert state, so that new users are not confused by the Emacs states. Note that unless you allow Emacs bindings in Insert state, you cannot do many interesting things, like language sensitive editing. For the novice user (at Viper level 1), all major mode bindings are turned off in Vi state as well. This includes the bindings for key sequences that start with C-c, which practically means that all major mode bindings are supported. See Customization, to find out how to allow Emacs keys in Insert state.
Loading Viper Overview The Minibuffer