|
CIT 593 vi (or vim)
editor help v1.0, last modified 09/04/2006 |
In vi, you're always in one of three modes:
1) navigation - moving the cursor around
with the h, j, k, l keys
2) insert - whatever you type gets inserted into the file
(hit ESC to get back to navigation mode)
3) command - you have entered a : character, preceding a command string
(hit [return] or [esc][esc] to get back to navigation mode)
General Startup To use vi: vi filename To exit and save changes: :wq! To exit without saving changes: :q! To save changes without quitting: :w! To get out of insert mode: [esc]
Cursor Movement h move left (backspace) j move down k move up l move right
NOTE: A number can precede any VI command to tell VI to repeat that command that many times.
EXAMPLES:
j moves down 1 line
3j moves down 3 lines
30j moves down 30 lines
10k moves up 10 lines
SHOW CURRENT LINE
:.=
MOVING AROUND QUICKLY
:# move to line #
:$ move to last line of file
EXAMPLES:
:1 moves to first line of file
:5 moves to 5th line of file
Inserting
i insert before cursor
o open a line below cursor and enter insert mode at beginning of line
O open a line above cursor and enter insert mode at beginning of line
Deleting (Yanking)
x delete character under cursor
dd delete (yank) line under cursor
EXAMPLE:
5dd yanks 5 lines
p puts them back (below current cursor)
Restoring (Putting)
p puts last thing yanked to right of cursor
Copying Code
yy (yank)'copies' line which may then be put by
the p(put) command.
<-- Precede with a number for multiple lines
Put Command brings back previous deletion or yank of lines
P bring back before
(above) cursor
p bring back after (below) cursor
Find Commands
? finds a word going backwards
/ finds a word going forwards
Replace String
:1,$s/oldstring/newstring/g from columns 1 to last ($), substitute globally (all lines)
:1,$s/oldstring/newstring/ from columns 1 to last ($), substitute from cursor forwards
:1,10s/oldstring/newstring/g from columns 1 to 10, substitute globally (all lines)
SPECIAL COLUMN DESIGNATORS IN REPLACE:
$ last column on the current line
^ first column on the current line
Delete unwanted control characters from a Windows text file
:1,$s/^M//g from line 1 to last line ($), get rid of the Control-M (carriage return)
NOTE: to enter ^M above, first enter [control-V], to get into the mode expecting
control char, followed immediately by [control-M]
Miscellaneous Commands
. repeat last command
u undoes last command issued
J join current line with the next line
^G display current line number
READING (IMPORTING) FILES copies (reads) filename into current file after cursor
:r filename
TO COPY PART OF ONE FILE TO ANOTHER FILE:
1) vi file1 file2 (this puts into file1 first)
2) copy lines from file1 (yank and put them back)
3) from file1, enter :n! to move to next file
4) put the lines into the next file
SHELL ESCAPE executes 'cmd' as a shell command.
:!'cmd'