Vim vs VS Code: the same editing tasks, side by side
Vim and VS Code are not two keymaps for the same model of editing; they are two models. Vim's keys are single letters that only mean something in normal mode (dd deletes a line because d is the delete operator and the second d means 'this line'), while VS Code's are chorded shortcuts that work regardless of state. The table pairs the same task in both so that someone moving between them, or running the Vim extension inside VS Code, can see where the keys differ and where one editor simply has no single-key equivalent.
| Task | Vim | VS Code |
|---|---|---|
| Save | :w | Ctrl + S |
| Quit / close editor | :q | Ctrl + W |
| Undo | u | — |
| Redo | Ctrl + r | — |
| Delete current line | dd | Ctrl + Shift + K |
| Copy (yank) current line | yy | Ctrl + C |
| Cut current line | dd | Ctrl + X |
| Paste | p | — |
| Find | / | Ctrl + F |
| Next match | n | F3 |
| Previous match | N | Shift + F3 |
| Replace | — | Ctrl + H |
| Go to file start | gg | — |
| Go to file end | G | — |
| Go to line | — | Ctrl + G |
| Line start / end | 0 | — |
| Page down / up | Ctrl + f | — |
| Split editor | :vsp | Ctrl + \ |
| Open another file | :e filename | Ctrl + P |
| Join lines | J | — |
| Toggle comment | — | Ctrl + / |
| Repeat last edit | . | — |
| Record / run macro | qa | — |
Gaps in the table are real gaps, not missing data. VS Code's undo, redo and paste are the OS-standard Ctrl + Z, Ctrl + Y and Ctrl + V, which our VS Code table omits because they are not editor-specific; Vim has no single command for 'replace all' outside the :s command-line syntax, and VS Code has no equivalent of Vim's repeat (.) or macros (qa / @a). The Vim movement keys h j k l and the text objects (ci" and di" on the Vim page) have no counterpart at all in stock VS Code.
If you use both, the practical rule is that VS Code's global shortcuts (Ctrl + P, Ctrl + Shift + P, Ctrl + `) keep working under the Vim extension, while the editing keys inside the text area follow Vim's modes. The full tables on each tool's page list the rest, including Vim's visual modes and VS Code's multi-cursor, debugging and panel shortcuts.
Full references: Vim (57) · VS Code (51) · all comparisons
How to use the table
Read a row as "the task, then each editor's way of doing it", and expect the Vim column to be shorter: a Vim entry such as ciw is three keystrokes that combine an operator and a text object, while the VS Code entry is one chord. Where the Vim column shows a command-line entry (:%s/…), it is a different mode again. Rows with a dash in one column mean the editor has no single equivalent — VS Code has no dot-repeat, Vim has no built-in multi-cursor — and those rows are the ones to read when deciding whether to install the Vim extension in VS Code or to learn VS Code's own multi-cursor model instead.
Which to learn
If you already know one, the table is a translation aid; if you know neither, start with VS Code's keys and add the Vim extension later, because the extension implements everything in the Vim column inside VS Code and lets the two models coexist. The full references for each editor are linked at the top, and the Vim page on this site explains the operator-plus-motion grammar that makes the Vim column make sense.