跳转到内容

第 1 章 · VS Code

一句话:微软出的免费代码编辑器,靠扩展变成任何语言的开发环境。 用它还是用别的:写代码、改配置、看日志都用它;大型 Java 或 C# 项目要重型重构时再考虑 JetBrains 系列。 核对版本:VS Code 1.138,2026-10

Windows:

终端窗口
winget install Microsoft.VisualStudioCode

macOS:

终端窗口
brew install --cask visual-studio-code

Linux(Debian/Ubuntu):按 1.7「Linux 安装(apt 源)」添加官方源后安装:

终端窗口
sudo apt update
sudo apt install code

Windows 和 macOS 用上面的命令装好后,code 命令会自动加入 PATH,但已经打开的终端要关掉重开才能用。

查版本,第一行是版本号,第二行是提交号,向别人报问题时把前两行一起贴上:

终端窗口
code --version

在终端里进入项目目录,用 VS Code 打开当前目录。后面的工作流都从这一步开始,比从菜单里找文件夹快:

终端窗口
code .
  • 工作区(Workspace):你用 VS Code 打开的那个文件夹。搜索、源代码管理、调试都以它为范围;设置可以只对它生效,保存在文件夹里的 .vscode/ 目录。只打开单个文件而不打开文件夹时,全局搜索和调试配置都用不了。
  • 命令面板(Command Palette):一切操作的入口。按 Ctrl+Shift+P 输入几个字,菜单里能找到的命令这里都有,还能看到它的快捷键。本章写“命令面板运行某某”,就是按这个键后输入那串英文。
  • 侧边栏(Side Bar):左侧五个视图,资源管理器(Explorer)、搜索(Search)、源代码管理(Source Control)、运行和调试(Run and Debug)、扩展(Extensions)。点最左边的图标切换,再点一次收起。图标上出现数字角标,表示有多少个未提交的改动或可更新的扩展。
  • 集成终端(Integrated Terminal):编辑器底部的终端,默认在工作区根目录打开。不用切出窗口就能跑命令,报错里的文件路径按住 Ctrl 点击可直接跳到对应行。
  • 用户设置与工作区设置:设置分两层。用户设置(User Settings)对这台机器上所有项目生效;工作区设置(Workspace Settings)只对当前文件夹生效,两层都写了同一项时以工作区为准。
  • 扩展(Extension):语言支持、格式化、Git 增强都靠扩展提供,装哪些见第 2、3 章。

macOS 列里 Cmd 是 ⌘,Option 是 ⌥。Ctrl+K Ctrl+S 这种写法是组合键(chord):先按 Ctrl+K,松开,再按 Ctrl+S。正文(工作流和注意事项)里的快捷键只写 Windows 写法,macOS 对应键看本表。表里的快捷键都是默认值,装了改键扩展或自己改过的,以快捷键表里显示的为准。

操作 Windows macOS 说明
全局
命令面板 Ctrl+Shift+P Cmd+Shift+P 记不住快捷键时先按它,输入命令名
快速打开文件 Ctrl+P Cmd+P 输入文件名的几个字母即可
打开设置 Ctrl+, Cmd+, 图形界面,顶部可切用户和工作区
快捷键表 Ctrl+K Ctrl+S Cmd+K Cmd+S 先按前一组再按后一组,可搜索和改键
显示或隐藏侧边栏 Ctrl+B Cmd+B 屏幕窄时腾出编辑区
显示或隐藏终端 Ctrl+` Ctrl+` macOS 上也是 Ctrl
问题面板 Ctrl+Shift+M Cmd+Shift+M 列出所有报错和警告,点一条跳过去
视图
资源管理器 Ctrl+Shift+E Cmd+Shift+E 文件树
搜索 Ctrl+Shift+F Cmd+Shift+F 在整个工作区里搜索
源代码管理 Ctrl+Shift+G Ctrl+Shift+G 看改动、暂存、提交,macOS 上也是 Ctrl
运行和调试 Ctrl+Shift+D Cmd+Shift+D 变量、调用栈、断点列表
扩展 Ctrl+Shift+X Cmd+Shift+X 搜索和安装扩展
编辑
选中下一个相同的词 Ctrl+D Cmd+D 每按一次多一个光标,一次改多处
选中全部相同的词 Ctrl+Shift+L Cmd+Shift+L 当前文件里所有相同的词同时编辑
在点击处加光标 Alt+点击 Option+点击 在任意位置放多个光标
上下移动当前行 Alt+↑ / Alt+↓ Option+↑ / Option+↓ 选中多行时整块移动
向下复制当前行 Shift+Alt+↓ Shift+Option+↓ 不用先复制再粘贴
删除当前行 Ctrl+Shift+K Cmd+Shift+K 不占用剪贴板
注释或取消注释 Ctrl+/ Cmd+/ 按当前语言的注释符号
格式化整个文件 Shift+Alt+F Shift+Option+F 需要该语言有格式化器
重命名符号 F2 F2 变量、函数在所有引用处一起改
折叠当前代码块 Ctrl+Shift+[ Cmd+Option+[ 展开把 [ 换成 ]
导航
转到定义 F12 F12 也可以按住 Ctrl 或 Cmd 点击
查找所有引用 Shift+F12 Shift+F12 改函数前先看谁在调用
文件内的符号 Ctrl+Shift+O Cmd+Shift+O 在长文件里跳到某个函数
工作区里的符号 Ctrl+T Cmd+T 按名字找整个项目里的类和函数
转到行 Ctrl+G Ctrl+G 报错给了行号时用,macOS 上也是 Ctrl
后退到上一个位置 Alt+← Ctrl+- 跳转到定义之后回到原处
搜索替换
文件内替换 Ctrl+H Cmd+Option+F 只改当前文件
全局替换 Ctrl+Shift+H Cmd+Shift+H 改整个工作区,先看预览再全部替换
正则表达式开关 Alt+R Cmd+Option+R 搜索框获得焦点时按
窗口
拆分编辑器 Ctrl+\ Cmd+\ 左右并排看两个文件
切换到第 1、2、3 组编辑器 Ctrl+1 / Ctrl+2 / Ctrl+3 Cmd+1 / Cmd+2 / Cmd+3 拆分之后在左右之间跳
重新打开刚关闭的编辑器 Ctrl+Shift+T Cmd+Shift+T 误关标签页时用
Markdown
Markdown 预览 Ctrl+Shift+V Cmd+Shift+V 并排预览按 Ctrl+K V 或 Cmd+K V
调试
开始或继续调试 F5 F5 第一次会让你选运行环境
设置或取消断点 F9 F9 也可以点行号左边
单步跳过 F10 F10 执行当前行,不进入函数内部
单步进入 F11 F11 进入当前行调用的函数
停止调试 Shift+F5 Shift+F5 结束被调试的进程

Linux 与 Windows 相同,例外三个:格式化是 Ctrl+Shift+I,后退是 Ctrl+Alt+-,向下复制行是 Ctrl+Shift+Alt+↓。

拿到一个别人的仓库,从打开到跑起来再到找到入口代码:

  1. 在终端进入项目目录,运行 code .。
  2. 弹出“是否信任此文件夹中文件的作者”时选“是”;选“否”会进入受限模式(Restricted Mode),调试和大部分扩展不能用。
  3. 右下角提示“此工作区有扩展推荐”时点“安装”,推荐列表来自项目里的 .vscode/extensions.json。
  4. Python 项目点状态栏右下角的 Python 版本,选项目的虚拟环境。
  5. 按 Ctrl+` 打开终端,运行项目说明里的启动命令,例如 npm run dev。
  6. 按 Ctrl+Shift+F,搜一个页面上看到的文字或接口路径,找到代码入口。

比在代码里到处加打印语句快,改完不用再删:

  1. 按 Ctrl+P 打开要调试的文件。
  2. 光标移到想停下的那一行,按 F9,行号左边出现红点。
  3. 按 F5;第一次会让你选调试器,Python 脚本选 Python Debugger,Node 脚本选 Node.js。要固定启动参数,在“运行和调试”视图点“创建 launch.json 文件”,生成 .vscode/launch.json。
  4. 程序停在断点处,按 F10 一行一行往下走,遇到想看的函数按 F11 进去。
  5. 看左侧“运行和调试”视图里的变量和调用栈。
  6. 在底部“调试控制台”(Debug Console)里输入表达式,直接得到当前值。
  7. 按 Shift+F5 停止。

公司电脑和家里电脑用同一套设置、快捷键和扩展:

  1. 按 Ctrl+Shift+P,运行“Settings Sync: Turn On”。
  2. 勾选要同步的内容:设置、快捷键、扩展、代码片段。
  3. 选“使用 GitHub 登录”,在浏览器里授权。
  4. 在另一台机器上做同样的三步,登录同一个账号。
  5. 等右下角提示同步完成,设置、快捷键和扩展就和第一台一样了。

设置文件的位置:

范围 路径
用户设置(Windows) %APPDATA%\Code\User\settings.json
用户设置(macOS) ~/Library/Application Support/Code/User/settings.json
用户设置(Linux) ~/.config/Code/User/settings.json
工作区设置 项目里的 .vscode/settings.json

不用记路径:命令面板运行“Preferences: Open User Settings (JSON)“直接打开用户设置文件。

工作区设置文件可以提交进仓库,团队成员打开项目就用同一套缩进、换行和格式化规则。主题、字体这类个人偏好只放用户设置,不要提交。

值得改的项:

配置项 建议值 效果
files.autoSave "afterDelay" 停止输入一秒后自动保存
editor.formatOnSave true 保存时自动格式化
editor.defaultFormatter 扩展 ID,如 "esbenp.prettier-vscode" 多个格式化器时指定用哪个
files.eol "\n" 新建文件用 LF 换行,和 Linux 服务器一致
files.trimTrailingWhitespace true 保存时删掉行尾空格
editor.tabSize 2 或 4 按项目习惯
editor.rulers [100] 第 100 列画一条竖线,提醒行太长
editor.minimap.enabled false 关掉右侧缩略图,编辑区更宽
terminal.integrated.defaultProfile.windows "PowerShell" 终端默认用 PowerShell(装了 7 就是 7,否则是自带的 5.1)
workbench.colorTheme 主题名,如 "Default Dark Modern" 换配色

最小配置,复制到用户设置文件里。文件里原来已有内容时,把这几行合并进最外层的花括号,不要整段覆盖:

{
"files.autoSave": "afterDelay", // 停止输入后自动保存
"editor.formatOnSave": true, // 保存时格式化
"files.eol": "\n", // 新文件用 LF 换行
"files.trimTrailingWhitespace": true, // 保存时删行尾空格
"editor.tabSize": 4, // 缩进 4 个空格
"editor.rulers": [100], // 第 100 列画竖线
"editor.minimap.enabled": false, // 关掉右侧缩略图
"terminal.integrated.defaultProfile.windows": "PowerShell", // 终端默认 PowerShell,装了 7 就用 7
"files.watcherExclude": { "**/node_modules/**": true }, // 不监视依赖目录
"search.exclude": { "**/dist": true } // 搜索时跳过构建产物
}
  • Git 显示整个文件都改了,但你只改了一行。 原因:Windows 的 CRLF 换行和仓库里的 LF 混用了。处理:files.eol 设为 "\n",再运行 git config --global core.autocrlf input(详见第 7 章)。
  • PowerShell 终端里运行 npm 报“禁止运行脚本”。 原因:Windows 的执行策略默认是 Restricted。处理:运行 Set-ExecutionPolicy RemoteSigned -Scope CurrentUser。
  • 保存时没有格式化。 原因:没指定默认格式化器,或该语言没装格式化扩展。处理:命令面板运行“Format Document With…”,选一个,再选“Configure Default Formatter”设为默认。
  • Python 代码满是红线,说找不到模块,命令行却能跑。 原因:VS Code 选的解释器不是项目的虚拟环境。处理:点状态栏右下角的 Python 版本,换成项目的 .venv。
  • 打开大仓库后风扇狂转,搜索很慢。 原因:VS Code 在监视和搜索 node_modules、构建产物这些大目录。处理:在 files.watcherExclude 和 search.exclude 里加上这些目录。
  • 终端里提示 code 命令不存在。 原因:macOS 没装 shell 命令;Windows 安装时没勾选加入 PATH。处理:macOS 在命令面板运行“Shell Command: Install ‘code’ command in PATH”;Windows 重新安装并勾选“添加到 PATH”。
  • 按了快捷键没反应。 原因:被输入法或其他软件占用,或被扩展改了绑定。处理:按 Ctrl+K Ctrl+S 搜这个键看它绑在哪;输入法设置里关掉冲突的热键。
  • 改了设置不生效。 原因:工作区设置覆盖了用户设置。处理:打开设置界面,顶部切到“工作区”标签,看同一项是否另有值。