Vim is a highly configurable text editor built to make creating and changing any kind of text very efficient. See how KeyCombiner can boost your Vim productivity.
id | Description | Keys | Keys (macOS) | Context | Category | Modifiers | |
---|---|---|---|---|---|---|---|
54194 | open help for keyword | ":h keyword" | ":h keyword" | Vim | Global | ||
54195 | save file as | ":sav file" | ":sav file" | Vim | Global | ||
54196 | close current pane | ":clo" | ":clo" | Vim | Global | ||
54197 | open a terminal window | ":ter" | ":ter" | Vim | Global | ||
54198 | open man page for word under the cursor | "K" | "K" | Vim | Global | ||
54199 | move cursor left | "h" | "h" | Vim | Cursor movement | ||
54200 | move cursor down | "j" | "j" | Vim | Cursor movement | ||
54201 | move cursor up | "k" | "k" | Vim | Cursor movement | ||
54202 | move cursor right | "l" | "l" | Vim | Cursor movement | ||
54203 | move to top of screen | "H" | "H" | Vim | Cursor movement | ||
54204 | move to middle of screen | "M" | "M" | Vim | Cursor movement | ||
54205 | move to bottom of screen | "L" | "L" | Vim | Cursor movement | ||
54206 | jump forwards to the start of a word | "w" | "w" | Vim | Cursor movement | ||
54207 | jump forwards to the start of a word (words can contain punctuation) | "W" | "W" | Vim | Cursor movement | ||
54208 | jump forwards to the end of a word | "e" | "e" | Vim | Cursor movement | ||
54209 | jump forwards to the end of a word (words can contain punctuation) | "E" | "E" | Vim | Cursor movement | ||
54210 | jump backwards to the start of a word | "b" | "b" | Vim | Cursor movement | ||
54211 | jump backwards to the start of a word (words can contain punctuation) | "B" | "B" | Vim | Cursor movement | ||
54212 | move to matching character (default supported pairs: '()', '{}', '[]' - use :h matchpairs in vim for more info) | "%" | "%" | Vim | Cursor movement | ||
54213 | jump to the start of the line | "0" | "0" | Vim | Cursor movement | ||
54214 | jump to the first non-blank character of the line | "^" | "^" | Vim | Cursor movement | ||
54215 | jump to the end of the line | "$" | "$" | Vim | Cursor movement | ||
54216 | jump to the last non-blank character of the line | "g_" | "g_" | Vim | Cursor movement | ||
54217 | go to the first line of the document | "gg" | "gg" | Vim | Cursor movement | ||
54218 | go to the last line of the document | "G" | "G" | Vim | Cursor movement | ||
54219 | go to line 5 | "5gg" | "5gg" | Vim | Cursor movement | ||
54220 | jump to next occurrence of character x | "fx" | "fx" | Vim | Cursor movement | ||
54221 | jump to before next occurrence of character x | "tx" | "tx" | Vim | Cursor movement | ||
54222 | jump to previous occurence of character x | "Fx" | "Fx" | Vim | Cursor movement | ||
54223 | jump to after previous occurence of character x | "Tx" | "Tx" | Vim | Cursor movement | ||
54224 | repeat previous f, t, F or T movement | ";" | ";" | Vim | Cursor movement | ||
54225 | repeat previous f, t, F or T movement, backwards | "," | "," | Vim | Cursor movement | ||
54226 | jump to next paragraph (or function/block, when editing code) | "}" | "}" | Vim | Cursor movement | ||
54227 | jump to previous paragraph (or function/block, when editing code) | "{" | "{" | Vim | Cursor movement | ||
54228 | center cursor on screen | "zz" | "zz" | Vim | Cursor movement | ||
54229 | move screen down one line (without moving cursor) | ctrl+e | ctrl+e | Vim | Cursor movement | ||
54230 | move screen up one line (without moving cursor) | ctrl+y | ctrl+y | Vim | Cursor movement | ||
54231 | move back one full screen | ctrl+b | ctrl+b | Vim | Cursor movement | ||
54232 | move forward one full screen | ctrl+f | ctrl+f | Vim | Cursor movement | ||
54233 | move forward 1/2 a screen | ctrl+d | ctrl+d | Vim | Cursor movement | ||
54234 | move back 1/2 a screen | ctrl+u | ctrl+u | Vim | Cursor movement | ||
54235 | insert before the cursor | "i" | "i" | Vim | Insert mode | ||
54236 | insert at the beginning of the line | "I" | "I" | Vim | Insert mode | ||
54237 | insert (append) after the cursor | "a" | "a" | Vim | Insert mode | ||
54238 | insert (append) at the end of the line | "A" | "A" | Vim | Insert mode | ||
54239 | append (open) a new line below the current line | "o" | "o" | Vim | Insert mode | ||
54240 | append (open) a new line above the current line | "O" | "O" | Vim | Insert mode | ||
54241 | insert (append) at the end of the word | "ea" | "ea" | Vim | Insert mode | ||
54242 | delete the character before the cursor during insert mode | ctrl+h | ctrl+h | Vim | Insert mode | ||
54243 | delete word before the cursor during insert mode | ctrl+w | ctrl+w | Vim | Insert mode | ||
54244 | begin new line during insert mode | ctrl+j | ctrl+j | Vim | Insert mode | ||
54245 | indent (move right) line one shiftwidth during insert mode | ctrl+t | ctrl+t | Vim | Insert mode | ||
54246 | de-indent (move left) line one shiftwidth during insert mode | ctrl+d | ctrl+d | Vim | Insert mode | ||
54247 | insert (auto-complete) next match before the cursor during insert mode | ctrl+n | ctrl+n | Vim | Insert mode | ||
54248 | insert (auto-complete) previous match before the cursor during insert mode | ctrl+p | ctrl+p | Vim | Insert mode | ||
54249 | exit insert mode | esc | esc | Vim | Insert mode | ||
54250 | replace a single character | "r" | "r" | Vim | Editing | ||
54251 | join line below to the current one with one space in between | "J" | "J" | Vim | Editing | ||
54252 | join line below to the current one without space in between | "gJ" | "gJ" | Vim | Editing | ||
54253 | reflow paragraph | "gwip" | "gwip" | Vim | Editing | ||
54254 | switch case up to motion | "g~" | "g~" | Vim | Editing | ||
54255 | change to lowercase up to motion | "gu" | "gu" | Vim | Editing | ||
54256 | change to uppercase up to motion | "gU" | "gU" | Vim | Editing | ||
54257 | change (replace) entire line | "cc" | "cc" | Vim | Editing | ||
54258 | change (replace) to the end of the line | "C" | "C" | Vim | Editing | ||
54259 | change (replace) to the end of the line | "c$" | "c$" | Vim | Editing | ||
54260 | change (replace) entire word | "ciw" | "ciw" | Vim | Editing | ||
54261 | change (replace) to the end of the word | "cw" | "cw" | Vim | Editing | ||
54262 | delete character and substitute text | "s" | "s" | Vim | Editing | ||
54263 | delete line and substitute text (same as cc) | "S" | "S" | Vim | Editing | ||
54264 | transpose two letters (delete and paste) | "xp" | "xp" | Vim | Editing | ||
54265 | undo | "u" | "u" | Vim | Editing | ||
54266 | restore (undo) last changed line | "U" | "U" | Vim | Editing | ||
54267 | redo | ctrl+r | ctrl+r | Vim | Editing | ||
54268 | repeat last command | "." | "." | Vim | Editing | ||
54269 | start visual mode, mark lines, then do a command (like y-yank) | "v" | "v" | Vim | Marking text (visual mode) | ||
54270 | start linewise visual mode | "V" | "V" | Vim | Marking text (visual mode) | ||
54271 | move to other end of marked area | "o" | "o" | Vim | Marking text (visual mode) | ||
54272 | start visual block mode | ctrl+v | ctrl+v | Vim | Marking text (visual mode) | ||
54273 | move to other corner of block | "O" | "O" | Vim | Marking text (visual mode) | ||
54274 | mark a word | "aw" | "aw" | Vim | Marking text (visual mode) | ||
54275 | a block with () | "ab" | "ab" | Vim | Marking text (visual mode) | ||
54276 | a block with {} | "aB" | "aB" | Vim | Marking text (visual mode) | ||
54277 | a block with <> tags | "at" | "at" | Vim | Marking text (visual mode) | ||
54278 | inner block with () | "ib" | "ib" | Vim | Marking text (visual mode) | ||
54279 | inner block with {} | "iB" | "iB" | Vim | Marking text (visual mode) | ||
54280 | inner block with <> tags | "it" | "it" | Vim | Marking text (visual mode) | ||
54281 | exit visual mode | esc | esc | Vim | Marking text (visual mode) | ||
54282 | shift text right | ">" | ">" | Vim | Visual commands | ||
54283 | shift text left | "<" | "<" | Vim | Visual commands | ||
54284 | yank (copy) marked text | "y" | "y" | Vim | Visual commands | ||
54285 | delete marked text | "d" | "d" | Vim | Visual commands | ||
54286 | switch case | "~" | "~" | Vim | Visual commands | ||
54287 | change marked text to lowercase | "u" | "u" | Vim | Visual commands | ||
54288 | change marked text to uppercase | "U" | "U" | Vim | Visual commands | ||
54289 | show registers content | ":reg" | ":reg" | Vim | Registers | ||
54290 | yank into register x | ""xy" | ""xy" | Vim | Registers | ||
54291 | paste contents of register x | ""xp" | ""xp" | Vim | Registers | ||
54292 | yank into the system clipboard register | ""+y" | ""+y" | Vim | Registers | ||
54293 | paste from the system clipboard register | ""+p" | ""+p" | Vim | Registers | ||
54294 | list of marks | ":marks" | ":marks" | Vim | Marks and positions | ||
54295 | set current position for mark A | "ma" | "ma" | Vim | Marks and positions | ||
54296 | jump to position of mark A | "`a" | "`a" | Vim | Marks and positions | ||
54297 | yank text to position of mark A | "y`a" | "y`a" | Vim | Marks and positions | ||
54298 | go to the position where Vim was previously exited | "`0" | "`0" | Vim | Marks and positions | ||
54299 | go to the position when last editing this file | "`"" | "`"" | Vim | Marks and positions | ||
54300 | go to the position of the last change in this file | "`." | "`." | Vim | Marks and positions | ||
54301 | go to the position before the last jump | "``" | "``" | Vim | Marks and positions | ||
54302 | list of jumps | ":ju" | ":ju" | Vim | Marks and positions | ||
54303 | go to newer position in jump list | ctrl+i | ctrl+i | Vim | Marks and positions | ||
54304 | go to older position in jump list | ctrl+o | ctrl+o | Vim | Marks and positions | ||
54305 | list of changes | ":changes" | ":changes" | Vim | Marks and positions | ||
54306 | go to newer position in change list | "g," | "g," | Vim | Marks and positions | ||
54307 | go to older position in change list | "g;" | "g;" | Vim | Marks and positions | ||
54308 | jump to the tag under cursor | ctrl+] | ctrl+] | Vim | Marks and positions | ||
54309 | record macro a | "qa" | "qa" | Vim | Macros | ||
54310 | stop recording macro | "q" | "q" | Vim | Macros | ||
54311 | run macro a | "@a" | "@a" | Vim | Macros | ||
54312 | rerun last run macro | "@@" | "@@" | Vim | Macros | ||
54313 | yank (copy) a line | "yy" | "yy" | Vim | Cut and paste | ||
54314 | yank (copy) 2 lines | "2yy" | "2yy" | Vim | Cut and paste | ||
54315 | yank (copy) the characters of the word from the cursor position to the start of the next word | "yw" | "yw" | Vim | Cut and paste | ||
54316 | yank (copy) to end of line | "y$" | "y$" | Vim | Cut and paste | ||
54317 | put (paste) the clipboard after cursor | "p" | "p" | Vim | Cut and paste | ||
54318 | put (paste) before cursor | "P" | "P" | Vim | Cut and paste | ||
54319 | delete (cut) a line | "dd" | "dd" | Vim | Cut and paste | ||
54320 | delete (cut) 2 lines | "2dd" | "2dd" | Vim | Cut and paste | ||
54321 | delete (cut) the characters of the word from the cursor position to the start of the next word | "dw" | "dw" | Vim | Cut and paste | ||
54322 | delete (cut) to the end of the line | "D" | "D" | Vim | Cut and paste | ||
54323 | delete (cut) to the end of the line | "d$" | "d$" | Vim | Cut and paste | ||
54324 | delete (cut) character | "x" | "x" | Vim | Cut and paste | ||
54325 | indent (move right) line one shiftwidth | ">>" | ">>" | Vim | Indent text | ||
54326 | de-indent (move left) line one shiftwidth | "<<" | "<<" | Vim | Indent text | ||
54327 | indent a block with () or {} (cursor on brace) | ">%" | ">%" | Vim | Indent text | ||
54328 | indent inner block with () | ">ib" | ">ib" | Vim | Indent text | ||
54329 | indent a block with <> tags | ">at" | ">at" | Vim | Indent text | ||
54330 | re-indent 3 lines | "3==" | "3==" | Vim | Indent text | ||
54331 | re-indent a block with () or {} (cursor on brace) | "=%" | "=%" | Vim | Indent text | ||
54332 | re-indent inner block with {} | "=iB" | "=iB" | Vim | Indent text | ||
54333 | re-indent entire buffer | "gg=G" | "gg=G" | Vim | Indent text | ||
54334 | paste and adjust indent to current line | "]p" | "]p" | Vim | Indent text | ||
54335 | write (save) the file, but don't exit | ":w" | ":w" | Vim | Exiting | ||
54336 | write out the current file using sudo | ":w !sudo tee %" | ":w !sudo tee %" | Vim | Exiting | ||
54337 | write (save) and quit | ":wq" | ":wq" | Vim | Exiting | ||
54338 | quit (fails if there are unsaved changes) | ":q" | ":q" | Vim | Exiting | ||
54339 | quit and throw away unsaved changes | ":q!" | ":q!" | Vim | Exiting | ||
54340 | write (save) and quit on all tabs | ":wqa" | ":wqa" | Vim | Exiting | ||
54341 | search for pattern | "/pattern" | "/pattern" | Vim | Search and replace | ||
54342 | search backward for pattern | "?pattern" | "?pattern" | Vim | Search and replace | ||
54343 | search for 'very magic' pattern (auto-interpret non-alphanumeric chars as special regex symbols) | "\vpattern" | "\vpattern" | Vim | Search and replace | ||
54344 | repeat search in same direction | "n" | "n" | Vim | Search and replace | ||
54345 | repeat search in opposite direction | "N" | "N" | Vim | Search and replace | ||
54346 | replace all old with new throughout file | ":%s/old/new/g" | ":%s/old/new/g" | Vim | Search and replace | ||
54347 | replace all old with new throughout file with confirmations | ":%s/old/new/gc" | ":%s/old/new/gc" | Vim | Search and replace | ||
54348 | remove highlighting of search matches | ":noh" | ":noh" | Vim | Search and replace | ||
54349 | search for pattern 'foo' in all .js files in every sub-directory (recursively) | ":vim /foo/ **/*.js" | ":vim /foo/ **/*.js" | Vim | Search in multiple files | ||
54350 | jump to the next match | ":cn" | ":cn" | Vim | Search in multiple files | ||
54351 | jump to the previous match | ":cp" | ":cp" | Vim | Search in multiple files | ||
54352 | open a window containing the list of matches | ":cope" | ":cope" | Vim | Search in multiple files | ||
54353 | edit a file in a new buffer | ":e file" | ":e file" | Vim | Working with multiple files | ||
54354 | go to the next buffer | ":bn" | ":bn" | Vim | Working with multiple files | ||
54355 | go to the previous buffer | ":bp" | ":bp" | Vim | Working with multiple files | ||
54356 | delete a buffer (close a file) | ":bd" | ":bd" | Vim | Working with multiple files | ||
54357 | go to a buffer by # | ":b#" | ":b#" | Vim | Working with multiple files | ||
54358 | go to a buffer by file | ":b file" | ":b file" | Vim | Working with multiple files | ||
54359 | list all open buffers | ":ls" | ":ls" | Vim | Working with multiple files | ||
54360 | open a file in a new buffer and split window | ":sp file" | ":sp file" | Vim | Working with multiple files | ||
54361 | open a file in a new buffer and vertically split window | ":vs file" | ":vs file" | Vim | Working with multiple files | ||
54362 | edit all buffers as vertical windows | ":vert ba" | ":vert ba" | Vim | Working with multiple files | ||
54363 | edit all buffers as tabs | ":tab ba" | ":tab ba" | Vim | Working with multiple files | ||
54364 | split window | ctrl+w s | ctrl+w s | Vim | Working with multiple files | ||
54365 | split window vertically | ctrl+w v | ctrl+w v | Vim | Working with multiple files | ||
54366 | switch windows | ctrl+w w | ctrl+w w | Vim | Working with multiple files | ||
54367 | quit a window | ctrl+w q | ctrl+w q | Vim | Working with multiple files | ||
54368 | exchange current window with next one | ctrl+w x | ctrl+w x | Vim | Working with multiple files | ||
54369 | make all windows equal height & width | ctrl+w = | ctrl+w = | Vim | Working with multiple files | ||
54370 | move cursor to the left window (vertical split) | ctrl+w h | ctrl+w h | Vim | Working with multiple files | ||
54371 | move cursor to the right window (vertical split) | ctrl+w l | ctrl+w l | Vim | Working with multiple files | ||
54372 | move cursor to the window below (horizontal split) | ctrl+w j | ctrl+w j | Vim | Working with multiple files | ||
54373 | move cursor to the window above (horizontal split) | ctrl+w k | ctrl+w k | Vim | Working with multiple files | ||
54374 | open a file in a new tab | ":tabnew" | ":tabnew" | Vim | Tabs | ||
54375 | move the current split window into its own tab | ctrl+w t | ctrl+w t | Vim | Tabs | ||
54376 | move to the next tab | "gt" | "gt" | Vim | Tabs | ||
54377 | move to the previous tab | "gT" | "gT" | Vim | Tabs | ||
54378 | move to tab number # | "#gt" | "#gt" | Vim | Tabs | ||
54379 | move current tab to the #th position (indexed from 0) | ":tabm #" | ":tabm #" | Vim | Tabs | ||
54380 | close the current tab and all its windows | ":tabc" | ":tabc" | Vim | Tabs | ||
54381 | close all tabs except for the current one | ":tabo" | ":tabo" | Vim | Tabs | ||
54382 | run the command on all tabs (e.g. :tabdo q - closes all opened tabs) | ":tabdo command" | ":tabdo cmd" | Vim | Tabs | ||
54383 | jump to start of next change | "]c" | "]c" | Vim | Diff | ||
54384 | jump to start of previous change | "[c" | "[c" | Vim | Diff | ||
54385 | obtain (get) difference (from other buffer) | "do" | "do" | Vim | Diff | ||
54386 | put difference (to other buffer) | "dp" | "dp" | Vim | Diff | ||
54387 | make current window part of diff | ":diffthis" | ":diffthis" | Vim | Diff | ||
54388 | update differences | ":dif" | ":dif" | Vim | Diff | ||
54389 | switch off diff mode for current window | ":diffo" | ":diffo" | Vim | Diff | ||
54390 | manually define a fold up to motion | "zf" | "zf" | Vim | Folding | ||
54391 | delete fold under the cursor | "zd" | "zd" | Vim | Folding | ||
54392 | toggle fold under the cursor | "za" | "za" | Vim | Folding | ||
54393 | open fold under the cursor | "zo" | "zo" | Vim | Folding | ||
54394 | open all folds at the cursor | "zO" | "zO" | Vim | Folding | ||
54395 | close fold under the cursor | "zc" | "zc" | Vim | Folding | ||
54396 | reduce (open) all folds by one level | "zr" | "zr" | Vim | Folding | ||
54397 | open all folds | "zR" | "zR" | Vim | Folding | ||
54398 | fold more (close) all folds by one level | "zm" | "zm" | Vim | Folding | ||
54399 | close all open folds | "zM" | "zM" | Vim | Folding | ||
54400 | delete all folds | "zE" | "zE" | Vim | Folding | ||
54401 | toggle folding functionality | "zi" | "zi" | Vim | Folding | ||
54402 | move to start of open fold. | "[z" | "[z" | Vim | Folding | ||
54403 | move to end of open fold. | "]z" | "]z" | Vim | Folding | ||
ID | Description | Keys | Keys (macOS) | Context | Category | Modifiers |
It is a core idea of KeyCombiner to not just practice any keyboard shortcuts, but to select what is useful for you.
Use this and other public collections to quickly build your own shortcut collections. The -icon shows at first glance which shortcuts are already in your collections. Hover over the icon to see the names of your collections that contain the respective shortcut.
These public tables can also serve as a cheat sheet to quickly look up keyboard shortcuts when you need them. However, the same can be done much quicker with KeyCombiner Desktop's instant lookup.
Please note that we are not in any way affiliated to the applications, companies, and trademarks listed as public collections. The data is gathered solely from official and public sources. If you are the copyright holder and wish to see your software removed, please get in touch and we will remove it quickly.
The combination table supports all popular multi-selection patterns. Hold Shift for range-selection. Use Ctrl for selecting multiple areas, and drag the mouse to select adjacent entries.
Copy the selected combinations to a personal collection via the Collect-button on top of the table.
Use the sidebar on the right to quickly filter through your collection by preset criteria. Use the different search fields for more complex queries.
Use the buttons at the top-left of the combination table to export the keyboard combinations in different formats. (Pro only)