##motions
motion | description
------------- | -------------
h | Count characters left
l | Count characters right
^ | To the first character of the line
$ | To the last character of the line
f<char> | To the counth character occurrence to the right. F<char> to the counth character occurrence to the left
t<char> | To 1 character just before the counth character occurrence to the right
T<char> | To 1 character just before the counth character occurrence to the left
w | Count words forward
W | Count words forward (different definition for what a word is, includes special characters and such)
e | Count forward to the end of word
b | Count words backward
i<{<"'> | Inside something like inside brackets or parenthesis for example
trigger | effect
------------- | -------------
c{motion} | Change
d{motion} | Delete
y{motion} | Yank into register
g~{motion}| Toggle case
gu{motion}| Make lowercase
gU{motion}| Make uppercase
>{motion} | Shift right
<{motion} | Shift left
={motion} | Auto-indent
##buffer management
command | description
------------- | -------------
<C-\^> or <C-6> | Switch to the buffer you just left
##split windows
command | description
------------- | -------------
<C-w>s or :sp[lit] <file>| Split file horizontally.
<C-w>v or :vsp[lit] <file>| Split file vertically
<C-w>w | cycle between open windows
<C-w>h | focus the window to the left
<C-w>j | focus the window below
<C-w>k | focus the window above
<C-w>l | focus the window to the right
:cl[ose] <C-w>c | close the active window
:on[ly] <C-w>o | keep only the active window, closing all others
##spelling
command | description
------------- | -------------
]s | Jump to next spelling error
[s | Jump to previous spelling error
z= | Suggest corrections for current word
zg | Add the current word to spell file
zw | Remove the current word from spell file
##code folding
command | description
------------- | -------------
zf{motion} | folds code when "foldmethod" set to manual or "marker"
za| toggle fold at cursor
zo| opens fold at cursor
zc| close fold at cursor
zR| open all
zM| close all
##search and replace
command | description
------------- | -------------
:args \*\*/\*.txt | Multi-file Step 1) populate the argument list with the files you want to search
:argdo %s/search/replace/gc | Mult-file Step 2) replace all occurrences of search with replace but prompt before doing so
* |search for the word under the cursor
##jumps
command | description
------------- | -------------
:jumps | display the jump list
<C-o> |jump backwards through the jump list
<C-i> |jump forwards through the jump list
:changes | display the change list
g; |jump backwards through the changes list
g, |jump forwards through the changes list
gf |jump to the file name under the cursor
##changes
command | description
------------- | -------------
:changes | display the change list
g; |jump backwards through the changes list
g, |jump forwards through the changes list
gf |jump to the file name under the cursor
##marks
command | description
------------- | -------------
:marks | display the marks list
m<upper case> |set a file bookmark
m<lower case> |set a buffer bookmark
'<character> |jump to the mark
''|jump to the line in the current buffer where jumped from
:delmarks <character>|delete specified mark
:delmarks a-d|delete marks a through d
:delmarks a,b,x,y|delete only marks a,b,x and y
:delmarks!|delete all lower case marks
##registers
command | description
------------- | -------------
:registers | display the register list
"<lower case register>{motion} |overwrite or use contents of register
"<upper case register>{motion} |append or use contents of register
0|populated with last yanked text
##macros
command | description
------------- | -------------
q{register} |start recording and store it in the specified register
q|stop recording
{count}@{register}|execute specified macro count times
##ctags
command | description
------------- | -------------
:tags |display the tags stack
<C-]> | goto definition
<C-t> | goto previous
:ta<method> | takes you to the method definition where method definition could be a regex that produces a list
:tn: | goes to next in list
:tp | goes to previous in list
:tf | goes to first in list
:tl | goes to last in list
##quickfix window
command | description
------------- | -------------
:copen | Open the quickfix window
:ccl | Close it
:cw | Open it if there are "errors", close it otherwise (some people prefer this)
:cn | Go to the next error in the window
:cnf | Go to the first error in the next file
:cc{num} | Go to the error by number
##Navigation
key | move to
------------- | -------------
% |End of construct
[[ |Backwards to the beginning of the current function.
][ |Forwards to the beginning of the current function.
]} |Beginning of the current block.
[{ |End of the current block.
}[ |Beginning of the current comment block.
}] |End of the current comment block.
gd |First usage of the current variable name. (Mnemonic: go to definition).
gD |Go to the first global usage of the current variable name.
gg |beginning of file
G |end of file
##Addon References
###ctags
command | effect
------------- | -------------
:!ctags -R |jump to first tag that matches word under the cursor
<C-]> | Prompt user to select from multiple matches for the word under the cursor.
g<C-]> | present a list of choices if there is more than a single tag to jump to
<C-t> | like the back button for tag history
:tag <keyword> | jump to first tag that matches word under the cursor
:tjump <keyword> | Prompt user to select from multiple matches for the word under the cursor.
:pop or <C-t> | Prompt user to select from multiple matches for the word under the cursor.
:tselect | Prompt user to choose an item from the tag matchlist
###tcomment
command | description
------------- | -------------
gc{motion} | Toggle comments (for small comments within one line the &filetype_inline style will be used, if defined)
gcc | Toggle comment for the current line
gC{motion} | Comment region
gCc | Comment the current line
<C- _ ><C- _ > | :TComment
<C- _ >b | :TCommentBlock
###vim-rails
command | description
------------- | -------------
:A | Alternate
:R | Related
:Rmodel | Model
:Rview | View
:Rcontroller | Controller
:help rails-navigation | Help on this plugin.
###vim-surround
command | description
------------- | -------------
cs<current><new> | change old delimeter to new
ds | remove delimeters
ysiw<delimiter> | wrap current word
S<delimiter> |while in visual mode
S= | in visual mode, rails ERB tag (requires vim-rails)
S- | in visual mode, rails ERB tag (requires vim-rails)
S# | in visual mode, rails ERB tag (requires vim-rails)
<C-s>= | rails ERB tag (requires vim-rails)
<C-s>- | rails ERB tag (requires vim-rails)
<C-s># | rails ERB tag (requires vim-rails)
##miscellaneous
command | description
------------- | -------------
v | enable characterwise Visual mode
V | enable linewise Visual mode
<C-v>| enable blockwise Visual mode
gv | reselect the last visual selection
o | go to other end of highlighted text
"+p | paste from system clipboard
:0,$d | delete every line in a file
<C-a> | increment number
<C-x> | decrement number
vit | select contents inside of an HTML tag
:map|List all currently define mappings
:verbose map|Display where mapping was defined
g/{pattern}/d|Delete every line matching pattern.
v/{pattern}/d|Delete every line _not_ matching pattern.