Disclaimer: Forked from here
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 |
| 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
| 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 |
| 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 |
| command |
description |
| :A |
Alternate |
| :R |
Related |
| :Rmodel |
Model |
| :Rview |
View |
| :Rcontroller |
Controller |
| :help rails-navigation |
Help on this plugin. |
| 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. |