Thursday, May 22, 2008

VI Commands

Summary of VI Commands

#
Starting

* vi /filename/.....start vi, edit specified file
* vi -R /filename/..start vi read-only, edit specified file
* view /filename/...start vi read-only, edit specefied file


#
Stopping

* :q!...............stop without saving data
* zz................save data and stop
* :wq...............save data and stop
* :x................save data and stop


#
Recovering After System Failure

* vi -r .............display names of files that can be recovered
* vi -r /filename/...start vi, recover specified file


#
Controlling the Display

* ^L................redisplay the current screen
* :set number ......display internal line numbers
* :set nonumber.....do not display internal line numbers


#
Moving the Cursor

* h.................move cursor one position left
* j.................move cursor one position down
* k.................move cursor one position up
* l.................move cursor one position right
* LEFT..............move cursor one position left
* DOWN..............move cursor one position down
* UP................move cursor one position up
* RIGHT.............move cursor one position right
* BACKSPACE.........move cursor one position left
* SPACE.............move cursor one position right
* -.................move cursor to beginning of previous line
* +.................move cursor to beginning of next line
* RETURN............move cursor to beginning of next line
* O.................move cursor to begining of current line
* $.................move cursor to end of current line
* ^.................move cursor to first non-space/tab in current line
* w.................move cursor forward to first character of next word
* e.................move cursor forward to last character of next word
* b.................move cursor backward to first character of previous word
* W.................same as w; ignore punctuation
* E.................same as e; ignore punctuation
* B.................same as b; ignore punctuation
* ).................move forward to next sentence beginning
* (.................move backward to previous sentence beginning
* }.................move forward to next paragraph beginning
* {.................move backward to previous paragraph beginning
* H.................move cursor to top line
* M.................move cursor to middle line
* L.................move cursor to last line


#
Moving Through the Editing Buffer

* ^F................move down(forward) one screenful
* ^B................move up(backward) one screenful
* n^F...............move down n screenfuls
* n^B...............move up n screenfuls
* ^D................move down a half screenful
* ^U................move up a half a screenful
* n^D...............move down n lines
* n^U...............move up n lines


#
Searching for a Pattern

* /rexp.............search forward for specified regular expression
* /.................repeat forward search for previous pattern
* ?rexp.............search backward for specified regular expression
* ?.................repeat backward search for previous pattern
* n.................repeat last / or ? command, same direction
* N.................repeat last / or ? ? command, opposite direction


#
Special Characters to Use in Regular Expressions

* /./...............match any single character except newline
* *.................match zero or more of the preceding characters
* ^.................match the beginning of a line
* $.................match the end of a line
* /<................match the beginning of a word
* />................match the end of a word
* []................match one of the enclosed characters
* [^]...............match any character taht is not enclosed
* \.................interpret the following symbol literally


#
Line Numbers

* nG................jump to line number n
* 1G................jump to first line in editing buffer
* G.................jump to last line in editing buffer
* :map g1G..........define macro so g will be the same as 1G


#
Inserting

* i.................change to insert mode: insert before cursor position
* a.................change to insert mode: insert after cursor position
* I.................change to insert mode: insert at start of current line
* A.................change to insert mode: insert at end of current line
* o.................change to insert mode: open below current line
* O.................change to insert mode: open above current line
* ESCAPE............leave insert mode, change to command mode


#
Making Changes

* r.................replace exactly 1 character (do not enter input mode)
* R.................replace by typing over
* s.................replace 1 character by insertion
* C.................replace from cursor to end of line by insertion
* cc................replace entire current line by insertion
* S.................replace entire current line by insertion
* cmove.............replace from cursor to move by insertion
* ~.................change the case of a letter


#
Replacing a Pattern

* :s/pattern/replace/.............substitute, current line
* :lines/pattern/replace/ ........substitute, specified line
* :line, lines/pattern/replace/..substitute, specified range
* :%s/pattern/replace/...........substitute, all lines


#
Undoing or Repeating a Change

* u.................undo last command that modified the editing buffer
* U.................restore current line
* /./...............repeat last command that modified the editing buffer


#
Controlling the Length of Lines

* rReturn...........replace a character with a newline
* J.................join lines
* :set wm=n.........auto line break within n positions of right margin


#
Deleting

* x.................delete character at cursor
* X.................delete character to left of cursor
* D.................delete from cursor to end of line
* dd................delete entire current line
* dmove .............delete from cursor to move
* dG................delete from current line to end of editing buffer
* d1G...............delete from current line to start of editing buffer
* :/lined/..........delete specified line
* :/line/, /lined/..delete specified range


#
Copying the Last Deletion

* P.................copy buffer; insert after/below cursor
* p.................copy buffer; insert before/above cursor
* xp................transpose two characters
* deep..............transpose two words(start to the left of first word)
* ddp...............transpose two lines


#
Copying and Moving Lines

* :linecotarget.........copy specified line; insert below target
* :line, linecotarget...copy specified range; inster below target
* :linemtarget..........move specified line; insert below target
* :line,linemtarget move.specified range; insert below target


#
Executing Shell Commands

* :!command...........pause vi, execute specified shell command
* :!!.................pause vi, execute previous shell command
* :sh.................pause vi, start a shell
* :!csh ...............pause vi, start a new C-Shell


#
Reading Data

* :liner file .........insert contents of file after specified line
* :r file..............insert contents of file after current line
* :liner !command......insert output of command after specified line
* :r !command .........insert output of command after current line
* :r !look pattern.....insert words that begin with specified pattern


#
Using Shell Commands to Process Data

* n!!command...........execute command on n lines
* !move command........execute command from cursor to move
* !movefmt.............format lines from cursor to move


#
Writing Data

* :w...................write data to original file
* :w file..............write data to specified file
* :w>> file............append data to specified file


#
Changing the File While Editing

* :e file..............edit the specified file
* :e! file.............edit the specified file, omit automatic check


#
Abbreviations

* :ab short long....set short as an abbreviation for long
* :ab...............display current abbreviations
* :una short........cancel abbreviation short

No comments: