简介:VSCode 基础使用教程是一份面向初学者的 PDF 文档,目标读者为刚接触 Visual Studio Code 的开发者或相关课程学员。内容从命令面板与界面布局讲起,逐步覆盖代码编辑、光标移动、文本选择、注释、格式化、多光标操作、代码行合并与排序等高频技巧;文档基于 Mac 快捷键讲解,同时在括号内标注 Windows 对应按键,方便两类系统用户对照学习。教程还整理了快速打开文件、按行号跳转、符号搜索、F12 查看定义、Shift+F12 查看引用、F2 批量重命名等高效导航与重构方法,并介绍工作中常用的插件及 shell 命令配置,帮助学习者减少鼠标依赖、形成更高效的编码工作流。资源包内共 1 个文件,文件类型为 PDF,整体体积约 711KB,便于下载后随时查阅。该教程已有 1244 人学习下载,内容按入门到常用技巧循序渐进,可作为 VSCode 入门课程配套资料或日常开发快捷键速查手册。
1. VS Code 基础使用教程到底在教什么:先弄清楚它跟“记事本”的差别
刚下载完 VS Code 的人,打开看到的往往是一个欢迎页、一个空窗口,和“到底从哪儿开始”的茫然。这个标题看着简单,其实真正的第一步不是学某个功能,而是理解这里的运行逻辑:VS Code 是一个“内核 + 插件”的架构,内核负责编辑、搜索、文件树、Git 和终端,Python、C/C++、Java 这些语言能力全靠插件补上去。很多人照着教程装了一大堆东西,最后发现没有代码提示、头文件找不到、运行菜单是灰的,根本原因是“不知道缺的是哪一步”。下面这套使用路径按一线开发者的实际操作顺序来组织:先练高频操作和命令面板,再配置 Python 与 C/C++ 环境,然后学会用调试器定位问题,最后把最容易让人翻车的坑集中排一遍。无论你是刚入门的新手,还是被“装好半天却跑不起来”折腾过的老手,都能在这里找到对应的那一步。
2. 高频操作与命令面板:把“点按钮”改成“敲命令”的 VS Code 基础习惯
2.1 多光标、选区与整行移动:编辑效率的第一道分水岭
很多人以为“会用 VS Code”就是会装插件。实际上,装插件的门槛很低,真正的效率差距在编辑操作上。拿批量改名举例:一段代码里同一个变量在 5 个地方被引用,用鼠标逐个改又慢又容易漏;按 Ctrl+F 逐个替换又有风险。VS Code 的多光标方案是:把光标放在第一个出现的位置,连按 Ctrl+D,每次按下就会选中下一个相同文本,自动形成多光标,此时直接输入新名字,所有光标处会同步变化。全选同词还可以用更快的方式:Ctrl+Shift+L 一次选中整个文件里所有匹配项,适合大范围重命名。
再比如整行移动:Alt+↑ / ↓ 可以把当前行向上或向下搬,省去“剪切-粘贴”两次操作;配合 Shift 加选多行、再整体移动,调整方法顺序时会非常顺手。不夸张地说,这几个组合键构成了 VS Code 编辑体验的地基。我的习惯是:每周只练一个新快捷键,强制自己在日常编辑里用,两周左右就能摆脱“编辑速度取决于鼠标精度”的状态。这种体力活不玄学,练得有准,回头读代码时的思路都会被拉快。
高频操作里还有一类很容易被忽略:括号跳转。光标放在某个括号上,按 Ctrl+Shift+\,可以跳到对应的另一半;在括号嵌套很深的长函数里,这个键能让你一秒确认这一段到底包在哪层作用域里。配合 Ctrl+Shift+[ / ] 做代码折叠,读长文件时不用滚动鼠标,结构会清楚得多。
2.2 命令面板:VS Code 的“应用内搜索引擎”
VS Code 里有一个功能比任何插件都重要:命令面板,默认快捷键 Ctrl+Shift+P。它就像整个软件的搜索引擎,你可以在这里做几乎任何事——打开设置、切换主题、运行语言命令、安装扩展、查看快捷键,甚至执行“重启窗口”这类维护操作。举例来说,在配置 Python 环境时,你不需要记住“在哪里选解释器”,只需要按 Ctrl+Shift+P,输入 Interpreter,即可看到 “Python: Select Interpreter” 命令;输入 “format” 可以找到格式化文档相关命令;输入 “git” 能看到所有 Git 操作。这种“以命令为中心”的设计是 VS Code 和传统 IDE 最大的区别:菜单栏只是把命令面板的内容展示出来,而命令面板才是入口。
另一个关键命令是 Ctrl+Shift+X,打开扩展视图。很多教程把“vscode 插件”讲得像在找福利,其实扩展市场里同样有安装量、评分、更新时间这些信息。我选语言相关的扩展有一个简单标准:优先选微软官方或装机量排名靠前的。Python 扩展、C/C++ 扩展就是典型,嵌入式方向的 PlatformIO 则是另一个例证:装好后编译、烧录、串口输出全部在 VS Code 里完成,不需要切到其他软件。AI 辅助类插件(Codex、Claude Code 这类)安装前先看它是语言服务还是“命令调用工具”,避免装了以后不知道从哪里找它。比如 Codex 装完通常会在侧边栏出现一个聊天面板,而有的 AI 插件只是往命令面板里塞了一堆命令,找不到入口很正常。写 LaTeX 的人常用 LaTeX Workshop,做文档写作也能在同一套窗口里管理,但它的编译配置是另一套逻辑,别用 C++ 的 tasks.json 思路去硬套。
2.3 自定义快捷键:keybindings.json 与习惯固化
新手最容易忽略的是快捷键可以自己改。文件菜单里打开“首选项 -> 键盘快捷方式”(或命令面板输入 “Open Keyboard Shortcuts”),你能看到所有快捷键;想改哪一个,双击后录入新的组合即可。更可控的做法是直接编辑 keybindings.json 文件,用代码管理自己的操作习惯:
[ { "key": "ctrl+alt+i", "command": "editor.action.insertCursorAtEndOfEachLineSelected", "when": "editorTextFocus" }, { "key": "ctrl+alt+u", "command": "editor.action.transformToUppercase", "when": "editorTextFocus && !editorReadonly" } ]第一段配置的意思是:当焦点在编辑器里时,按 Ctrl+Alt+I 会在当前选中区域的每一行末尾都放一个光标,适合批量改多行 JSON 或者给多行文本统一加后缀。第二段把“转大写”绑定为 Ctrl+Alt+U,文本类操作不再需要先去命令面板搜索。注意这里的 when 字段是生效条件,没有它的话,这个快捷键可能在输入框、终端、调试器里也触发,造成混乱。配置改完后,VS Code 会立即重载,不需要重启;如果键位冲突,界面右下角会弹出冲突提示,此时要么换组合键,要么打开 “Keyboard Shortcuts” 界面搜索原命令把它改掉。自定义快捷键是“基础使用”和“熟练使用”之间的转折点:一旦你开始给高频动作绑顺手的键位,这个工具才算真正变成了你自己的。
3. 在 VS Code 里配置 Python 和 C/C++ 环境:两个最小可运行的落地方案
说到“配置环境”,先要确认一个观念:VS Code 不负责编译和解释,它只负责调用你机器上已有的工具链。“配置 Python 环境”实际要做的事是:装 Python 解释器、装 Python 扩展、告诉扩展用哪个解释器;“配置 C/C++ 环境”实际要做的是:装 C/C++ 扩展、装编译器、配置编译任务。把这两层分开,后面大部分问题都能对号入座。如果你习惯在 WSL 里开发,记得装 Remote - WSL 扩展,它会自动处理“宿主机 VS Code + Linux 工具链”的通信,别手动去折腾跨系统路径。
3.1 Python 环境配置:解释器选择与参数提示
首先从 vscode 官网下载并安装 VS Code(Windows 注意安装时选中“添加到 PATH”,否则后面终端里会找不到 code 命令)。然后打开扩展视图安装 Python 扩展(扩展名是 ms-python.python),不需要装一堆额外插件,官方这一个就自带格式化、调试、代码提示三件套。接下来在命令面板执行 “Python: Select Interpreter”,选择一个解释器。在 Windows 上,安装官方 Python 的时候勾选“Add Python to PATH”,安装完成后 VS Code 会自动识别;在 macOS/Linux 上,选系统自带或 /usr/bin/python3 都可以。Conda 用户会看到一堆虚拟环境和 conda env 选项,选择你当前项目对应的那个即可。
新建一个 test.py 文件,写一个最小验证脚本:
# 首次运行最小示例:确认解释器和输出通道 print("hello vscode")按右上角运行按钮(三角形图标)或右键选择“Run Python File”,输出会出现在下方的终端面板里。这里有一个很实用的细节:把光标放在函数名或者左括号里面,按 Ctrl+Shift+Space,会弹出这个函数的参数列表和说明。对于 pandas、requests 这种第三方库的大型函数,这是最快的“vscode 查看函数参数”的方式,不用再去浏览器查文档。
3.2 C/C++ 环境配置:编译器、tasks.json 与头文件路径
C/C++ 环境历来是新手重灾区:没有代码提示、头文件 no such file、按 F5 却说找不到编译器。原因往往不是一个点,而是三个点没有串起来。第一步是装 C/C++ 扩展(ms-vscode.cpptools)。第二步是确认系统里有编译器:Windows 上常见的方案是安装 MinGW-w64,把解压后的 bin 目录加进 PATH;macOS 上执行xcode-select --install;Linux 上执行sudo apt install gcc g++。确认方法很简单,在 VS Code 里打开终端执行gcc --version,看到版本号说明编译器已经就位。
第三步是配置编译任务。在项目里按 Ctrl+Shift+P,输入 “Tasks: Configure Default Build Task”,选择 “Create tasks.json file from template”,再选 “Others”,会生成一个 tasks.json。我一般会改成下面这样,实现“编译当前 C++ 文件”:
{ "version": "2.0.0", "tasks": [ { "label": "build current file", "type": "process", "command": "g++", "args": [ "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}.exe" ], "group": "build", "problemMatcher": [ "$gcc" ] } ] }参数含义分别说明一下:label 是任务名,运行任务时显示用;command 指定用 g++ 编译;args 里 -g 表示生成调试信息,没有它后续打断点单步会不可用;${file} 是当前正在编辑的文件路径,${fileDirname} 是文件所在目录,${fileBasenameNoExtension} 是去掉扩展名的文件名,三个都是 VS Code 的内置变量。problemMatcher 告诉 VS Code 把 g++ 输出的错误信息解析到“问题”面板里,没有它的话,编译报错时你只能从终端输出里用眼睛找。配置好后按 Ctrl+Shift+B 触发构建任务,生成的可执行文件会出现在文件所在目录。
3.3 语言服务与代码提示:为什么有的文件有提示,有的没有
“vscode 写 C 没有代码提示”是高频搜索词,造成它的原因有三个:扩展没有被激活、文件语言模式不对、语言服务器没有成功启动。检查方法是:打开一个 .c 文件,看右下角状态栏显示的语言是 “C” 还是 “Plain Text”。如果显示 Plain Text,点击它并在列表里选择 C,提示立刻就会回来。如果语言没问题,再打开“输出”面板,在右上角下拉框里选择 C/C++ 语言服务器的日志,看有没有报错。
还有一个小坑:C 语言的代码提示对“已知名字”的变量和方法有感应,但如果你第一行就把变量拼错了,后续提示会跟着罢工。所以建议先写完一遍,确认能编译通过,再来说“提示失灵”。编译器是最终裁判,VS Code 的代码提示只是裁判旁边的传话筒。不要反过来用提示器验证代码正确性,那是本末倒置。
4. 用 VS Code 调试代码:launch.json、断点与变量监视
4.1 F5 第一次被按下时发生了什么
很多人在配置完环境后急着按 F5,结果看到的是“No configuration found”或者环境不存在的提示。这其实是正常的,因为 F5 对应的是启动调试器,而调试器需要知道“运行什么程序、用什么调试器、入口文件是谁”。这些信息全部写在项目根目录 .vscode 文件夹下的 launch.json 里。最简单的方式是打开一个代码文件,切到“运行和调试”侧边栏(Ctrl+Shift+D),点击“创建 launch.json 文件”,VS Code 会根据当前文件类型弹出一组预设;选 Python 或 C++ 对应的模板,再按需求改参数。
我见过太多人把 launch.json 当“黑匣子”,遇到问题就删掉重建。实际上它只是一份 JSON 配置文件,真正有用的字段就几个:name 是显示在调试配置列表里的名字;type 是调试器类型,Python 用 python,C++ 用 cppdbg;request 表示启动程序(launch)还是附加到已运行进程(attach);program 是被调试的程序入口;cwd 是工作目录。这四个字段构成了一次调试会话的最小骨架,其余字段都是为了更精准地控制程序行为。
4.2 Python 与 C/C++ 的 launch.json 最小示例
Python 调试配置可以这样写:
{ "version": "0.2.0", "configurations": [ { "name": "Python: 当前文件", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "cwd": "${fileDirname}" } ] }program 设置为 ${file},意味着按 F5 时调试的是“当前打开的 Python 文件”。console 字段有两个常见选择:integratedTerminal 把程序输出和输入都放到集成终端里,适合需要 input() 读键盘输入的程序;如果改用 internalConsole,输入功能会受限,但输出面板更干净。cwd 设为文件所在目录,可以保证脚本用相对路径读写文件时不出错。
提示:如果程序里用到了相对路径读写文件,cwd 一定要和你的预期目录保持一致,否则文件会生成到意想不到的位置。
C++ 调试配置稍微复杂一点,因为它依赖前面 tasks.json 编译出来的可执行文件:
{ "version": "0.2.0", "configurations": [ { "name": "C/C++: 调试当前程序", "type": "cppdbg", "request": "launch", "program": "${fileDirname}/${fileBasenameNoExtension}.exe", "args": [], "cwd": "${fileDirname}", "preLaunchTask": "build current file", "MIMode": "gdb", "miDebuggerPath": "gdb" } ] }preLaunchTask 字段特别关键:它会在启动调试之前自动执行名为 “build current file” 的编译任务,也就是第 3 章 tasks.json 里的 label。配置好之后,按 F5 会先编译再调试,不需要自己跑到终端里敲编译命令。MIMode 指定底层调试器,Linux/macOS 用 gdb,Windows 上如果装的 MinGW 也带 gdb,所以这里的写法一致。这些字段看着有点多,但配一次,之后所有项目都能复制。
4.3 断点、单步与变量监视:把“不知道哪里出错”变成“看着它出错”
调试器的价值不在于“跑起来”,而在于让程序停在特定位置,让你看到这个时刻的状态。在 VS Code 里,点击行号左侧的空白处就能打一个红点断点;程序运行到这一行会暂停。停下后你可以按 F10 单步跳过(执行当前行但不进入函数内部),按 F11 单步进入(跳到被调用的函数第一行),按 Shift+F11 单步跳出(返回调用它的那行)。左侧“运行和调试”面板会自动出现变量窗口,把局部变量、全局变量和当前值列出来;你也能手动添加监视表达式,比如输入 length、user.name,实时跟踪特定数据。
还有两个经常被忽略的细节。第一,断点可以加条件:右键红点选择“编辑断点”,输入比如i == 10,那么循环跑到第 10 次才会暂停,不用手动按十几轮 F10。第二,调试控制台可以执行表达式求值:中途停下时,在控制台输入变量名回车,能看到它的值,甚至调用函数,这对排查复杂状态比 print 大法管用得多。我的经验是:能用调试器看变量,就尽量不要靠插入 print 再删除 print,因为 print 改的是代码,调试器不改代码,程序行为分毫不变,污染最小。这也是基础使用里最值得花时间练的一项,它决定了你排查问题的路径是“猜”还是“看”。
5. VS Code 基础使用避坑与常见问题排查:5 个容易把人劝退的日常翻车
5.1 中文乱码:运行输出变成“锟斤拷”或者一堆乱码文本
现象:在 Windows 上运行 Java 或者 Python,终端里输出中文变成乱码,或者报错信息里出现类似“ERROR: 鎺ュ叆鍙傛暟”的文字。原因:源文件以 UTF-8 保存,而终端控制台默认使用 GBK(代码页 936)来解释输出,两边编码不一致,中文自然显示不出来。解决:在项目根目录 .vscode 下创建一个 settings.json(工作区设置),写入:
{ "terminal.integrated.profiles.windows": { "Command Prompt": { "path": "cmd.exe", "args": ["/K", "chcp 65001"] } }, "terminal.integrated.defaultProfile.windows": "Command Prompt" }这段配置的作用是让 VS Code 每次打开集成终端时先执行chcp 65001,把命令提示符的代码页切到 UTF-8。如果你不想动终端配置,另一个更直接的方案是:在 launch.json 的配置里添加"env": {"PYTHONIOENCODING": "utf-8"},或者在系统环境变量里设置 JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8。多个方案多试一个,总会有一个在你手里生效;但最好记住根因是代码页不一致,否则换一台电脑照样翻车。
5.2 扩展市场访问异常:为什么有时加载不出扩展,有时反复提示登录
现象:打开扩展视图搜索插件,要么一直转圈加载不出来,要么提示需要登录,要么昨天还能装插件今天就报错。原因:扩展市场请求所在网络的连通性不稳定,或者当前网络环境有额外的策略限制。解决思路分两路:第一路,先确认不是 VS Code 本身的问题,在命令面板执行 “Developer: Toggle Developer Tools”,看网络面板里扩展市场请求返回的状态码;第二路,如果确实访问不了,就去 Visual Studio Marketplace 页面手动下载对应扩展的 .vsix 文件,回到扩展视图的“更多操作”菜单里选择“Install from VSIX”,进行离线安装。
这类问题的血泪经验是:不要反复重装 VS Code。配置文件(settings.json、keybindings.json)都存在用户目录里,重装并不能清理网络问题,只会把你本地已经装好的扩展列表清空。另外,如果以前登录过一个账号又退出了,之后扩展市场页面可能反复要求登录,这时候在命令面板执行 “Sign out” 然后再登录一次,通常就能恢复正常。别把这个当成“每次都要登录”的常态,先去处理登录态本身。
5.3 C/C++ 头文件报错:no such file 但文件明明存在
现象:代码里写#include <stdio.h>或自己项目的头文件,VS Code 提示 no such file,编译也失败。原因分两种:编译器找不到头文件路径,或者 IntelliSense 的 includePath 没有包含该目录。解决:先确认是不是编译层面就有问题,用终端手动执行g++ main.cpp,看是否真的报找不到头文件;如果手动编译正常,问题就出在扩展的 includePath 配置上。按 Ctrl+Shift+P 执行 “C/C++: Edit Configurations (UI)”,在“包含路径”里把头文件所在目录填进去,最好写绝对路径;保存后 VS Code 会重新扫描,提示就会恢复。
另一个常见场景是自己写的头文件在子目录下,比如 include/mylib.h,代码里写的是#include "mylib.h",编译器从当前目录和系统目录找,自然找不到。解决:要么改成#include "include/mylib.h",要么在编译任务的 args 里加上-Iinclude。我通常会同时做两件事:把 -I 参数加进 tasks.json,把 includePath 加进 c_cpp_properties.json,让“编译”和“代码提示”两端都通,一趟下来能省下半小时的排查时间。
5.4 Git 分支删除后 VS Code 里还显示残留分支
现象:在终端执行git branch -d old-branch删除了一个分支,回到 VS Code 的源代码管理视图,分支列表里仍然看得见,甚至切换时还会出现。原因:VS Code 的源代码管理视图有缓存,或者执行删除的终端窗口与当前工作区的状态没有同步。解决:先在 VS Code 集成终端里执行git fetch --prune,把远程已被删除的分支引用同步掉,然后点击源代码管理视图右上角的刷新图标。如果还是显示,用命令面板执行 “Git: Refresh”,或者执行 “Developer: Reload Window”,让界面重新加载一次。几个动作按顺序来,绝大多数情况都能清干净;还没清干净的话,看看那个分支是不是被某个工作树检出了。
5.5 装了汉化包界面还是英文,或者中文字体很难看
现象:在扩展里安装了“Chinese (Simplified) Language Pack”,重启后界面依旧全英文。原因:VS Code 的语言偏好没有切换。解决:按 Ctrl+Shift+P 输入 Configure Display Language,选择 zh-cn,然后重启窗口。多语言包只负责界面翻译,不负责代码内容;代码里的中文注释显示成方块是字体问题,推荐在设置里把 editor.fontFamily 配成 Consolas 和中文字体的组合,或者直接安装“更纱黑体”这类等宽字体,终端字体也一并改掉。另外,装完汉化包之后,部分用户会发现设置界面某些选项又变回英文,这是本地化缓存问题,用命令面板执行 “Developer: Reload Window” 一次即可恢复。这个坑不大,但特别容易让人以为汉化包坏了,其实只是没刷新界面。
6. 最后一件事:用 settings.json 和用户代码片段把 VS Code 打磨成自己的
所有配置都散落在菜单里,不好维护。我习惯把“最重要的几个偏好”统一放进 settings.json,每次重装系统后直接恢复这个文件,半小时内就能回到原来的工作状态。一份我自己常用到的基础配置:
{ "editor.fontSize": 14, "editor.fontFamily": "Consolas, 'Sarasa Mono SC', monospace", "editor.tabSize": 4, "files.autoSave": "afterDelay", "files.autoSaveDelay": 1000, "editor.formatOnSave": true, "files.trimFinalNewlines": true, "git.confirmSync": false }重点解释两个:files.autoSave 设置成 afterDelay 后,停止输入 1 秒就自动保存,配合 formatOnSave,每次保存自动格式化代码,不会出现“改了半天忘记保存”的尴尬;git.confirmSync 关掉每次同步 Git 时的确认弹窗,适合个人项目,公司项目建议保持默认,不然误推分支的后悔药不太好买。
代码片段是另一层“自己的”:在命令面板执行 “Configure User Snippets”,新建一个 python.json,写入:
{ "pymain": { "prefix": "pymain", "body": [ "def main():", " ${1:pass}", "", "if __name__ == '__main__':", " main()" ], "description": "Python main entry" } }以后在 .py 文件里敲 pymain 回车,几行模板就会自动展开,光标停在 pass 位置等你写逻辑。这类“基础设施”积累到一定数量后,换电脑、换项目都只是导入配置的事情,不会因为换了一台机器就退回“原始人”状态。我现在的习惯是把 keybindings.json、settings.json、snippets 目录放进自己的私人仓库里,每换一台设备,先把这三个东西拉下来再开始干活。这是一件长期划算的小事,希望帮到你。
本文还有配套的精品资源,点击获取