一直以爲 Vim 按鍵很差記,直到最近系統的學了一遍,按增(add)、刪(delete)、改(update)、查找(find)、移動光標(navigate)、滾動(scroll)、生產效率(productivity)、其它(other)分類記憶,才感受舒坦了。express
- basic a append A append at the end of the line i insert I insert at the beginning of the line
- line o append a new line O insert a new line before the current line
- basic x delete a character X delete the character before the cursor D delete to the end of the line
- combo d? delete ? dd delete the current line di? delete inner contents, for example: di> da? delete whole group
- basic s substitute a character C change to the end of the current line
- combo c? change ? cc change the current line r replace (overwrite) a character
- in line f? find forward in the current line F? find backward
- in file * find the word under cursor % find matching bracket: ( ), [ ] or { } / search forward ? search backward n find next N find previous [Tab goto defination
- direction h left j down k up l right
- by word w next beginning e next end b previous beginning
- in line 0 beginning $ end _ first non-blank character
- in file gg beginning G end :10 goto line 10
- in screen H highest M middle L lowest
- history C-o jump to last cursor position (ctrl-o) C-i jump to next (ctrl-i)
- bookmark m? create a bookmark and assign a key to it `? goto a bookmark
- by line C-y line down (ctrl-y) C-e line up (ctrl-e)
- by page C-f page down (ctrl-f) C-b page up (ctrl-b)
- locked zz scroll the line with the cursor to the center of the screen zt scroll the line with the cursor to the top zb scroll the line with the cursor to the bottom
- select v select V select rows C-v select block (ctrl-v)
- copy y? yank yy yank the current line
- paste p paste after P paste before
- undo/redo u undo C-r redo (ctrl-r)
- replace :s/old/new replace in the current line :s/old/new/g replace all in the current line :10,20s/old/new/g replace all in between line 10 and 20 :%s/old/new/g replace all in the file :%s/old/new/gc replace all in the file with confirmation
- indent >> indent the current line << unindent the current line >iB indent in-block code <iB unindent in-block code == reindent the current line =% reindent block
- macro q? start recording a macro and assign a key to it q stop recording @? playback a macro @@ replay previously played macro
- misc . repeat last command 10x remove 1 character, repeat 10 times C-n auto-complete (ctrl-n) ~ invert the case of selected text J join the next line
- quit :q quit :wq write and quit :q! quit without saving changes
- tab :tabe open file in a new tab :tabn next tab :tabp previous tab
- regex in regular expressions you must backslash the character + \v reduce backslashing
- misc :e new :o open :w write C-z goto console (ctrl-z) C-g show current status (ctrl-g) :! ? execute an external command :h ? get help info about ?