Skip to main content
Zhimalab
中文
VSCode Icebreaker 14-Day Quick Pass
0%
VSCode Icebreaker

14-Day Quick Pass

From editor configuration to an efficient dev workflow, one topic a day

🎯 14 lessonsFrom setup to real practice, step by step
✍️ Hands-On TasksPractical exercises for every lesson
🧠 Instant QuizzesTest right after learning to reinforce memory
💾 Auto-SaveProgress persists locally

🚀Start Your Journey

VSCode is the most widely used code editor in the world. These 14 days will take you from zero to proficient, covering every core skill a sophomore needs.

📦

Setup & Configuration

Install, interface, settings, shortcuts

Efficient Editing

Multi-cursor, search & replace, snippets

🐛

Debugging & Tools

Breakpoints, terminal, Git integration

🧩

Extension Ecosystem

Curated plugins, remote dev, collaboration

Day 01 · Setup

Meet VSCode and Its Interface

Install the editor and understand every panel

Install & configure Download and install VSCode, learn the four main panels
Command palette Master the universal entry point F1 / Ctrl+Shift+P
Theme customization Switch light/dark themes and adjust font size

🧭Why VSCode

VSCode (Visual Studio Code) is Microsoft's open-source, cross-platform code editor. It's not an IDE (it doesn't bundle a compiler), yet thanks to its lightweight core + extension ecosystem it has become the most widely used editor in the world. For second-year students, it's an all-rounder for C/Java/Python/frontend — one tool for every course assignment.

📦Installation

Install steps
      # macOS (Homebrew recommended)brew install --cask visual-studio-code
# Windows / Linux
# visit https://code.visualstudio.com to download the installer
# be sure to tick "Add to PATH" at install time
    

🪟Five Interface Regions

🎯

Activity Bar

The vertical bar on the far left, to switch between Explorer, Search, Git, Debug and Extensions

📁

Side Bar

Shows the content of the current view, such as the file tree or extension list

📝

Editor

The main battlefield for writing code, with multi-tab and split views

📉

Panel

Terminal, Problems, Output and Debug Console

🗺️

Status Bar

The bottom bar shows language, line/column, Git branch and encoding

⌨️The First Must-Learn Shortcut: Command Palette

The Command Palette is the soul of VSCode. Almost anything can be done from here — search for it when you can't remember a shortcut.

Command palette
      Ctrl+Shift+P   
# Windows / Linux open the Command PaletteCmd+Shift+P     
# macOS
# type "theme" to switch themes
# type "font size" to adjust font size
# type "toggle sidebar" to hide the Side Bar
    
💡 TipIn the Command Palette, commands start with >; entries without > let you jump to a file. Just type a file name to quickly open it.

Hands-On Tasks

Install VSCode and open it Make sure you can type code . in a terminal to open the current folder
Switch to a dark theme via the Command Palette Search Color Theme and choose Dark+ (default dark)
Set the font size to 15 in settings Search Preferences: Open Settings (UI) in the Command Palette

🧠Quick Quiz

Q What is the shortcut to open the Command Palette in VSCode?
A Ctrl+P
B Ctrl+Shift+P
C Ctrl+B
D Ctrl+`
Day 02 · Files

File Explorer and Workspace

Organize projects with folders, and understand folders vs. multi-root workspaces

Open a folder Learn to open a project with code .
File operations Create, rename, delete and drag-to-sort
Workspace Understand what .code-workspace does

📂Open a Project

The basic unit of work in VSCode is a "folder". The best way is to enter the project directory in a terminal and open it with code ..

shell
      # in the terminal, enter your project foldercd ~/Desktop/my-projectcode .              
# open the current folder in VSCodecode ~/Desktop/my-project   
# equivalent form
    
⚠️ NoteIf the terminal says code: command not found, the command isn't on PATH. On macOS open VSCode → Command Palette → search "shell command" → choose "Install 'code' command in PATH".

🗂️Explorer Operations

ActionShortcut / Method
New FileCtrl+N or right-click the file-tree empty area → New File
New FolderRight-click the file tree → New Folder
RenameSelect the file and press F2
DeleteSelect the file and press Delete
Copy File PathRight-click → Copy Path, or Shift+Alt+C
Reveal current file in the treeShift+Alt+R

🏢Workspace

When you open just one folder, that's "single-folder mode". When you need several folders at once (for example a frontend + backend pair of directories), use a workspace.

Create a multi-root workspace
      Menu File Add Folder to Workspace... add multiple folders, then File Save Workspace As... save as project.code-workspace
    

A .code-workspace file is a piece of JSON that records which folders are included and any shared settings. Just double-click it next time to restore the whole environment.

📌 Sophomore scenarioWhen working on a big course assignment, put "docs", "code" and "references" folders into one workspace and switch between them freely.

Hands-On Tasks

Create a folder named demo on the Desktop, then open it with code . Practice opening via the terminal
Create src/main.py and README.md in the Explorer Practice nested creation: typing src/main.py auto-creates the folder
Try adding a second folder and saving it as a workspace File → Add Folder to Workspace

🧠Quick Quiz

Q Which command opens the current directory in VSCode from a terminal?
A vscode .
B code .
C open . vscode
D edit .
Day 03 · Editing

Editing Fundamentals

Move, copy and delete lines like a pro so your typing gets faster

Line operations Move, copy and delete whole lines
Indentation Tab / Shift+Tab to adjust indent levels
Auto-save Configure the file save strategy

✂️Line-Level Editing

You'll use these operations hundreds of times a day. Train them into muscle memory.

ActionWindows / LinuxmacOS
Delete current lineCtrl+Shift+KCmd+Shift+K
Move current line upAlt+Option+
Move current line downAlt+Option+
Copy current line upShift+Alt+Shift+Option+
Copy current line downShift+Alt+Shift+Option+
Insert line belowCtrl+EnterCmd+Enter
Jump to line start/endHome / EndCmd+ /
💡 Handy tipYou don't need to select the whole line to delete/move it — just put the cursor on the line and press the shortcut. It's much faster than dragging with the mouse.

📐Indentation and Formatting

Indent
      # after selecting code:Tab           
# increase indentShift+Tab     
# decrease indent
# format the whole document: Shift+Alt+F   
# Windows / LinuxShift+Option+F 
# macOS
# format the selected part: Ctrl+K Ctrl+F
    

💾Auto-Save

Don't want to hit Ctrl+S manually every time? Turn on auto-save:

settings.json
      {  "files.autoSave": "afterDelay",  "files.autoSaveDelay": 1000}
    

Three modes: off (manual), afterDelay (auto-save after a 1-second pause), onFocusChange (save when you switch away).

Hands-On Tasks

Practice: write 5 lines of code and reorder them with Alt+↑/↓ Move whole lines without selecting first
Practice: use Shift+Alt+↓ to quickly duplicate a line Faster than Ctrl+C / Ctrl+V
Turn on afterDelay auto-save Search Auto Save in the Command Palette

🧠Quick Quiz

Q Without selecting any text, what happens when you press Ctrl+Shift+K (macOS: Cmd+Shift+K)?
A Nothing happens
B Deletes the whole line under the cursor
C Deletes a single word
D Clears the file
Day 04 · Multi-Cursor

Multi-Cursor Editing

Change ten places in one action — the core skill for batch editing

Multi-cursor Create multiple cursors in several ways
Column selection Edit aligned text with vertical block selection
Select same word Use Ctrl+D to batch-select identical words

Multi-Cursor: VSCode's Most Addictive Feature

Imagine typing in 10 places at once — that's multi-cursor. Renaming 10 variable occurrences used to take 10 operations; now it takes one.

🖱️Method 1: Alt+Click to Add a Cursor

Hold Alt (macOS Option) and click anywhere to add a new cursor. You can type in several places at once.

🔤Method 2: Ctrl+D to Select the Next Same Word

This is the superpower for renaming variables. Select a word, press Ctrl+D repeatedly to add every identical word to the selection, then rename them all at once.

multi-cursor
      # after selecting a word:Ctrl+D          
# select the next same word (macOS: Cmd+D)Ctrl+Shift+L  
# select all same words at onceCtrl+K Ctrl+D  
# skip current, select nextCtrl+U          
# undo last selection (go back)
    

📊Method 3: Column (Block) Selection

Hold Shift+Alt (macOS Shift+Option) and drag, or drag with the middle mouse button, to make a vertical rectangular selection. Great for editing aligned tables or adding batch comments.

Column selection shortcuts
      Shift+Alt+Drag   
# rectangular selectionCtrl+Shift+Alt+↓/↑  
# keyboard column selection (move cursor down/up)
    

🎯Live Demo

Convert this set of variables from camelCase to snake_case:

before → after
      // Steps: select userName, press Ctrl+D three times to select all,
// then just type the new name user_namelet userName = getUserName();console.log(userName);saveUser(userName);
    
💡 Exit multi-cursorPress Esc to leave multi-cursor mode and return to a single cursor.

Hands-On Tasks

Write 5 lines containing the same variable name, select them all with Ctrl+D and rename Feel the joy of one-shot editing
Use Shift+Alt+drag for column selection to add // comments to several lines at once Batch-comment and align text
Use Ctrl+Shift+L to select all identical words at once Faster than pressing Ctrl+D one by one

🧠Quick Quiz

Q You want to change every "temp" in a file to "data". What's the fastest way?
A Find & replace one by one with Ctrl+F
B Select one temp, press Ctrl+Shift+L, then just type
C Use a regular-expression replace
D It can't be done in one go
Day 05 · Search

Search, Replace and Global Refactor

Search within one file, or across the whole project

Search within a file Ctrl+F to find & replace
Global search Ctrl+Shift+F to search across files
Regex & filters Use regex and file filters to pinpoint matches

🔍Search Within a File

ActionShortcut
FindCtrl+F (macOS Cmd+F)
ReplaceCtrl+H (macOS Cmd+Option+F)
Next matchEnter or F3
Previous matchShift+F3
Select next matchCtrl+D

🌐Global Search

Search for a function, variable or string across the entire project — the feature you'll use most when reading other people's code.

global search
      Ctrl+Shift+F   
# global search (macOS: Cmd+Shift+F)
    

The top of the global-search panel has three advanced filters:

  • Match Case (Aa): case-sensitive matching
  • Whole Word: only whole words, not substrings
  • Regex (.*): use regular expressions

There's also a "files to include/exclude" box to filter by file type, e.g. *.py, *.js or -*.min.js.

🔬Regex Search in Practice

Regex examples
      # find all console.log statements (handy for cleaning up debug code)console.log(.*)
# find all TODO comments//s*TODO.*
# find phone numbers (simple version)1[3-9]d{9}
    
⚠️ Preview before replacingBefore a global replace, VSCode shows every match. Always skim them to make sure it's right — especially with regex, where one bad pattern can wreck dozens of files. You can use the "exclude this result" button next to each match to filter one by one.

🔗Symbol Search

Jump to the definition of a function/class:

Symbol navigation
      Ctrl+Shift+O   
# list of symbols (functions/classes) in the current fileCtrl+T       
# symbol search across the whole workspaceF12        
# jump to the definition of the symbol at the cursorAlt+F12      
# peek at the definition (preview popup, no jump)
    

Hands-On Tasks

In one file, search with Ctrl+F, then modify matches one by one with Ctrl+D Combine search with multi-cursor
Use Ctrl+Shift+F to globally search "TODO" and see what's pending in the project Practice global search + file filtering
Use a regex search to find all console.log statements Prepare for cleaning up debug code later

🧠Quick Quiz

Q To search across the entire project, which shortcut should you use?
A Ctrl+F
B Ctrl+Shift+F
C Ctrl+P
D Ctrl+G
Day 06 · Terminal

Integrated Terminal

Run commands without leaving the editor

Open the terminal Use Ctrl+` to open the integrated terminal
Multi-terminal Open several terminals and split the view
Common commands Compile and run C/Java/Python

💻Integrated Terminal

VSCode has a built-in terminal, so you don't need a separate Terminal/iTerm window. Write, compile, run and do Git — all in one place.

terminal
      Ctrl+`          
# open/close the terminal (macOS: Ctrl+`)Ctrl+Shift+`   
# create a new terminal instance
    

🔀Multiple Terminals and Splitting

In the terminal panel, the right side has a + to create a terminal and a split icon to split the view. Run a server in one and tests in another without interference.

ActionMethod
New terminalClick + or Ctrl+Shift+`
Split terminalClick the split icon, or Ctrl+Shift+5 when a terminal is open
Switch terminalChoose from the dropdown, or Alt+↑/↓
Close terminalClick the trash-can icon
Toggle focus terminal/editorCtrl+Shift+↑/↓

⚙️Compile and Run Course Assignments

C
      # compilegcc main.c -o main -Wall
# run./main
    
Java
      # compilejavac HelloWorld.java
# run (note: no .class suffix)java HelloWorld
    
Python
      # run directlypython3 main.py
# interactivepython3 -i main.py
    
💡 Terminal tipThe terminal uses the system shell by default (zsh on macOS). You can switch to bash, PowerShell and more. Search "Terminal: Select Default Profile" in the Command Palette.

🎨Recommended Terminal Settings

settings.json
      {  "terminal.integrated.fontSize": 14,  "terminal.integrated.scrollback": 10000,  "terminal.integrated.copyOnSelection": true}
    

Hands-On Tasks

Open the terminal with Ctrl+`, type ls and pwd to see where you are Confirm the terminal working directory is your project folder
Write a hello.c, then compile it with gcc and run it in the terminal Practice the full compile → run flow
Split two terminals: one runs your program, the other watches output Feel the power of parallel terminals

🧠Quick Quiz

Q What is the default shortcut to open the VSCode integrated terminal?
A Ctrl+T
B Ctrl+`
C Ctrl+Shift+T
D Alt+T
Day 07 · Git

Version Control: Git Integration

Commit, diff and resolve conflicts without touching the command line

Source Control Use the GUI for add/commit/push
Diff Understand changes and stage parts of a file
Branch management Create/switch branches and resolve merge conflicts

🌿VSCode's Git Capabilities

VSCode has built-in Git support — no extension required. The second icon in the Activity Bar (Source Control) is it. Most everyday Git operations can be done with the GUI.

📝The Three-Step Commit

  1. Modify: after editing, file names turn yellow (modified) or green (new)
  2. Stage: in the Source Control panel, click the + next to a file to stage it (equivalent to git add)
  3. Commit: type a message in the input box and press Ctrl+Enter (equivalent to git commit)
💡 Staging vs committingThe staging area lets you commit only the changes you want. Double-click a file to see the full diff.

📊Diff View

Click a file in the Source Control panel to open the diff view: the old version is on the left (red shading for deletions), the new one on the right (green shading for additions). Reviewing your own changes like this is a good habit.

ActionShortcut
View diffClick the file name
Stage a single fileClick +, or use Ctrl+Shift+G then operate
Stage selected rangesRight-click in the diff view → Stage Selected Ranges
Discard changesClick the icon (dangerous! discards uncommitted changes)

🔀Branches and Sync

The Status Bar's bottom-left shows the current branch name; click it to create/switch branches. The ↑↓ number next to it shows commits ahead/behind the remote; click the sync icon to push/pull.

Branch operations
      # left of the Status Bar:  main ↓2 ↑1    
# 2 commits behind the remote, 1 ahead
# click the branch name → create/switch branch
# click the sync icon (↻) → git pull + git push
    

⚔️Resolving Merge Conflicts

When a pull hits a conflict, VSCode shows four buttons at the conflict site:

Conflict-resolution options
      <<<<<<< HEADyour changes=======remote changes>>>>>>> branch-name
# VSCode shows 4 buttons:Accept Current  
# keep only yoursAccept Incoming 
# keep only the remote'sAccept Both     
# keep bothCompare         
# compare the two versions
    

After resolving, save and commit.

⚠️ Sophomore pitfallWhen working on a big group assignment, always git pull before writing code and commit + push as soon as you're done. Don't hoard changes and push them all at once — the conflicts will kill you.

Hands-On Tasks

Run git init in your project to create a repository Run git init in the terminal, then open it with VSCode
After modifying a file, do one add + commit from the Source Control panel Pure GUI, no command line
Deliberately create a conflict and resolve it Modify the same line, then pull, and go through the conflict-resolution flow

🧠Quick Quiz

Q In the VSCode Source Control panel, clicking the "+" next to a file is equivalent to which Git command?
A git commit
B git add
C git push
D git stash
Day 08 · Extensions

Essential Extension Ecosystem

Install the right plugins and VSCode becomes complete

Install extensions Search and install plugins from the marketplace
Must-have list Know the 10 extensions every sophomore should install
Language packs Chinese language pack and per-language support

🧩Extension Marketplace

The last icon in the Activity Bar (the block shape) is the extension marketplace. VSCode is powerful because of its tens of thousands of extensions. But don't over-install — too many will slow the editor down. Here's a curated list for sophomores.

Must-Have Extensions Top 10

🎨

Chinese (Simplified) Language Pack

Chinese UI pack; takes effect after a restart

🌈

Prettier

Code formatter supporting JS/HTML/CSS/JSON

🔧

ESLint

JS/TS code linting that flags problems with red underlines

🐍

Python

Microsoft's official Python extension: debugging + IntelliSense

Extension Pack for Java

The full Java bundle incl. debugging, Maven and testing

⚙️

C/C++

Microsoft's official C/C++ support incl. debugging

🏷️

GitLens

Shows who changed each line and when

🤝

Live Server

Local server for frontend with save-to-refresh

⟩⟩⟩

Path Intellisense

Auto-completes file paths

📐

indent-rainbow

Colors indentation levels so nesting is clear

🔍How to Pick Extensions

  • Check the install count: the million-level ones are usually reliable
  • Check recent updates: be wary of anything not updated in over a year
  • Check ratings: avoid anything below 3 stars
  • Check the author: prioritize Microsoft or official language publishers

📦Language Support Extensions

VSCode only ships full JS/TS support by default. Other languages need the matching extension for IntelliSense, debugging and more:

LanguageRecommended extensionCapabilities
PythonPython (ms-python)IntelliSense, debugging, Jupyter
JavaExtension Pack for JavaFull set: debugging, Maven, refactoring
C/C++C/C++ (ms-vscode)IntelliSense, debugging (needs a compiler)
HTML/CSSLive Server + built-inLive preview, Emmet abbreviations
MarkdownMarkdown All in OneShortcuts, TOC, preview
⚠️ Don't over-installThe more extensions, the slower VSCode starts. Each one uses memory. If it feels laggy, disable the ones you rarely use in the extension list.

🚫Disable and Uninstall

In the extension list, each extension has "Disable" (temporarily off) and "Uninstall" (permanently remove). You can also enable/disable per workspace.

Hands-On Tasks

Install the Chinese (Simplified) Language Pack and restart VSCode The interface becomes Chinese
Install the language extension that matches your course (C/Java/Python) Install at least one
Install GitLens, open a Git project, and hover over a line to see the author info Experience the blame feature

🧠Quick Quiz

Q After installing many extensions VSCode feels slow. What's the most reasonable thing to do?
A Uninstall and reinstall everything
B Disable rarely-used extensions and keep only the essentials
C Buy a new computer
D Uninstall VSCode
Day 09 · Debugging

Debugger Essentials

Stop print-debugging; learn to set breakpoints

Breakpoints Set breakpoints and conditional breakpoints
Step execution Step Over / Into / Out
Variable watch Inspect variable values and the call stack

🐛Why Use a Debugger

Sophomores love using printf / System.out.println to debug — recompiling after every one-line change is extremely inefficient. A debugger lets you pause the program, step line by line, and inspect variable values at any moment — a fundamental skill of professional development.

🔴Set a Breakpoint

Click in the empty space left of a line number and a red dot appears — that's a breakpoint. The program pauses automatically when it reaches that line.

Breakpoint operations
      # normal breakpoint: click the blank space left of the line number
# conditional breakpoint: right-click the line-number gutter → Add Conditional Breakpoint
#   only pauses when the expression is true, e.g. i == 50
# logpoint: right-click → Add Logpoint
#   doesn't pause, just prints a message (replaces print debugging)F9   
# toggle breakpoint on the current line
    

▶️Start Debugging

Press F5 to start debugging. The first time you'll be asked to pick an environment (e.g. Python, C++ (GDB)). VSCode generates a .vscode/launch.json config file.

ActionShortcutDescription
Start / ContinueF5Run until the next breakpoint
Step OverF10Run the current line without stepping into functions
Step IntoF11Step into a function and run line by line
Step OutShift+F11Finish the current function and return to the caller
StopShift+F5End debugging
RestartCtrl+Shift+F5Restart debugging

👁️Four Sections of the Debug Panel

📊

Variables

Values of all variables in the current scope, auto-updated

👀

Watch

Manually add expressions to monitor continuously

📞

Call Stack

Shows the function call chain; click any frame to jump to it

🔌

Breakpoints

List of all breakpoints; enable/disable each

🐍Example Python Debug Config

.vscode/launch.json
      {  "version": "0.2.0",  "configurations": [    {      "name": "Python: Current File",      "type": "python",      "request": "launch",      "program": "${file}",      "console": "integratedTerminal",      "justMyCode": true    }  ]}
    
💡 Conditional breakpoints are goldWhen a loop runs 1000 times and you want the state at iteration 500, give the breakpoint the condition i == 500 — it pauses only on that iteration. Far more efficient than printing a thousand times.

Hands-On Tasks

Write a Python program with a for loop and set a breakpoint inside the loop Press F5 to start debugging and use F10 to step
Give the breakpoint condition i==5 so it pauses only on iteration 5 Experience the power of conditional breakpoints
Inspect the loop-variable value in the Variables panel and try adding it to Watch Understand variable monitoring

🧠Quick Quiz

Q You want to run code line by line but NOT step into function bodies. Which key should you press?
A F5
B F10 (Step Over)
C F11 (Step Into)
D F9
Day 10 · Productivity

Code Snippets and Emmet

Do more with less typing: custom code templates

Code snippets Create custom code templates
Emmet Expand HTML/CSS abbreviations
Tab completion Insert code quickly with Tab

✂️Code Snippets

There are always a few blocks you type over and over — the main function, a for loop, a class template. Save them as "snippets", type a few letters, and press Tab to expand. This is a weapon against repetitive typing.

📝Create a Custom Snippet

In the Command Palette search "Configure User Snippets", pick a language (e.g. python.json). The syntax is JSON:

python.json — user snippets
      {  "Print debug": {    "prefix": "pdb",    "body": [      "print(f'{$1} = {$1}')",      "$2"    ],    "description": "Quickly print a variable for debugging"  },  "For loop": {    "prefix": "ffor",    "body": [      "for ${1:i} in range(${2:10}):",      "    ${3:pass}"    ]  }}
    

Type pdb and press Tab to expand. Here $1, $2 are placeholders — press Tab to jump between them, saving mouse movement.

💡 Placeholder syntax$1 is the first cursor position; ${1:default} carries default text; $0 is the final cursor position.

Emmet: The Frontend Abbreviation Tool

When writing HTML/CSS, VSCode has Emmet built in. Type an abbreviation and press Tab to expand it into full code.

emmet abbreviation → expansion
      # type the abbreviation below and press Tab:div.container
 <div class="container"></div>ul>li*3
 <ul>     <li></li>     <li></li>     <li></li>   </ul>button.btn.btn-primary{Click me}
 <button class="btn btn-primary">Click me</button>
# CSS abbreviations: m10 → margin: 10px;p20-30 → padding: 20px 30px;d:f → display: flex;
    

🔤Emmet Syntax Cheat Sheet

SyntaxMeaningExample
#iddiv#header
.classp.text-center
>child elementul>li
+sibling elementh1+p
*repeat N timesli*5
{}text contenta{Home}
()grouping(div>p)*3

Hands-On Tasks

Create a Python snippet: typing main expands to if __name__ == "__main__": Reduce repeated typing
Create a C snippet: typing inc expands to #include <stdio.h> Practice snippet placeholders
In an HTML file, type nav>ul>li*4>a{Link} with Emmet and press Tab Feel the power of frontend abbreviations

🧠Quick Quiz

Q After pressing Tab, what does the Emmet abbreviation "ul>li*3" expand to?
A One ul containing three li elements
B Three ul elements each containing one li
C Three ul li texts
D An error
Day 11 · Customization

Settings, Shortcuts and Customization

Make VSCode look and work your way

Settings The structure of settings.json
Shortcuts View and modify keybindings
User vs workspace Understand the scope of settings

⚙️Two Ways to Configure

VSCode settings can be opened two ways: the graphical UI (Settings UI) and the JSON file (settings.json). Beginners use the UI; advanced users use JSON — because JSON lets you batch-edit, comment and version-control your config.

Open settings
      Ctrl+,                    
# open the Settings UICtrl+Shift+P → "Open Settings (JSON)"  
# open the JSON
    

🏢Setting Scope

LevelFile locationScope
User~/.config/.../settings.jsonShared across all projects
Workspaceproject/.vscode/settings.jsonCurrent project only
Foldereach folder in a multi-root workspaceThat folder only

Workspace settings override user settings. For example, give a specific project a larger font or a custom Python interpreter path.

📋Recommended Configuration

settings.json recommendations
      {  
// editor  "editor.fontSize": 15,  "editor.fontFamily": "'JetBrains Mono', Consolas, monospace",  "editor.tabSize": 4,  "editor.formatOnSave": true,  "editor.minimap.enabled": false,  "editor.wordWrap": "on",  
// files  "files.autoSave": "afterDelay",  "files.trimTrailingWhitespace": true,  
// terminal  "terminal.integrated.fontSize": 14,  
// search  "search.exclude": {    "**/node_modules": true,    "**/.git": true,    "**/dist": true  }}
    

🎹Keyboard Shortcuts

Every shortcut in VSCode can be viewed and customized. In the Command Palette search "Keyboard Shortcuts", or press Ctrl+K then Ctrl+S.

Keybindings file
      # open the shortcut settingsCtrl+K Ctrl+S
# custom example in keybindings.json:[  {    "key": "ctrl+shift+c",    "command": "editor.action.commentLine",    "when": "editorTextFocus"  }]
    

🔌High-Frequency Shortcut Cheat Sheet

FeatureWindows/LinuxmacOS
Command PaletteCtrl+Shift+PCmd+Shift+P
Quick Open fileCtrl+PCmd+P
Toggle Side BarCtrl+BCmd+B
Toggle TerminalCtrl+`Ctrl+`
Toggle commentCtrl+/Cmd+/
FormatShift+Alt+FShift+Option+F
FindCtrl+FCmd+F
SplitCtrl+\Cmd+\
Close tabCtrl+WCmd+W
📌 Middle-click tabsMiddle-click an editor tab to close it directly, no need to hunt for the ×.

Hands-On Tasks

Open settings.json and add formatOnSave: true Auto-format on save
Turn off the minimap "editor.minimap.enabled": false
Open the shortcut settings with Ctrl+K Ctrl+S and search for a shortcut you want to change Try modifying the comment shortcut

🧠Quick Quiz

Q When workspace settings and user settings conflict, which takes precedence?
A User settings
B Workspace settings
C It errors out
D Random effect
Day 12 · Workspaces

Multi-Root Workspaces and Project Config

Manage multiple projects in one window, and share team config

Multi-root workspace Manage several project folders at once
.vscode directory Understand project-level config files
Shared config Unify the dev environment across a team

🏢Multi-Root Workspace

When you develop frontend and backend at the same time, or need to view docs and code together for a big assignment — a multi-root workspace lets you manage several folders in one window.

Create a multi-root workspace
      # method 1: menuFile → Add Folder to Workspace... → pick a second folderFile → Save Workspace As... → save as my-project.code-workspace
# method 2: command linecode folder1 folder2   
# open multiple folders at once
    
my-project.code-workspace
      {  "folders": [    { "path": "frontend" },    { "path": "backend" },    { "path": "docs" }  ],  "settings": {    "editor.fontSize": 15  }}
    

📁The .vscode Directory

Each project folder can contain a .vscode directory with project-level config:

FilePurpose
settings.jsonProject settings (font size, language mode, etc.)
launch.jsonDebug configuration
tasks.jsonCustom tasks (compile, run scripts)
keybindings.jsonProject-level shortcuts
extensions.jsonRecommended extensions list

🔨Custom Tasks

Save your common build/run commands as "tasks" and trigger them with one key. Press Ctrl+Shift+B to run the default build task, or Ctrl+Shift+P → "Run Task".

.vscode/tasks.json
      {  "version": "2.0.0",  "tasks": [    {      "label": "build C",      "type": "shell",      "command": "gcc",      "args": ["${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}", "-Wall"],      "group": { "kind": "build", "isDefault": true },      "problemMatcher": ["$gcc"]    }  ]}
    

After that, pressing Ctrl+Shift+B auto-compiles the current C file, and errors are click-to-jump in the "Problems" panel.

👥Team-Shared Config

Commit the .vscode directory to Git, and teammates get the same tasks, debug config and recommended extensions after cloning.

.vscode/extensions.json
      {  "recommendations": [    "ms-python.python",    "esbenp.prettier-vscode"  ]}
    

When teammates open the project, VSCode will suggest installing the recommended extensions.

⚠️ Don't commit secretsIf settings.json contains local paths, passwords or similar, add it to .gitignore. Only commit config that's safe to share.

Hands-On Tasks

Create a multi-root workspace containing a code folder and a docs folder Save it as a .code-workspace file
Create tasks.json for a C project and configure one-key compilation Test with Ctrl+Shift+B
Create extensions.json recommending must-have extensions for the team Simulate shared team config

🧠Quick Quiz

Q What is tasks.json under the .vscode directory mainly for?
A Storing user passwords
B Defining one-key executable build/run tasks
C Recording Git commits
D Storing theme colors
Day 13 · Remote

Remote Development and Live Share

Write code on a server, or collaborate with classmates in real time

Remote-SSH Connect to a remote server for development
Dev Containers Unify environments with Docker containers
Live Share Real-time multi-person collaborative editing

🌐Remote - SSH

Sophomores often have to connect to a school server for experiments, once stuck with the painful SSH + Vim combo. The Remote-SSH extension lets you edit remote files with your local VSCode UI — IntelliSense, debugging and the terminal all run remotely.

Usage flow
      # 1. install the extension: Remote - SSH (ms-vscode-remote.remote-ssh)
# 2. Command Palette → Remote-SSH: Connect to Host
# 3. type ssh user@hostname
# 4. VSCode installs a server component on the remote
# 5. once connected, File → Open Folder to open the remote directory
    
~/.ssh/config (optional)
      Host school-server  HostName 192.168.1.100  User student  Port 22  IdentityFile ~/.ssh/id_rsa
    

Once configured, just pick the school-server alias when connecting.

🐳Dev Containers

"It works on my machine" is a classic excuse. Dev Containers use Docker to package the whole dev environment (compilers, dependencies, toolchain) into a container, so everyone's environment is identical.

📌 Sophomore scenarioThe lab environments for OS and database courses all differ. The teacher packages an environment as a container image, students pull it and get started — saving all the environment-setup time.
.devcontainer/devcontainer.json
      {  "name": "C Dev Environment",  "image": "gcc:latest",  "extensions": ["ms-vscode.cpptools"],  "postCreateCommand": "gcc --version"}
    

🤝Live Share: Real-Time Collaboration

Live Share is VSCode's real-time multi-person collaboration feature — like Google Docs for code. One person "shares" a session, others join, and everyone edits the same file simultaneously while seeing each other's cursors.

Using Live Share
      # 1. install the extension: Live Share (ms-vsliveshare.vsliveshare)
# 2. click the Live Share icon in the Status Bar / Activity Bar
# 3. "Share" generates a link to send to your classmate
# 4. your classmate opens the link and joins in the browser/VSCode
# 5. both edit in real time; terminal and debug sessions can be shared
    
💡 Big-assignment lifesaverWhen a group works together, one person writes code while the others watch and comment in real time, or two people pair-program. It's far smoother than sharing a screen.

🔗Comparing the Three Remote Methods

MethodScenarioRequires
Remote-SSHDevelop on a remote serverSSH access
Dev ContainersUnified dev environmentDocker installed locally
Remote-Containers (WSL)Run Linux on WindowsWSL2
Live ShareReal-time multi-person collabNetwork + Live Share extension

Hands-On Tasks

Install the Remote - SSH extension and try connecting to a server (or VM) Experience remote development
Install Live Share and share a session with a classmate to edit code together Experience real-time collaboration
Learn about Dev Containers; if Docker is installed, try creating one Prepare for environment unification later

🧠Quick Quiz

Q What is the core function of Live Share?
A Remote server connection
B Real-time multi-person editing of the same code
C Running Docker containers
D Version diffing
Day 14 · Capstone

Capstone: Build a Complete Dev Workflow

Connect all 13 days into a real project that runs end to end

Full flow The complete chain from creating a project to debugging
Config reuse Accumulate reusable config templates
Graduation Earn your completion badge

🏆Ultimate Task: Build a Small Python Project From Scratch

Use every skill from these 14 days to walk through a full professional development flow. We'll build a simple "To-Do" command-line program.

1️⃣Step 1: Scaffold the Project

Terminal operations
      mkdir todo-cli && cd todo-cligit initcode .   
# open with VSCode
    

Create the file structure in the Explorer:

Project structure
      todo-cli/├── .vscode/│   ├── launch.json      
# debug config│   ├── tasks.json       
# run tasks│   └── settings.json    
# project settings├── main.py              
# program entry├── todo.py              
# core logic└── README.md            
# docs
    

2️⃣Step 2: Write the Core Code

todo.py
      class TodoList:    def __init__(self):        self.items = []    def add(self, text):        self.items.append({"text": text, "done": False})        print("f"Added: {text}"")    def complete(self, index):        if 0 len(self.items):            self.items[index]["done"] = True            print("f"Completed: {self.items[index]['text']}"")    def show(self):        for i, item in enumerate(self.items):            mark = "✓" if item["done"] else "○"            print("f"{i}. [{mark}] {item['text']}"")
    

3️⃣Step 3: Configure the Debugger

Press F5, choose Python, and launch.json is generated automatically. Modify it to accept command-line arguments:

.vscode/launch.json
      {  "version": "0.2.0",  "configurations": [{    "name": "Debug Todo",    "type": "python",    "request": "launch",    "program": "${workspaceFolder}/main.py",    "args": ["add", "Finish homework"],    "console": "integratedTerminal"  }]}
    

4️⃣Step 4: Debug + Git Full Flow

  1. Set a breakpoint: at the first line of the add method
  2. Start debugging: press F5, program pauses at the breakpoint
  3. Step through: use F10 to watch variables change line by line
  4. Inspect variables: watch how self.items changes in the Variables panel
  5. Commit: Source Control panel → stage → write a message → commit
  6. Configure a task: tasks.json with python3 main.py for one-key run

5️⃣Step 5: Productivity Checklist

Go through this checklist and see whether you've really internalized all 14 days:

✅ Command Paletteswitch themes, change settings
✅ Multi-cursorbatch-rename variables
✅ Global searchfind every TODO
✅ Integrated terminalrun your program
✅ Debuggerbreakpoints + step execution
✅ Git commitadd + commit via the GUI
✅ Snippetscustom fast input
✅ tasks.jsonone-key run tasks
🎓 Congratulations!Finish this and you're ahead of the 80% still using Notepad + print debugging. VSCode goes far deeper — stay curious, and whenever you hit a repetitive task, search for "is there a faster way".

🚀Where to Go Next

  • Go deep in one language: for your main language (C/Java/Python), dig into its debugging, testing and LSP setup
  • AI-assisted coding: install GitHub Copilot / Codeium to experience AI completion
  • Theme polish: try popular themes like One Dark Pro, Material Icon Theme
  • Vim mode: install a Vim extension to learn keyboard-driven editing (advanced)
  • Custom extensions: write one of your own in TypeScript (advanced)

Hands-On Tasks

Follow the tutorial to fully build the todo-cli project and finish the code Actually write it by hand — don't just read
Run the program with a breakpoint and observe how variables change Walk through the whole debug flow
Complete a Git commit and also commit the .vscode config Accumulate a reusable project template
Go through the productivity checklist and confirm each item Fill the gaps

🧠Quick Quiz

Q After these 14 days, what habit should you cultivate whenever you hit a repetitive operation?
A Keep doing it manually
B Search for is-there-a-faster-way
C Switch editors
D Give up
🎉

All 14 Days Complete!

You've grown from a VSCode novice into an efficient developer. Keep going — tools are leverage: the more skilled you are, the more powerful they become.