Essential Keyboard Shortcuts — VS Code, IntelliJ, Vim, Emacs Side-by-Side
In this tutorial, you'll learn about Essential Keyboard Shortcuts. We cover key concepts, practical examples, and best practices to help you understand and apply this topic effectively.
Keyboard shortcuts are the highest-leverage productivity investment a developer can make. Every second saved per operation compounds to hours saved per week. This reference maps the most common actions across the four major editor families so you can find the right shortcut regardless of which tool you use.
What You'll Learn
You'll get a side-by-side reference of the most important keyboard shortcuts in VS Code, IntelliJ IDEA, Vim, and Emacs, organized by action category, with tips for building muscle memory and transferring skills between editors.
Why Keyboard Shortcuts Matter
A developer performs 100+ navigation and editing operations per hour. Using keyboard shortcuts instead of the mouse saves 2-5 seconds per operation — that's 3-8 minutes per hour, or 2-4 hours per week. Over a year, that's 100-200 hours of reclaimed time.
DodaTech's engineering team maintains a shared keyboard shortcut cheat sheet that every new hire studies during their first week. The result: measurable productivity improvement of 25% across the team.
Learning Path
flowchart LR A[Editor Basics] --> B[Keyboard Shortcuts
You are here] B --> C[Speed Optimization] C --> D[Custom Keybindings] style B fill:#f90,color:#fff
Navigation Shortcuts
Cursor Movement
| Action | VS Code | IntelliJ IDEA | Vim | Emacs |
|---|---|---|---|---|
| Move up | Up | Up | k | C-p |
| Move down | Down | Down | j | C-n |
| Move left | Left | Left | h | C-b |
| Move right | Right | Right | l | C-f |
| Word left | Ctrl+Left | Ctrl+Left | b | M-b |
| Word right | Ctrl+Right | Ctrl+Right | w | M-f |
| Line start | Home | Home | 0 | C-a |
| Line end | End | End | $ | C-e |
| File start | Ctrl+Home | Ctrl+Home | gg | M-< |
| File end | Ctrl+End | Ctrl+End | G | M-> |
| Next empty line | — | — | } | M-} |
| Previous empty line | — | — | { | M-{ |
File and Symbol Navigation
| Action | VS Code | IntelliJ IDEA | Vim | Emacs |
|---|---|---|---|---|
| Find file | Ctrl+P | Ctrl+Shift+N | :e (path) | C-x C-f |
| Find class | Ctrl+T | Ctrl+N | — | — |
| Find symbol | Ctrl+Shift+O | Ctrl+Alt+Shift+N | :g/pattern | M-x |
| Go to line | Ctrl+G | Ctrl+G | :42 | M-g g |
| Go to definition | F12 | Ctrl+B | gd | M-. |
| Go back | Ctrl+Alt+- | Ctrl+Alt+Left | Ctrl+o | C-u C-SPC |
| Go forward | Ctrl+Shift+- | Ctrl+Alt+Right | Ctrl+i | C-u C-SPC C-u |
| Recent files | Ctrl+Tab | Ctrl+E | :bprevious | C-x b |
| Toggle sidebar | Ctrl+B | Ctrl+Shift+F12 | — | — |
Editing Shortcuts
Basic Editing
| Action | VS Code | IntelliJ IDEA | Vim | Emacs |
|---|---|---|---|---|
| Cut line | Ctrl+X | Ctrl+Y (delete) | dd | C-a C-k |
| Copy line | Ctrl+C | Ctrl+D (duplicate) | yy | C-@ |
| Paste | Ctrl+V | Ctrl+V | p | C-y |
| Undo | Ctrl+Z | Ctrl+Z | u | C-/ |
| Redo | Ctrl+Shift+Z | Ctrl+Shift+Z | Ctrl+r | C-g C-/ |
| Indent | Tab | Tab | >> | C-x TAB |
| Dedent | Shift+Tab | Shift+Tab | << | C-x TAB (adjust) |
| Comment line | Ctrl+/ | Ctrl+/ | gcc | M-; |
| Comment block | Shift+Alt+A | Ctrl+Shift+/ | gc (visual) | M-; |
| Format document | Shift+Alt+F | Ctrl+Alt+L | gg=G | C-x h C-M-\ |
| Delete word | Ctrl+Backspace | Ctrl+W | daw | M-d |
| Delete line | Ctrl+Shift+K | Ctrl+Y | dd | C-a C-k |
Multi-Cursor and Selection
| Action | VS Code | IntelliJ IDEA | Vim | Emacs |
|---|---|---|---|---|
| Insert cursor | Alt+Click | Alt+Click | — | — |
| Select all matches | Ctrl+Shift+L | Ctrl+Alt+Shift+J | :%s// | M-% |
| Add next match | Ctrl+D | Alt+J | * then n | M-C-n |
| Column select | Shift+Alt+Drag | Shift+Ctrl+Alt+Drag | Ctrl+v | C-x SPC |
| Select word | Ctrl+D | Ctrl+W | viw | M-f M-b |
| Expand selection | Shift+Alt+Right | Ctrl+W (grow) | v (visual) | C-@ |
Refactoring Shortcuts
| Action | VS Code | IntelliJ IDEA | Vim | Emacs |
|---|---|---|---|---|
| Rename | F2 | Shift+F6 | :%s/old/new/g | M-% |
| Extract method | Ctrl+Shift+R | Ctrl+Alt+M | — | — |
| Extract variable | Ctrl+Shift+R (extract) | Ctrl+Alt+V | — | — |
| Inline | Ctrl+Shift+R (inline) | Ctrl+Alt+N | — | — |
| Move line up | Alt+Up | Alt+Shift+Up | :m -2 | C-x C-u |
| Move line down | Alt+Down | Alt+Shift+Down | :m +1 | C-x C-d |
| Change signature | — | Ctrl+F6 | — | — |
| Find usages | Shift+F12 | Alt+F7 | :g/pattern | M-x rgrep |
Debugging Shortcuts
| Action | VS Code | IntelliJ IDEA | Vim | Emacs |
|---|---|---|---|---|
| Start debug | F5 | Shift+F9 | — | M-x gdb |
| Toggle breakpoint | F9 | Ctrl+F8 | :break | C-x SPC |
| Step over | F10 | F8 | :next | C-c C-n |
| Step into | F11 | F7 | :step | C-c C-s |
| Step out | Shift+F11 | Shift+F8 | :finish | C-c C-f |
| Continue | F5 | F9 | :continue | C-c C-c |
| Stop | Shift+F5 | Ctrl+F2 | :quit | C-c C-q |
| Evaluate expression | Ctrl+Shift+Y | Alt+F8 | :echo | C-c C-p |
Search Shortcuts
| Action | VS Code | IntelliJ IDEA | Vim | Emacs |
|---|---|---|---|---|
| Find in file | Ctrl+F | Ctrl+F | / | C-s |
| Find and replace | Ctrl+H | Ctrl+R | :%s/old/new/g | M-% |
| Find in project | Ctrl+Shift+F | Ctrl+Shift+F | :vimgrep // ** | M-x rgrep |
| Replace in project | Ctrl+Shift+H | Ctrl+Shift+R | :vimgrep // ** | M-x query-replace-regexp |
| Find next | F3/Enter | F3 | n | C-s |
| Find previous | Shift+F3 | Shift+F3 | N | C-r |
| Go to symbol | Ctrl+Shift+O | Ctrl+Alt+Shift+N | :tag | M-. |
Editor-Specific Tips
VS Code Tips
// Custom keybindings (keybindings.json):
[
{
"key": "ctrl+shift+/",
"command": "editor.action.blockComment",
"when": "editorTextFocus]
},
{
"key": "ctrl+alt+down",
"command": "editor.action.insertCursorBelow",
"when": "editorTextFocus"
}
]
IntelliJ Tips
// Learn shortcuts progressively:
// 1. Install Key Promoter X — shows shortcut for every clicked action
// 2. Practice with the IDE features trainer (Help → IDE Features Trainer)
// 3. Use Find Action (Ctrl+Shift+A) when you forget a shortcut
// Custom shortcuts:
// File → Settings → Keymap
// Search for any action and assign a shortcut
Vim Tips
" Learn shortcuts in Vim:
" 1. Run vimtutor (terminal command)
" 2. Add to .vimrc:
set showcmd " Show incomplete commands
set timeoutlen=300 " Shorter timeout for key sequences
" 3. Use :help key-notation to understand key names
Emacs Tips
;; Learn shortcuts in Emacs:
;; 1. Follow the built-in tutorial: C-h t
;; 2. Use the keybinding help:
;; C-h k <key> -- describe key
;; C-h b -- list all keybindings
;; C-h m -- describe current mode keybindings
Building Muscle Memory
Practice schedule for new shortcuts:
Week 1: Navigation shortcuts only (5-10 per day)
Week 2: Basic editing shortcuts (cut, copy, paste, undo, redo)
Week 3: Selection and multi-cursor operations
Week 4: Refactoring shortcuts
Week 5: Debugging shortcuts
Week 6: Custom keybindings and workflow optimization
Daily practice:
- Disable your mouse for 30 minutes
- Use keyboard-only mode for code review
- Print a cheat sheet and keep it visible
Common Shortcut Mistakes
1. Learning Too Many at Once
Learn 5 shortcuts per day maximum. Master them before adding more. Trying to learn 50 shortcuts at once leads to remembering none.
2. Relying on Mouse for Navigation
Every time you reach for the mouse, ask: "Is there a keyboard shortcut for this?" If yes, learn it. If no, create one.
3. Not Customizing Shortcuts
Default shortcuts don't suit everyone. If a common action feels awkward to type, rebind it. Dozens of developers rebind their IDE's default keymaps daily.
4. Ignoring Editor-Specific Features
Some actions don't have shortcuts in some editors. Multi-cursor in Vim requires plugins. Method extraction in Emacs requires a package. Know your editor's limits.
5. Using the Same Shortcut Across Editors
Muscle memory from one editor interferes with another. If you switch editors regularly, keep a cheat sheet for each one. Consider using one editor per project type.
Practice Questions
1. What is the keyboard shortcut for multi-cursor in VS Code and IntelliJ? VS Code: Alt+Click or Ctrl+D (add next match). IntelliJ: Alt+Click or Alt+J (add next match).
2. How do you find a file by name in each editor? VS Code: Ctrl+P. IntelliJ: Ctrl+Shift+N. Vim: :e or CtrlP plugin. Emacs: C-x C-f (find file) or Helm/M-x counsel-find-file.
3. What shortcut deletes an entire line in each editor? VS Code: Ctrl+Shift+K. IntelliJ: Ctrl+Y. Vim: dd. Emacs: C-a C-k (go to line start, kill to end).
4. What is the difference between a keybinding and a keyboard shortcut? They're the same concept — a key combination that triggers a command. "Keybinding" is more commonly used in configurable editors, while "keyboard shortcut" is the general term.
5. Challenge: You're reviewing a Pull Request with 30 files changed. Use only keyboard shortcuts to navigate each file, find changed lines, add comments, and approve the review. What shortcuts would you use? Answer: Open file list (Ctrl+P/Ctrl+E), navigate next file (Ctrl+Tab/Ctrl+PageDown), find changes (Ctrl+G in diff view or :g/^[+-]/ in Vim), comment (Ctrl+/ or gc), approve (browser-based PR tool with Tab navigation).
FAQ
What's Next
Built by the developers of Doda Browser, DodaZIP, and Durga Antivirus Pro. Updated 2026-06-23.
Built by the developers of DodaTech
Doda Browser, DodaZIP & Durga Antivirus Pro