Keyboard Shortcuts and Terminal Tricks That Save Developers 1 Hour Every Day
W
Writer
Published: 16 Jun 2026
11 min read
High-ROI shortcuts for VS Code multi-cursor editing, Chrome DevTools, Bash readline, Git CLI aliases, tmux session management, and fzf fuzzy find — with a practice schedule.
The Compounding Math of Keyboard Shortcuts
A developer who saves 5 seconds per minute through better keyboard habits saves 40 minutes every 8-hour workday. Over a year, that is 170 hours — more than four full work weeks. Unlike most productivity advice, shortcuts compound: each one becomes automatic within a week of deliberate practice, and you add another on top.
This guide skips the obvious (Ctrl+C, Ctrl+V) and focuses on high-ROI shortcuts that most developers do not use — VS Code multi-cursor editing, Chrome DevTools navigation, Bash readline commands, Git CLI aliases, and tmux session management. Each section ends with a 'this week' practice target so you build habits incrementally rather than trying to memorise 100 shortcuts at once.
Learn one shortcut per day. Use it exclusively for that action for one week — no mouse fallback. After seven days of forcing yourself, the shortcut is automatic and costs zero conscious thought. Trying to learn ten at once guarantees you learn zero.
VS Code — The 20 Shortcuts That Matter Most
Navigation
Shortcut (Win/Linux)
Shortcut (Mac)
Action
Ctrl+P
⌘P
Quick open file by name — faster than any file tree
Ctrl+Shift+P
⌘⇧P
Command palette — every VS Code action by name
Ctrl+G
⌘G (then line#)
Go to line number
Ctrl+Tab
⌃Tab
Cycle through open editor tabs
Alt+Left/Right
⌃-/⌃⇧-
Navigate backward/forward in edit history
Ctrl+`
⌃`
Toggle integrated terminal
Ctrl+B
⌘B
Toggle sidebar — instant screen space reclaim
Ctrl+\
⌘\
Split editor — view two files side by side
Multi-Cursor Editing — The Highest ROI Feature in VS Code
Multi-cursor editing eliminates entire categories of repetitive text manipulation. A rename that would take 30 manual edits takes 3 seconds. A data transformation that would require a regex find-replace becomes a visual operation.
Shortcut (Win/Linux)
Shortcut (Mac)
Action
Ctrl+D
⌘D
Select next occurrence of current word — keep pressing to select more
Ctrl+Shift+L
⌘⇧L
Select ALL occurrences of current word simultaneously
Alt+Click
⌥Click
Add cursor at click position
Ctrl+Alt+Down/Up
⌘⌥Down/Up
Add cursor on line below/above
Ctrl+Shift+Alt+↓
⌘⇧⌥↓
Duplicate line down
Alt+Up/Down
⌥Up/Down
Move current line up/down
Ctrl+Shift+K
⌘⇧K
Delete current line entirely
The Ctrl+D Workflow
Place cursor on a variable name → Ctrl+D repeatedly to select each occurrence → type the new name. All instances update simultaneously. This is faster and safer than find-replace because you see exactly which instances are selected before you type.
Code Intelligence Shortcuts
Shortcut (Win/Linux)
Shortcut (Mac)
Action
F12
F12
Go to definition
Alt+F12
⌥F12
Peek definition (inline, no navigation)
Shift+F12
⇧F12
Find all references
F2
F2
Rename symbol across all files
Ctrl+.
⌘.
Quick fix / suggested action at cursor
Ctrl+Shift+O
⌘⇧O
Go to symbol in current file
Ctrl+T
⌘T
Go to symbol across all files
This Week's VS Code Practice
✓Day 1–2: Use Ctrl+P instead of clicking file tree for every file open
✓Day 3–4: Use Ctrl+D for every rename instead of find-replace
✓Day 5: Use F12 and Alt+F12 for every 'what does this function do' moment
✓Day 6–7: Use Alt+Up/Down to reorder code blocks instead of cut-paste
Chrome DevTools — Shortcuts Most Developers Never Learn
Panel Navigation
Shortcut
Action
Ctrl+Shift+J (Win) / ⌘⌥J (Mac)
Open DevTools directly to Console
Ctrl+Shift+C / ⌘⇧C
Open DevTools with element inspector active
Ctrl+[ and Ctrl+]
Navigate between DevTools panels (Elements, Console, Network...)
Ctrl+F in Elements
Search the DOM by selector, text, or XPath
Ctrl+Shift+F
Search across ALL files loaded by the page
Ctrl+P in DevTools
Quick open any file loaded by the page (like VS Code's Ctrl+P)
Ctrl+G in Sources
Go to line in current file
Console Power Features
javascript
Chrome DevTools Console Tricks
// $0 — references the last element you inspected in Elements panel
$0.classList// instantly inspect classes of selected element// $$ — querySelectorAll shorthand
$$('button[disabled]') // find all disabled buttons on page// $_ — last evaluated expression2 + 2// returns 4
$_ * 10// returns 40 (uses previous result)// copy() — copy any value to clipboardcopy(performance.timing) // copy timing object as JSON// monitor() — log every call to a functionmonitor(fetch) // logs every fetch() call with arguments// table() — display arrays/objects as a tableconsole.table(users) // renders array of objects as sortable table// Conditional breakpoints — right-click line number in Sources// Set condition: userId === '123' (only breaks for that user)
Network Panel Shortcuts
Ctrl+R — reload page and capture all network requests
Ctrl+Shift+R — hard reload (bypass cache) + capture requests
Right-click any request → Copy → Copy as fetch — paste directly into console to replay
Right-click any request → Copy → Copy as cURL — share exact request with teammates
Filter bar: type 'status-code:404' or 'mime-type:application/json' to narrow requests
Shift+click a redirect chain request — highlights initiator (green) and dependencies (red)
Bash and Zsh Readline — The Terminal Shortcuts Nobody Teaches
Most developers navigate the terminal one character at a time using arrow keys. Bash and Zsh have Emacs-style readline bindings built in that let you move and edit at word and line speed — no plugin required.
Shortcut
Action
Ctrl+A
Move cursor to beginning of line
Ctrl+E
Move cursor to end of line
Alt+B
Move cursor back one word
Alt+F
Move cursor forward one word
Ctrl+W
Delete word before cursor
Alt+D
Delete word after cursor
Ctrl+K
Delete from cursor to end of line
Ctrl+U
Delete from cursor to beginning of line
Ctrl+Y
Paste (yank) last deleted text
Ctrl+R
Reverse search command history — type to filter
Ctrl+G
Exit history search without running command
!!
Repeat last command (useful: sudo !!)
!$
Last argument of previous command
Alt+.
Cycle through last arguments of previous commands
Ctrl+R Is the Most Underused Terminal Shortcut
Press Ctrl+R and start typing any part of a previous command — bash searches backwards through your history in real time. Press Ctrl+R again to cycle to the earlier matching command. This eliminates 90% of up-arrow navigation for commands you have run before.
# Undo last commit but keep changes staged
git reset --soft HEAD~1
# Undo last commit and unstage changes (keep files)
git reset HEAD~1
# Stage only specific lines/hunks from a file (interactive)
git add -p filename.ts
# Stash with a descriptive name
git stash push -m "wip: auth refactor before hotfix"# List stashes with names
git stash list
# Apply a specific stash without removing it
git stash apply stash@{2}
# Find the commit that introduced a bug (binary search)
git bisect start
git bisect bad # current commit is broken
git bisect good v1.2.3 # this tag was working# git tests each midpoint — mark good/bad until found
git bisect reset # cleanup when done# See what changed in a commit without checking it out
git show abc1234 --stat# Search commit messages
git log --grep="fix auth" --oneline
# Search code changes across all commits
git log -S "functionName" --oneline
# Clean up merged local branches
git branch --merged main | grep -v main | xargs git branch -d
Git Config Shortcuts (.gitconfig)
ini
~/.gitconfig
[alias]st = status
co = checkout
br = branch
ci = commit
unstage = reset HEAD --
last = log -1 HEAD
lg = log --oneline --graph --decorate --all -20undo = reset --soft HEAD~1wip = !git add -A && git commit -m "wip"unwip = reset HEAD~1aliases = config --get-regexp alias
[core]autocrlf = input # Windows: true | Mac/Linux: inputeditor = code --wait # Use VS Code as git editor[pull]rebase = true# Prefer rebase over merge on pull[push]autoSetupRemote = true# Auto-set upstream on first push
tmux — Persistent Terminal Sessions
tmux is a terminal multiplexer — it lets you run multiple terminal sessions inside one window, split panes, and most importantly, detach and reattach sessions. SSH into a server, start a long-running process in tmux, disconnect, reconnect hours later — the process is still running, the output is still there.
Essential tmux Commands
bash
tmux Quick Reference
# Sessions
tmux new -s dev # new session named 'dev'
tmux ls# list sessions
tmux attach -t dev # attach to session named 'dev'
tmux kill-session -t dev # kill session# Inside tmux — prefix key is Ctrl+B by default
Ctrl+B d # detach (session keeps running)
Ctrl+B $ # rename current session
Ctrl+B s # list and switch sessions# Windows (tabs)
Ctrl+B c # create new window
Ctrl+B , # rename current window
Ctrl+B n/p # next/previous window
Ctrl+B 0-9 # switch to window by number
Ctrl+B w # list windows# Panes (splits)
Ctrl+B % # split vertically (left/right)
Ctrl+B " # split horizontally (top/bottom)
Ctrl+B arrow # move between panes
Ctrl+B z # zoom current pane (toggle fullscreen)
Ctrl+B x # close current pane
Ctrl+B {/} # swap pane position
Recommended tmux Workflow for Developers
bash
Dev Session Setup (~/.tmux-dev.sh)
#!/bin/bash# Run: bash ~/.tmux-dev.sh# Creates a consistent dev layout every time
tmux new-session -d -s dev -n editor
tmux send-keys -t dev:editor 'code .' Enter
tmux new-window -t dev -n server
tmux send-keys -t dev:server 'npm run dev' Enter
tmux new-window -t dev -n git
tmux split-window -h -t dev:git
tmux send-keys -t dev:git 'git log --oneline -10' Enter
tmux select-window -t dev:editor
tmux attach-session -t dev
fzf — Fuzzy Find Everything
fzf is a command-line fuzzy finder that transforms how you interact with the terminal. It hooks into your shell's Ctrl+R (history search), Ctrl+T (file search), and Alt+C (directory navigation) — making all three interactive and filterable. Install it once and every terminal operation becomes faster.
bash
Installing and Using fzf
# Install (macOS)
brew install fzf && $(brew --prefix)/opt/fzf/install
# Install (Linux/WSL)
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
~/.fzf/install
# After install, these shell shortcuts are enhanced:
Ctrl+R # fuzzy search history (replaces basic reverse search)
Ctrl+T # fuzzy search files and paste path to command line
Alt+C # fuzzy search directories and cd into them# Custom fzf aliases — add to .zshrc# Interactive git branch checkoutalias gcof='git checkout $(git branch | fzf)'# Interactive git log vieweralias glf='git log --oneline | fzf --preview "git show {1}"'# Kill process by name (interactive)alias kp='kill $(ps aux | fzf | awk "{print $2}")'
Putting It Together — A Daily Keyboard-First Routine
1
Morning: Open Your Dev Session: Run your tmux-dev.sh script. Server starts, editor opens. No clicking around to reconstruct your environment from yesterday.
2
During Coding: VS Code Multi-Cursor First: Any time you reach for the mouse to click a menu, ask if a shortcut exists. Ctrl+Shift+P if you do not know the shortcut — type what you want to do in plain English.
3
During Debugging: DevTools Keyboard Nav: Ctrl+P to open files, Ctrl+G to go to line, Ctrl+R to replay failed request. Never click the Network panel request list — use the filter bar.
4
Git Operations: Aliases Only: Use your .gitconfig aliases for every git command. If you type a full 'git checkout', add the alias immediately so you never type it again.
5
Context Switches: Ctrl+R in Terminal: Before scrolling history with the up arrow, press Ctrl+R and type a fragment of the command. You will find it in under 2 seconds instead of 20.
Frequently Asked Questions
Should I use Vim keybindings in VS Code?
Only if you already know Vim. The VS Code Vim extension (vscodevim) is excellent, but learning Vim motions while also learning your codebase and your tools is cognitive overload. If you are Vim-curious, practice Vim in isolation first — use vimtutor for 30 minutes a day for two weeks before enabling it in VS Code.
Are these shortcuts the same on Windows vs Mac?
The VS Code shortcuts follow a consistent pattern: Ctrl on Windows/Linux = ⌘ on Mac, Alt on Windows/Linux = ⌥ on Mac. The table in this article shows both. Terminal shortcuts (Ctrl+A, Ctrl+R etc.) are the same on Linux, macOS Terminal, and WSL on Windows.
I use Windows — can I still use tmux?
Yes, via WSL2 (Windows Subsystem for Linux). Install Ubuntu from the Microsoft Store, enable WSL2, and install tmux inside it. WSL2 runs at near-native Linux performance. Alternatively, Windows Terminal has split panes and profiles built in — a lighter option if you do not need persistent sessions.
How do I remember all these shortcuts?
You do not try to remember them all at once. Print the 5 shortcuts you want to learn this week and tape them to your monitor. After a week, they are automatic and you pick 5 more. After 3 months of this, you have 60 automatic shortcuts — more than most senior developers.
What is the single highest-ROI shortcut to learn first?
Ctrl+P in VS Code. It replaces all file-tree navigation and is used dozens of times per hour in any active coding session. Second is Ctrl+R in the terminal. These two alone save 20+ minutes per day for most developers.
Key Takeaways
Learning one shortcut per day and forcing yourself to use it exclusively for a week is faster than memorising lists
VS Code's Ctrl+D (multi-cursor select next occurrence) and F2 (rename symbol) eliminate entire classes of repetitive editing
Bash Ctrl+R (reverse history search) and Ctrl+W (delete word) are the highest-ROI terminal shortcuts most developers miss
Git aliases in .gitconfig reduce daily git commands from 30+ characters to 2–3 keystrokes
tmux persistent sessions are essential for remote servers and keep your dev environment reproducible with a startup script
fzf transforms Ctrl+R, Ctrl+T, and Alt+C into interactive fuzzy-search operations — install it once, benefit forever