vi常见用法
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)
Note: Prefix a cursor movement command with a number to repeat it. For example, 4j moves down 4 lines.
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
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
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
Visual commands
· > - shift right
· < - shift left
· y - yank (copy) marked text
· d - delete marked text
· ~ - switch case
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
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
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
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
参考
[1] http://blog.csdn.net/zhuichao001/archive/2010/06/25/5693122.aspx
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)
Note: Prefix a cursor movement command with a number to repeat it. For example, 4j moves down 4 lines.
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
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
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
Visual commands
· > - shift right
· < - shift left
· y - yank (copy) marked text
· d - delete marked text
· ~ - switch case
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
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
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
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
替换
●:s/old/new/
●:s/old/new/g 替换一行中的所有old
●:#,#s/old/new/g 两行之间的所有old
●:%s/old/new/g 所有的old都替换
●:%s/old/new/gc 所有的old都替换,但是每次都提示
参考
[1] http://blog.csdn.net/zhuichao001/archive/2010/06/25/5693122.aspx