1.3.3 Insert State

To avoid confusing the beginner (at Viper level 1 and 2), Viper makes only the standard Vi keys available in Insert state. The implication is that Emacs major modes cannot be used in Insert state. It is strongly recommended that as soon as you are comfortable, make the Emacs state bindings visible (by changing your user level to 3 or higher). See Customization, to see how to do this.

Once this is done, it is possible to do quite a bit of editing in Insert state. For instance, Emacs has a yank command, C-y, which is similar to Vi’s p. However, unlike p, C-y can be used in Insert state of Viper. Emacs also has a kill ring where it keeps pieces of text you deleted while editing buffers. The command M-y is used to delete the text previously put back by Emacs’s C-y or by Vi’s p command and reinsert text that was placed on the kill-ring earlier.

This works both in Vi and Insert states. In Vi state, M-y is a much better alternative to the usual Vi’s way of recovering the 10 previously deleted chunks of text. In Insert state, you can use this as follows. Suppose you deleted a piece of text and now you need to re-insert it while editing in Insert mode. The key C-y will put back the most recently deleted chunk. If this is not what you want, type M-y repeatedly and, hopefully, you will find the chunk you want.

Finally, in Insert and Replace states, Viper provides the history of pieces of text inserted in previous insert or replace commands. These strings of text can be recovered by repeatedly typing C-c M-p or C-c M-n while in Insert or Replace state. (This feature is disabled in the minibuffer: the above keys are usually bound to other histories, which are more appropriate in the minibuffer.)

You can call Meta functions from Insert state. As in Vi state, the Meta key is C-\. Thus M-x is typed as C-\ x.

Other Emacs commands that are useful in Insert state are C-e and C-a, which move the cursor to the end and the beginning of the current line, respectively. You can also use M-f and M-b, which move the cursor forward (or backward) one word. If your display has a Meta key, these functions are invoked by holding the Meta key and then typing f and b, respectively. On displays without the Meta key, these functions are invoked by typing C-\ f and C-\ b (C-\ simulates the Meta key in Insert state, as explained above).

The key C-z is sometimes also useful in Insert state: it allows you to execute a single command in Vi state without leaving the Insert state! For instance, C-z d2w will delete the next two words without leaving the Insert state.

When Viper is in Insert state, you will see <I> in the mode line.