Vi
vi is a command line text editor available on nearly all Unix based computers by default. It has a GUI equivalent called vim.
Contents |
[edit] 1 Quick Guide
You can create a new text file or open an existing one by typing:
vi FILENAME
[edit] 1.1 Cursor movement
- h - move left
- j - move down
- k - move up
- l - move right
- w - jump by start of words (punctuation considered words)
- W - jump by words (spaces separate words)
- e - jump to end of words (punctuation considered words)
- E - jump to end of words (no punctuation)
- b - jump backward by words (punctuation considered words)
- B - jump backward by words (no punctuation)
- 0 - (zero) start of line
- ^ - first non-blank character of line
- $ - end of line
- G - Go To command (prefix with number - 5G goes to line 5)
- Ctrl-d - Scroll down
- Ctrl-u - Scroll up
- Ctrl-f - Scroll forward a page
- Ctrl-b - Scroll back a page
Note: Prefix a cursor movement command with a number to repeat it. For example, 4j moves down 4 lines.
[edit] 1.2 Insert Mode - Inserting/Appending text
- i - start insert mode at cursor
- I - insert at the beginning of the line
- a - append after the cursor
- A - append at the end of the line
- o - open (append) blank line below current line (no need to press return)
- O - open blank line above current line
- ea - append at end of word
- ESC - exit insert mode
[edit] 1.3 Editing
- r - replace a single character (does not use insert mode)
- J - join line below to the current one
- cc - change (replace) an entire line
- cw - change (replace) to the end of word
- c$ - change (replace) to the end of line
- s - delete character at cursor and subsitute text
- S - delete line at cursor and substitute text (same as cc)
- xp - transpose two letters (delete and paste, technically)
- u - undo
- . - repeat last command
[edit] 1.4 Marking text (visual mode)
- v - start visual mode, mark lines, then do command (such as y-yank)
- V - start Linewise visual mode
- o - move to other end of marked area
- CTRL+v - start visual block mode
- O - move to Other corner of block
- aw - mark a word
- ab - a () block (with braces)
- aB - a {} block (with brackets)
- ib - inner () block
- iB - inner {} block
- ESC - exit visual mode
[edit] 1.5 Visual commands
- > - shift right
- < - shift left
- y - yank (copy) marked text
- d - delete marked text
- ~ - switch case
[edit] 1.6 Cut and Paste
- yy - yank (copy) a line
- 2yy - yank 2 lines
- yw - yank word
- y$ - yank to end of line
- p - put (paste) the clipboard after cursor
- P - put (paste) before cursor
- dd - delete (cut) a line
- dw - delete (cut) the current word
- x - delete (cut) current character
[edit] 1.7 Exiting
- :w - write (save) the file, but don't exit
- :wq - write (save) and quit
- :q - quit (fails if anything has changed)
- :q! - quit and throw away changes
[edit] 1.8 Search/Replace
- /pattern - search for pattern
- ?pattern - search backward for pattern
- n - repeat search in same direction
- N - repeat search in opposite direction
- :%s/old/new/g - replace all old with new throughout file
- :%s/old/new/gc - replace all old with new throughout file with confirmations
[edit] 1.9 Working with multiple files
- :e filename - Edit a file in a new buffer
- :bnext (or :bn) - go to next buffer
- :bprev (of :bp) - go to previous buffer
- :bd - delete a buffer (close a file)
- :sp filename - Open a file in a new buffer and split window
- CTRL+ws - Split windows
- CTRL+ww - switch between windows
- CTRL+wq - Quit a window
- CTRL+wv - Split windows vertically
[edit] 2 Settings
[edit] 2.1 Tabs
:set tabstop=4
[edit] 2.2 Syntax
:set syntax=on
[edit] 2.3 Line numbers
On:
:set number
Off:
:set nonnumber
[edit] 2.4 Pasting
vi has a nasty tendency to mess up the autoindenting when you are pasting text into it. Before the pasting, use:
:set paste
And afterwards, use:
:set nopaste