I'm a Ruby programming trying to switch from Textmate to MacVim, and I'm having trouble wading through the gargantuan lists of things you can do in VIM and all of the keypresses for them. I'm tired of hearing "You can use 'I' for inserting text, or 'a' for appending text after the character, or 'A' for appending text at the end of the line, or…" I can't imagine everyone uses all 20 different keypresses to navigate text, 10 or so keys to start adding text, and 18 ways to visually select an inner block. Or do you!?
My ideal cheat sheet would be the 30-40 most-used keypresses or commands that everyone uses for writing code on a daily basis, along with the absolute essential plugins that rubyists use daily and the 10 most-used commands for them. In theory, once I have that and start becoming as proficient in VIM as I am in Textmate, then I can start learning the thousands of other VIM commands that will make me more efficient.
Or, am I learning VIM the wrong way altogether?
Here's a tip sheet I wrote up once, with the commands I actually use regularly:
References
vim documentation online advanced vim tips more useful tips and graphical cheat sheet General
Nearly all commands can be preceded by a number for a repeat count. eg. 5dd delete 5 lines <Esc>
gets you out of any mode and back to command mode Commands preceded by : are executed on the command line at the bottom of the screen :help help with any command Navigation
Cursor movement: ← h ↓ j ↑ k l→ By words: w next word (by punctuation); W next word (by spaces) b back word (by punctuation); B back word (by spaces) e end word (by punctuation); E end word (by spaces) By line: 0 start of line; ^ first non-whitespace $ end of line By paragraph: { previous blank line; } next blank line By file: gg start of file; G end of file 123G go to specific line number By marker: mx set mark x; 'x go to mark x '. go to position of last edit ' ' go back to last point before jump Scrolling: ^F forward full screen; ^B backward full screen ^D down half screen; ^U up half screen ^E scroll one line up; ^Y scroll one line down zz centre cursor line Editing
u undo; ^R redo . repeat last editing command Inserting
All insertion commands are terminated with <Esc>
to return to command mode.
i insert text at cursor; I insert text at start of line a append text after cursor; A append text after end of line o open new line below; O open new line above Changing
All change commands except r and R are terminated with <Esc>
to return to command mode.
r replace single character; R replace multiple characters s change single character cw change word; C change to end of line; cc change whole line c <motion>
changes text in the direction of the motion ci( change inside parentheses (see text object selection for more examples) Deleting
x delete char dw delete word; D delete to end of line; dd delete whole line d <motion>
deletes in the direction of the motion Cut and paste
yy copy line into paste buffer; dd cut line into paste buffer p paste buffer below cursor line; P paste buffer above cursor line xp swap two characters ( x to delete one character, then p to put it back after the cursor position) Blocks
v visual block stream; V visual block line; ^V visual block column most motion commands extend the block to the new cursor position o moves the cursor to the other end of the block d or x cut block into paste buffer y copy block into paste buffer > indent block; < unindent block gv reselect last visual block Global
:%s/foo/bar/g substitute all occurrences of "foo" to "bar" % is a range that indicates every line in the file /g is a flag that changes all occurrences on a line instead of just the first one Searching
/ search forward; ? search backward * search forward for word under cursor; # search backward for word under cursor n next match in same direction; N next match in opposite direction fx forward to next character x; Fx backward to previous character x ; move again to same character in same direction; , move again to same character in opposite direction Files
:w write file to disk :w name
write file to disk as name
ZZ write file to disk and quit :n edit a new file; :n! edit a new file without saving current changes :q quit editing a file; :q! quit editing without saving changes :e edit same file again (if changed outside vim) :e . directory explorer Windows
^Wn new window ^Wj down to next window; ^Wk up to previous window ^W_ maximise current window; ^W= make all windows equal size ^W+ increase window size; ^W- decrease window size Source Navigation
% jump to matching parenthesis/bracket/brace, or language block if language module loaded gd go to definition of local symbol under cursor; ^O return to previous position ^] jump to definition of global symbol (requires tags
file); ^T return to previous position (arbitrary stack of positions maintained) ^N (in insert mode) automatic word completion Show local changes
Vim has some features that make it easy to highlight lines that have been changed from a base version in source control. I have created a small vim script that makes this easy: http://github.com/ghewgill/vim-scmdiff
http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html
This is the greatest thing ever for learning VIM.
Here is a great cheat sheet for vim:
链接地址:
http://www.djcxy.com/p/49488.html
上一篇:
如何在VI编辑器中删除选定的文本
下一篇:
使用vim命令/按键?