appwiki:vi

Differences

This shows you the differences between two versions of the page.


appwiki:vi [2021/08/28 08:05] (current) – created ying
Line 1: Line 1:
 +====== Vi ======
 +  * built-in command line text editor for Mac and Linux
 +===== edit =====
 +  * search and replace <code>
 +// 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/\<is\>/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 $
 +</code>
 +  * delete/cut range <code>:n,md
 +Deletes lines n through m</code>
 +  * delete line containts <code>
 +// 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
 +</code>
 +  * paste <code>P</code>
 +===== concept =====
 +
 +2 modes
 +  * Switch to normal mode:     <ESC>
 +  * 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]]