Emergency vim
Vim Basics, Open File, Save, Quit
vi is one of unix's fuckup. Sometimes in a emergency situation you are forced to deal with vi, and fucking unix admins refuse to install emacs. Here's your help.
- To open a file, type in the shell prompt:
vi filename
- To quit without saving, press: Escape
:q!
Enter - To save current file, press: Escape
:w
Enter - To quit vi, type: Escape
:q
Enter
- Use arrow keys to move cursor.
- page up: Ctrl+b
- page down: Ctrl+f
To insert text, move cursor to the right place, then press i, then type your text. After you are done, type Escape to exit the insertion mode.
To delete text, move cursor to the right place and press x. (if x is inserted, that means you forgot to exit the insert mode. Type Escape to exit insertion mode. Type u to undo. use Ctrl+r to redo. )
When something doesn't work, or if you accidentally typed something and have no idea what is going on, try press Escape, then type u for undo.
If a cat jumped onto your keyboard and you cannot exit vi, type the shell suspend command Ctrl+z, which should get you back on the unix command prompt, then you can kill.
(by first find out the pid by ps auwwx | grep vi
, then kill -9 pid
).
Congratulation! You've learned emergency vi.
It may be confusing, but with the above you can edit any text files with vi.
Basic vi Commands
Remember, in vi, it has modes. At any one time, you are either in command mode or text insertion mode.
Switch to Command Mode
- Escape → switch to command mode.
Switch to Insertion Mode
- 【i】 → switch to insert mode. (position before cursor)
- 【a】 → switch to insert mode. (position after cursor)
- 【o】 → switch to insert mode and insert a empty line. (position after current line)
Undo, Redo
- 【u】 → undo
- Ctrl+r → redo
Cursor Movement
- 【j】 → down
- 【k】 → up
- 【h】 → left
- 【l】 → right
- 【w】 → next word
- 【b】 → prev word
- 【0】 → beginning of line
- 【$】 → end of line
- 【:8】 → line 8
- Ctrl+f → page down
- Ctrl+b → page up
- 【gg】 → beginning of file
- 【G】 → end of file
- 【:$】 → end of file
Deleting Text
- 【x】 → delete char
- 【8x】 → delete 8 chars
- 【dw】 → delete word
- 【8dw】 → delete 8 words
- 【D】 → delete from cursor to end of line
- 【dd】 → delete current line
- 【dG】 → delete from current line to end of file
Note that when you delete a word or many words, the word is automatically put into the clipboard.
Copy Text
- press 【v】 at the beginning of copy position, then move cursor, then press 【y】 to copy, 【d】 to cut.
- 【yy】 → copy current line
- 【3yy】 → copy 3 lines
Paste
- 【p】 → paste after the cursor.
- 【P】 → paste before the cursor.
Search
- 【/aa】 → search forward for text “aa”
- 【n】 → next occurrence
- 【N】 → previous occurrence
- 【*】 → find next occurrence of current word
Find Replace
- 【:s/aa/bb/g】 → find and replace ALL “aa” by “bb” in CURRENT LINE. “g” (global) means do it for all occurrences.
- 【:%s/aa/bb/gc】 → find and replace ALL “aa” by “bb” in whole file. “c” means ask for confirmation before each replacement.
- 【:20,30s/aa/bb/gc】 → find and replace “aa” by “bb” in line 20 to 30.
Comment/Uncomment Text
Press Ctrl+v (called “visual block”), move cursor to select, then press I # Escape to insert #
to all lines in the block.
To uncomment a block, do the same except just press 【x】 to kill a char.
Syntax Coloring
- 【:set syn=lang】 → the “lang” can be perl, c, cpp, html, php, JavaScript, python etc.
- 【:syntax on】 → Turn on syntax coloring
- 【:syntax off】 → Turn off syntax coloring
Line Numbers
- 【:set number】 → Turn on line numbers
- 【:set nonumber】 → Turn off line numbers
Opening File
- 【:tab path】 → opening file
- 【gf】 → open path under cursor
How to refresh buffer?
Type 【:e】
Vim Init Files
default vim init file path: ~/.vimrc
vim -u filename
→ start vim with a different init file.vim -u NONE
→ start vim without init.vim -u NORC
→ start vim without init but with plugin.