====== Vi ======
* built-in command line text editor for Mac and Linux
===== edit =====
* search and replace
// global replace
:%s/old-text/new-text/g
// global replace interactively and case insensitive
:%s/old-text/new-text/gci
// global replace limit to 6 occure
:%s/old-text/new-text/g 6
// replace all with 10-15 lines
:10,15s/finder/replacer/g
// live select replace
// ctrl-v to set line range then :s/ /g
// replace whole word only
:%s/\/was/g
// replace similar whole word
:%s/\<\(good\|nice\)\>/awesome/g
// replace wildchar pattern, ball01 ball02
:%s/ball..//g
// express
\=
!_\ is the same
^ start end $
* delete/cut range :n,md
Deletes lines n through m
* delete line containts
// delete lines contains keyword
:g/keyword
:g/keyword/d
// delete blank lines
:g/^\s*$/d
// delete all line NOT with pattern, not start with "
:g!/^\s*"/d
:v/^\s*"/d
// delete all line NOT with pattern, contains cat or dog or pig
:v/cat\|dog\|pig/d
* paste P
===== concept =====
2 modes
* Switch to normal mode:
* Switch to edit mode: i or a
Quit
* Exit Vi: :q
* Exit Vi (ignore changes): :q!
* Save: :w
* Save and Exit: :wq
* Switch to (edit) an other file: :edit FILENAME
^navigation |esc; then shortcut |
^cursor place |h (left) j (down) k (up) l (right) |
^line start/end |home / end |
^go to line 78 |:78 |
^display |cmd |
^show line number |:set number |
^off line number |:set nu! |
^hex mode |:%!xxd |
^exit hex |%!xxd -r |
^function |cmd |
^replace char |r |
^delete char/line |x / dd |
^paste |shift+p |
^find |:/wordToFind |
^find next/previous |n / N |
^replace once on current line |:s/OLD/NEW |
^replace all on current line |:s/OLD/NEW/g |
^replace all in range line |:#,#s/OLD/NEW/g (. for current line, $ for end line, 78 for line 78) |
^replace all in file |:%s/OLD/NEW/g |
[[http://www.lagmonster.org/docs/vi.html|cheat sheet]]