====== 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]]