Input Mode Shortcuts

vi provides two ways to decrease the amount of typing you have to do: abbreviations and maps.

Word Abbreviation

:ab abbr phrase

Define abbr as an abbreviation for phrase.

:ab

List all defined abbreviations.

:unab abbr

Remove definition of abbr.

Command and Input Mode Maps

:map x sequence

Define character(s) x as a sequence of editing commands.

:unmap x

Disable the sequence defined for x.

:map

List the characters that are currently mapped.

:map! x sequence

Define character(s) x as a sequence of editing commands or text that will be recognized in insert mode.

:unmap! x

Disable the sequence defined for the insert mode map x.

:map!

List the characters that are currently mapped for interpretation in insert mode.

For both command and insert mode maps, the map name x can take several forms:

One character

When you type the character, vi executes the associated sequence of commands.

Multiple characters

All the characters must be typed within one second. The value of notimeout changes the behavior.

# n

Function key notation: a # followed by a digit n represents the sequence of characters sent by the keyboard’s function key number n.

To enter characters such as Escape (^[) or carriage return (^M), first type CTRL-V (^V).

Executable Buffers

Named buffers provide yet another way to create “macros”—complex command sequences you can repeat with a few keystrokes. Here’s how it’s done:

  1. Type a vi command sequence or an ex command preceded by a colon; return to command mode.

  2. Delete the text into a named buffer.

  3. Execute the buffer with the @ command followed by the buffer letter.

The ex command :@buf-name works similarly.

Some versions of vi treat * identically to @ when used from the ex command line. In addition, if the buffer character supplied after the @ or * commands is *, the command is taken from the default (unnamed) buffer.

Automatic Indentation

Enable automatic indentation with the following command:

:set autoindent

Four special input sequences affect automatic indentation:

^T

Add one level of indentation; typed in insert mode

^D

Remove one level of indentation; typed in insert mode

^ ^D

Shift the cursor back to the beginning of the line, but only for the current line[1]

0 ^D

Shift the cursor back to the beginning of the line and reset the current auto-indent level to zero[2]

Two commands can be used for shifting source code:

<<

Shift a line left eight spaces

>>

Shift a line right eight spaces

The default shift is the value of shiftwidth, usually eight spaces.



[1] ^ ^D and 0 ^D are not in elvis.

[2] The nvi 1.79 documentation has these two commands switched, but the program actually behaves as described here.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
3.137.157.45