Editor in CUI

Overview of vi and vim

Ø vi: the “Visual Editor”, standard Linux and Unix editor.

Ø vim: the “vi improved” editor, standard Red Hat editor.

Ø On Red Hat operating system, the vi command invokes vim.

Ø Derived from earlier Unix editors.

Ed -> ex -> vi -> vim

Starting vi and vim

Ø To start vim: # vi

If the file exists, the file is opened and contents are displayed.

If the file doesn’t exist, vi creates it when the edit are saved for the first time.

Ø To use vi instead:

Unalias vi or

\vi

Ø Same useful operation that you can use with vim include:

Vi command with different options

Performance

# vi -m

File is non-modifiable.

# vi -R

File is only modifiable by using the exclamation point: w!

# vi -n

Do not use a swap file for backup (useful for floppies)

# vi -r

Recover data from a swap file after a crash

# vi -x

Encrypt file when saving decrypt file when editing

Three modes of vi and vim

1) Command mode: Cursor movement, change, delete, yank, put, search.

2) Insert mode: Type in new text and return to command mode with

3) ex mode: Configuring, exiting, saving, searching and replacing.

Cursor Movement (Arrow keys also work)

Key

Performance

Key

Performance

h

Left

b

Word back

j

Down

(

Sentence back

k

Up

)

Sentence

l

Right

{

Paragraph above

w

Word ahead

}

Paragraph below

Entering Insert Mode

Key

Performance

Key

Performance

a

Append after the cursor.

A

Append to end of file.

i

Insert before the cursor.

I

Insert at beginning of line.

o

Open a line below.

O

Open a line above.

Leaving Insert Mode -

Ø takes you from insert mode back to command mode.

Ø Hint: When in trouble, press and then again.

Change, Delete and Yank (copy)

Performance

Type

Change

Delete

Yank

Line

cc

dd

yy

Letter

c1

d1

y1

Word

cw

dw

yw

Sentence ahead

c(

d(

y(

Sentence behind

c)

d)

y)

Paragraph above

c{

d{

y{

Paragraph below

c}

d}

y}

Put (Paste)

Use P or p to put (pasts) copied or deleted or changed data.

For line oriented data:

Key

Performance

p

Puts the data below the current line.

P

Puts the data above the current line.

For character oriented data:

P

Puts the data after the cursor.

p

Puts the data above the cursor.

Undoing Changes

Key

Performance

u

Undo most recent change.

U

Undo all change to the current line since the cursor landed on the line.

Redo last “undone” change.

Search for text

Key

Performance

/text

Search downwards for “text”.

?text

Search upwards for “text”.

n

Continue search in the opposite direction.

Saving and Exiting - ex mode

Normally Changes

Save Changes

Abandon Changes

Exit

:wq

:q or :q!

Do not exit

:w

:e!

Forcing Changes

Exit

:wq!

Do not exit

:w!

A few tricks

Command

Performance

dtc

Delete from cursor to the letter “c” (does not span lines).

5dd

Delete five lines (a number can precede any of the two character change, delete, yank or put commands).

x

Delete a character.

rc

Replace a character. With c.

R

Replace character for character until press .

Filtering

The output of a command can be placed in the file and the data in the file can be used as input.

Ø !!date It will show current date and time.

Ø :! ls It will show the files and directories.

Ø !}sort

Ø !}fmt -66

ex mode – (search and replace)

Different default addressing rule -

no address

Current line only.

1,$

For changes to entire file.

.,.+10

From current line (“.”) to current line plus 10 lines (“+10”).

8.12

Change line 8 through 12.

Example,

:1,$s /hio/lowa/g

Advanced Reading and Saving

Ø :r newfile

Ø :r !date

Ø :1,zow xfile

Ø :.,$w yfile

Ø :1,zow >> zfile

Ø :n

Ø :n!

Ø :n#

Configuring vi and vim

Configuring permanently –

· ~/.vimrc or ~/.exrc

A few common configuration items –

· :set showmatch

· :set autoindent

· :set textwidth=65 (vim only)

· :set wrapmargin=15

· :set ignorecase

· :set number - It will set line numbers.

· :set no number - To remove the line number.

· :set all or :set - Configuring on the fly. It will display all the configuration commands of vi and vim editors.