跳到主要内容

1.2Vscode学习(可简)

信息

Python 版本:3.14

GCC 版本:13.3.0

系统:Windows11 + WSL2(Ubuntu24.04)

编辑器:VSCode/Cursor

编辑器

Vscdoe 官网下载网址

  • VSCode(Visual Studio Code)是一款通用跨平台的编辑器

它不会运行程序,它需要安装相应的语言包才能运行程序。它可以编辑任何语言的程序,支持几乎所有主流的开发语言的语法高亮、智能代码补全等。安装过程全部勾选。

  • 注意与 Visual Studio 区别

推荐扩展

使用 VSCode 或 Cursor,安装以下扩展:

扩展名称功能描述
Remote - SSH通过SSH连接远程服务器,在本地编辑远程文件
C/C++为 C/C++ 语言提供代码高亮、智能感知(自动补全)、代码格式化和调试等核心功能。
Python提供Python语言基础支持,包括语法高亮、代码补全和格式化
Pylance高性能Python语言服务器,提供类型检查和智能提示
Python Debugger支持Python代码的断点调试、变量监控和单步执行
Ruff Formatter自动格式化Python代码,保持一致的代码风格
Jupyter提供Jupyter Notebook支持,支持在VSCode中编辑和运行Jupyter Notebook
Error Lens直接在代码行内展示错误和警告信息,无需悬停鼠标
Office Viewer在VSCode中直接预览Word、Excel等Office文档并附赠IDE主题
Markmap以思维导图的形式展示markdown结构
Markdown All in One提供Markdown编辑、预览、导出等功能
SQLite Viewer提供SQLite数据库的可视化界面,支持数据浏览和查询
Hex Editor提供十六进制编辑器,支持编辑二进制文件
Live Server提供本地开发服务器,支持实时预览和自动刷新网页
Git History提供Git历史记录的可视化界面,支持查看文件的修改历史
Gitmoji在VSCode中使用Gitmoji,支持在提交时使用Gitmoji
Docker管理Docker容器,支持创建、运行和调试容器化应用

易用性配置

  • 推荐颜色主题:Dark Modern
  • 推荐图标主题:office material
  • 推荐字体:Fira Code(可选连字符显示)
  • Cursor侧边栏方向修改:workbench.activityBar.orientation,改为vertical

工作区的概念

工作区是你项目文件的集合,可以包含一个或多个文件夹。

操作类型功能快捷键/操作方式
打开工作区打开文件夹Ctrl + K, Ctrl + O文件 > 打开文件夹
打开工作区文件Ctrl + K, Ctrl + W 或双击 .code-workspace 文件
管理工作区添加文件夹到工作区文件 > 将文件夹添加到工作区
保存工作区文件 > 将工作区另存为 (生成 .code-workspace 文件)
移除文件夹右键文件夹 > 从工作区中删除文件夹
工作区设置独立设置每个工作区可以有独立的设置 (.vscode/settings.json)
扩展和主题可以为不同项目配置不同的扩展和主题

编辑器操作

操作类型功能快捷键
视图控制放大Ctrl + +Ctrl + 滚轮上
缩小Ctrl + -Ctrl + 滚轮下
重置缩放Ctrl + 0
快速导航跳转到指定行Ctrl + G (输入行号)
跳转到文件开头Ctrl + Home
跳转到文件结尾Ctrl + End
跳转到匹配的括号Ctrl + Shift + \
分屏操作垂直分屏Ctrl + \
关闭当前编辑器Ctrl + W
切换编辑器组Ctrl + 1/2/3
在组间移动文件Ctrl + Alt + ←/→
文件操作新建文件Ctrl + N
保存文件Ctrl + S
保存所有文件Ctrl + K, S
关闭文件Ctrl + W
重新打开已关闭的文件Ctrl + Shift + T

命令框

命令框是编辑器最强大的功能之一,按 Ctrl + P 打开。

搜索模式详解

前缀功能快捷键使用示例
无前缀文件搜索Ctrl + Papp.py *.js
>命令搜索Ctrl + Shift + P>Python: Run File
@当前文件符号Ctrl + Shift + O@function_name
#工作区符号Ctrl + T#ClassName
:跳转行号Ctrl + G:25
?帮助信息?shortcuts

实用技巧

技巧说明操作方式
模糊搜索文件搜索支持模糊匹配输入 apy 可以找到 app.py
模式切换从命令模式切换到文件搜索Backspace 删除 > 符号
最近文件查看最近打开的文件和文件夹Ctrl + R
符号搜索在大文件中快速定位函数、类、变量使用 @# 前缀搜索

搜索和替换

操作类型功能快捷键
基本搜索当前文件搜索Ctrl + F
全局搜索Ctrl + Shift + F
查找下一个F3Enter
查找上一个Shift + F3
替换操作当前文件替换Ctrl + H
全局替换Ctrl + Shift + H
替换当前匹配Ctrl + Shift + 1
替换所有匹配Ctrl + Alt + Enter
高级选项区分大小写点击 Aa 按钮或 Alt + C
全词匹配点击 Ab 按钮或 Alt + W
正则表达式点击 .* 按钮或 Alt + R

正则表达式示例

\d+           ## 匹配数字
[a-zA-Z]+ ## 匹配字母
\w+\s*=\s* ## 匹配变量赋值
function\s+(\w+) ## 匹配函数定义

搜索技巧

技巧说明示例
排除文件夹在搜索框中添加排除规则!node_modules
指定文件类型只搜索特定类型文件*.py 只搜索Python文件
使用占位符替换时引用正则分组$1 $2 引用正则分组

调试功能

操作类型功能快捷键/操作方式
断点操作设置/取消断点点击行号左侧或 F9
条件断点右键行号 > 添加条件断点
日志断点右键行号 > 添加记录点
禁用断点右键断点 > 禁用断点
调试控制开始调试F5
开始执行(不附加调试器)Ctrl + F5
停止调试Shift + F5
重启调试Ctrl + Shift + F5
继续执行F5
单步跳过F10
单步跳入F11
单步跳出Shift + F11
调试面板变量查看当前作用域的变量值
监视添加表达式进行实时监控
调用堆栈查看函数调用链
断点管理所有断点

调试控制台

调试暂停时,可以在控制台中执行以下操作:

操作说明示例
查看变量值直接输入变量名my_variable
执行表达式运行计算表达式len(my_list)
修改变量动态修改变量值my_var = new_value
调用函数执行函数调用my_function()

多光标编辑

多光标功能大幅提升编辑效率。

操作类型功能快捷键
创建多光标按住Alt点击在任意位置添加光标
选择下一个相同单词Ctrl + D
选择所有相同单词Ctrl + Shift + L
在选中区域每行末尾添加光标Alt + Shift + I
列选择模式矩形选择Shift + Alt + 鼠标拖拽
向下/上扩展列选择Ctrl + Shift + Alt + ↓/↑
向左/右扩展列选择Ctrl + Shift + Alt + ←/→
多光标技巧撤销最后一个光标Ctrl + U
跳过当前选择Ctrl + K, Ctrl + D
选择所有匹配项Ctrl + Shift + L

实用场景

## 同时修改多个变量名
old_name = 1
old_name = 2 ## Ctrl+D选择所有old_name,直接输入new_name
old_name = 3

代码格式化

操作类型功能快捷键
注释操作切换行注释Ctrl + /
切换块注释Shift + Alt + A
批量注释选中行选中多行后 Ctrl + /
缩进操作增加缩进TabCtrl + ]
减少缩进Shift + TabCtrl + [
自动调整缩进Ctrl + Shift + I
代码格式化格式化整个文档Shift + Alt + F
格式化选中代码Ctrl + K, Ctrl + F
保存时自动格式化设置中启用 Format On Save
代码折叠折叠当前块Ctrl + Shift + [
展开当前块Ctrl + Shift + ]
折叠所有Ctrl + K, Ctrl + 0
展开所有Ctrl + K, Ctrl + J

禅模式

禅模式提供无干扰的编程环境,适合专注编码。

操作类型功能操作方式
进入禅模式快捷键Ctrl + K, Z
菜单查看 > 外观 > 禅模式
退出禅模式按键按两次 Esc
快捷键再次按 Ctrl + K, Z

禅模式特点

特点说明
隐藏UI元素隐藏所有UI元素(侧边栏、状态栏、面板)
全屏显示全屏显示代码编辑器
居中布局居中显示代码内容
可自定义可自定义禅模式设置

禅模式设置

在设置中搜索 zen 可以配置:

设置项功能
zenMode.centerLayout是否居中布局
zenMode.fullScreen是否全屏显示
zenMode.hideLineNumbers是否隐藏行号
zenMode.hideTabs是否隐藏标签页

其他实用功能

操作类型功能快捷键/操作方式
快速操作复制行Shift + Alt + ↓/↑
移动行Alt + ↓/↑
删除行Ctrl + Shift + K
在上方插入行Ctrl + Shift + Enter
在下方插入行Ctrl + Enter
选择操作选择整行Ctrl + L
扩展选择Shift + Alt + →
收缩选择Shift + Alt + ←
选择到行尾Shift + End
选择到行首Shift + Home
面板管理切换侧边栏Ctrl + B
切换面板Ctrl + J
切换终端Ctrl + ~
切换输出面板Ctrl + Shift + U
文件浏览器新建文件点击文件夹右侧的 + 图标
新建文件夹Ctrl + Shift + 新建文件夹
重命名F2 或右键选择重命名
删除Delete 键或右键删除

小贴士

功能说明操作方式
自定义快捷键修改或添加快捷键文件 > 首选项 > 键盘快捷方式
设置同步同步设置、扩展、快捷键登录账户后自动同步
工作区推荐扩展为项目配置推荐扩展.vscode/extensions.json 中配置
代码片段创建自定义代码片段Ctrl + Shift + P 搜索 snippet
颜色主题快速切换主题Ctrl + K, Ctrl + T
字体大小调整字体大小Ctrl + +/- 临时调整,settings.json 中修改 editor.fontSize 永久设置

终端补全

终端中出现自动补全提示时,可以通过以下方式接受补全:右箭头键 (→) 或 Tab键

个性化设置

设置项说明操作方式
主题颜色选择喜欢的主题颜色设置中点击主题颜色,推荐 深色+
保存时自动格式化保存文件时自动格式化代码设置中搜索 format on save,勾选即可

运行代码

测试:在 Vscode 中新建一个 xxx.py 文件,输入以下内容:

print("hello world")
运行方式操作方法说明
方式1点击右上角的三角形运行按钮GUI界面运行
方式2在终端输入 python xxx.py直接运行
方式3在终端输入 python -m xxx.py把模块当作脚本来启动

可以看到输出结果为 hello world

两种运行方式的区别

运行方式说明__name__ 的值
python xxx.py直接运行'__main__'
python -m xxx.py把模块当作脚本来启动'__main__'

代码调式

断点设置

在IDE中点击行号左侧设置断点,程序执行到断点时会暂停,允许检查变量状态和程序流程。

调试控制命令

命令功能使用场景
Continue (F5)继续执行到下一个断点或程序结束跳过已检查的代码段
Step Over (F10)逐行执行,函数调用作为一步关注主流程,不深入函数内部
Step Into (F11)逐行执行,进入函数内部需要调试函数内部逻辑
Step Out (Shift+F11)执行完当前函数并返回调用处快速退出函数调试

调试流程演示

数据处理与单例模式调试示例
class DataProcessor:
_instance = None
_initialized = False

def __new__(cls): # 断点1: 观察单例创建
if cls._instance is None:
cls._instance = super().__new__(cls)
return cls._instance

def __init__(self):
if not DataProcessor._initialized:
self.data = [] # 断点2: 确保初始化只执行一次
DataProcessor._initialized = True
print("DataProcessor initialized")

def process_data(self, items):
"""处理数据列表"""
results = []
for item in items: # 断点3: 循环调试起点
processed = self._transform_item(item)
results.append(processed)
self._log_progress(len(results)) # 断点4: 观察进度
return results

def _transform_item(self, item):
"""转换单个数据项"""
return item * 2 + 1

def _log_progress(self, count): # 断点5: 内部方法调试
print(f"Processed {count} items")

def main():
processor1 = DataProcessor() # 断点6: 第一次实例化
processor2 = DataProcessor() # 断点7: 验证单例模式

print(f"Same instance: {processor1 is processor2}")

test_data = [1, 2, 3, 4, 5]
result = processor1.process_data(test_data)
print(f"Results: {result}")

if __name__ == "__main__":
main()

在断点1处开始调试:

  1. Step Into (F11): 进入__new__方法内部,观察单例模式的实现逻辑
  2. Step Over (F10): 在断点6处,将DataProcessor()作为一步执行,直接看到实例创建结果
  3. Continue (F5): 从断点6直接跳转到断点7,验证单例模式
  4. Step Into → Step Out: 在断点3进入循环,然后在断点4使用Step Out快速完成_log_progress方法

条件断点设置

条件断点只在满足特定条件时才会暂停程序执行,极大提高调试效率。

  • 右键点击断点(红色圆点)
  • 选择"Edit Breakpoint" 或 "Add Conditional Breakpoint"
  • 输入条件表达式(如 item > 3len(results) == 2
条件断点应用场景
def process_large_dataset(data):
results = []
error_count = 0

for i, item in enumerate(data):
try:
# 条件断点1: i >= 100 (只在处理第100项后暂停)
processed = complex_calculation(item)
results.append(processed)

except ValueError as e:
error_count += 1
# 条件断点2: error_count > 5 (错误超过5次时暂停)
log_error(f"Error processing item {i}: {e}")

# 条件断点3: item['priority'] == 'high' (只调试高优先级项)
if item.get('priority') == 'high':
special_handling(item)

return results

def analyze_performance(metrics):
# 条件断点4: metrics['response_time'] > 1000 (响应时间过长时暂停)
if metrics['response_time'] > threshold:
optimize_query()

常用条件表达式:

场景条件表达式说明
循环特定位置i == 50在第50次迭代时暂停
变量达到阈值count > 100计数器超过100时暂停
字符串匹配name == "admin"特定用户名时暂停
列表长度len(items) >= 10列表达到指定长度时暂停
对象属性user.role == "admin"特定角色时暂停
复合条件age > 18 and status == "active"多条件组合

推荐阅读