GitHub Copilot 在 VS Code 中的备忘单
GitHub Copilot in Visual Studio Code 提供由 AI 驱动的功能,帮助您更快、更轻松地编写代码。此备忘单提供了 GitHub Copilot 在 Visual Studio Code 中功能的快速概述。
如果您还没有 Copilot 订阅,您可以通过注册 Copilot 免费计划来免费使用 Copilot,每月可获得有限数量的行内建议和聊天交互。
基本键盘快捷方式
- ⌃⌘I (Windows, Linux Ctrl+Alt+I) - 打开“聊天”视图
- ⌘I (Windows, Linux Ctrl+I) - 在“聊天”视图中输入语音聊天提示
- ⌘N (Windows, Linux Ctrl+N) - 在“聊天”视图中开始新的聊天会话
- ⇧⌘I (Windows Ctrl+Shift+I, Linux Ctrl+Shift+Alt+I) - 在“聊天”视图中切换到使用代理
- ⌘I (Windows, Linux Ctrl+I) - 在编辑器或终端中启动行内聊天
- ⌘I (Windows, Linux Ctrl+I) (按住) - 开始行内语音聊天
- Tab - 接受行内建议或导航到下一个编辑建议
- Escape - 消除行内建议
在 VS Code 中访问 AI
-
使用自然语言开始聊天对话
- 聊天视图(⌃⌘I (Windows, Linux Ctrl+Alt+I)):在辅助侧边栏中保持持续的聊天对话
- 编辑器或终端中的行内聊天(⌘I (Windows, Linux Ctrl+I)):在流程中提问
- 快速聊天(⇧⌥⌘L (Windows, Linux Ctrl+Shift+Alt+L)):快速提问,而无需离开当前任务
-
编辑器中的 AI
- 行内建议:在您键入时获取建议,按 Tab 接受建议
- 编辑上下文菜单操作:访问常见 AI 操作,如解释或修复代码、生成测试或审查文本选择
- 代码操作:获取编辑器代码操作(灯泡)以修复 linting 和编译器错误
-
跨 VS Code 的任务特定智能操作
- 生成提交消息和拉取请求标题和描述
- 修复测试错误
- 语义文件搜索建议
VS Code 中的聊天体验
开始自然语言聊天对话,以获得有关编码任务的帮助。例如,要求解释代码块或编程概念、重构代码片段或实现新功能。了解有关使用Copilot 聊天的更多信息。
| 操作 | 描述 |
|---|---|
| ⌃⌘I(Windows、Linux Ctrl+Alt+I) | 在辅助侧边栏中打开“聊天”视图。 |
| ⌘I(Windows、Linux Ctrl+I) | 启动行内聊天,在编辑器或终端中打开聊天。 |
| ⇧⌥⌘L(Windows、Linux Ctrl+Shift+Alt+L) | 打开快速聊天,而不会中断您的工作流程。 |
| ⌘N (Windows、Linux Ctrl+N) | 在“聊天”视图中开始新的聊天会话。 |
| 在“聊天”视图中切换不同的代理。 | |
| ⌥⌘. (Windows, Linux Ctrl+Alt+.) | 显示模型选择器,以选择用于聊天的不同 AI 模型。 |
| 上下文窗口控制 | 聊天输入框中的视觉指示器,显示上下文窗口使用情况。悬停以查看总 token 数和按类别的细分。 |
添加上下文... |
将不同类型的上下文附加到您的聊天提示。 |
/-命令 |
使用斜杠命令执行常见任务或调用可重用聊天提示。 |
#-提及 |
引用常见工具或聊天变量,以在提示中提供上下文。 |
@-提及 |
引用聊天参与者以处理特定于域的请求。 |
| 编辑 () | 编辑先前的聊天提示并撤销更改。 |
| 历史记录 () | 访问您的聊天会话历史记录。 |
| 语音 () | 通过使用语音输入聊天提示(语音聊天)。聊天回复会大声读出。 |
| KaTeX | 在聊天回复中渲染数学方程式。通过 chat.math.enabled 启用。右键单击数学表达式以复制源表达式。 |
| Mermaid | 在聊天回复中渲染 Mermaid 图表。通过 mermaid-chat.enabled 启用。右键单击图表以复制源代码。 |
提示
- 使用
#-提及项为您的聊天提示添加更多上下文。- 使用
/命令和@参与者以获得更精确和相关的答案。- 要获得最佳结果,请具体、简洁,并提出后续问题。
- 选择适合您需求的代理:提问、编辑、代理或创建自定义代理。
向提示添加上下文
通过向聊天提示提供上下文,获得更相关的回复。从不同类型的上下文(如文件、符号、编辑器选择、源代码管理提交、测试失败等)中进行选择。
| 操作 | 描述 |
|---|---|
| 添加上下文 | 打开快速选择,为您的聊天提示选择相关的上下文。从不同类型的上下文(如工作区文件、符号、当前编辑器选择、终端选择等)中进行选择。 |
| 拖放文件 | 将文件从资源管理器或搜索视图拖放,或将编辑器选项卡拖放到“聊天”视图。 |
| 拖放文件夹 | 将文件夹拖放到“聊天”视图,以附加其中包含的文件。 |
| 拖放问题 | 从“问题”面板拖放一项。 |
#<文件|文件夹|符号> |
键入 #,后跟文件、文件夹或符号名称,将其作为聊天上下文添加。 |
#-提及 |
键入 #,后跟一个聊天工具,以添加特定的上下文类型或工具。 |
聊天工具
在聊天中使用工具来在处理用户请求时完成专门的任务。此类任务的示例包括列出目录中的文件、编辑工作区中的文件、运行终端命令、获取终端的输出等等。
VS Code 提供内置工具,您还可以使用来自 MCP 服务器和扩展的工具来扩展聊天功能。了解有关工具类型的更多信息。
下表列出了 VS Code 内置工具
| 聊天变量/工具 | 描述 |
|---|---|
#changes |
源代码管理更改列表。 |
#codebase |
在当前工作区中执行代码搜索,以自动查找与聊天提示相关的上下文。 |
#createAndRunTask |
在工作区中创建和运行新的任务。 |
#createDirectory |
在工作区中创建一个新目录。 |
#createFile |
在工作区中创建一个新文件。 |
#edit (工具集) |
启用对工作区中文件的修改。 |
#editFiles |
对工作区中的文件应用编辑。 |
#editNotebook |
对 Notebook 进行编辑。 |
#extensions |
搜索和询问有关 VS Code 扩展的信息。例如,“如何开始使用 Python #extensions?” |
#fetch |
获取给定网页的内容。例如,“总结 #fetch code.visualstudio.com/updates。” |
#fileSearch |
使用 glob 模式搜索工作区中的文件并返回其路径。 |
#getNotebookSummary |
获取 Notebook 单元格及其详细信息列表。 |
#getProjectSetupInfo |
提供有关搭建不同类型项目的说明和配置。 |
#getTaskOutput |
获取运行工作区中任务的输出。 |
#getTerminalOutput |
获取运行工作区中终端命令的输出。 |
#githubRepo |
在 GitHub 仓库中执行代码搜索。例如,“什么是全局片段 #githubRepo microsoft/vscode。” |
#installExtension |
安装 VS Code 扩展。 |
#listDirectory |
列出工作区中目录中的文件。 |
#new |
搭建一个新的 VS Code 工作区,预先配置了调试和运行配置。 |
#newJupyterNotebook |
根据描述搭建一个新的 Jupyter Notebook。 |
#newWorkspace |
创建一个新的工作区。 |
#openSimpleBrowser |
打开集成浏览器并预览本地部署的 Web 应用程序。 |
#problems |
将“问题”面板中的工作区问题和问题添加为上下文。在修复代码或调试时很有用。 |
#readFile |
读取工作区中文件的内容。 |
#readNotebookCellOutput |
读取 Notebook 单元格执行的输出。 |
#runCell |
运行 Notebook 单元格。 |
#runCommands (工具集) |
启用在终端中运行命令并读取输出。 |
#runInTerminal |
在集成终端中运行 shell 命令。 |
#runNotebooks (工具集) |
启用运行 Notebook 单元格。 |
#runTask |
运行工作区中现有的任务。 |
#runTasks (工具集) |
启用运行工作区中的任务并读取输出。 |
#runSubagent |
在隔离的子代理上下文中运行任务。有助于改善主代理线程的上下文管理。 |
#runTests |
运行工作区中的单元测试。 |
#runVscodeCommand |
运行 VS Code 命令。例如,“启用禅模式 #runVscodeCommand。” |
#search (工具集) |
启用在当前工作区中搜索文件。 |
#searchResults |
从“搜索”视图获取搜索结果。 |
#selection |
获取当前编辑器选择(仅在选中文本时可用)。 |
#terminalLastCommand |
获取上次运行的终端命令及其输出。 |
#terminalSelection |
获取当前的终端选择。 |
#testFailure |
获取单元测试失败信息。在运行和诊断测试时很有用。 |
#textSearch |
在文件中查找文本。 |
#todos |
使用待办事项列表跟踪聊天请求的实现和进度。 |
#usages |
“查找所有引用”、“查找实现”和“转到定义”的组合。 |
#VSCodeAPI |
询问有关 VS Code 功能和扩展开发的问题。 |
斜杠命令
斜杠命令是聊天中特定功能的快捷方式。您可以使用它们快速执行操作,例如修复问题、生成测试或解释代码。
| 斜杠命令 | 描述 |
|---|---|
/doc |
从编辑器行内聊天生成代码文档注释。 |
/explain |
解释代码块、文件或编程概念。 |
/fix |
要求修复代码块或解决编译器或 linting 错误。 |
/tests |
为编辑器中所有或仅选定的方法和函数生成测试。 |
/setupTests |
获取有关为代码设置测试框架的帮助。获取相关测试框架的建议、设置和配置它的步骤,以及 VS Code 测试扩展的建议。 |
/clear |
在“聊天”视图中开始新的聊天会话。 |
/new |
搭建新的 VS Code 工作区或文件。使用自然语言描述您需要的项目/文件类型,并在创建前预览搭建的内容。 |
/newNotebook |
根据您的要求搭建一个新的 Jupyter Notebook。使用自然语言描述 Notebook 应包含的内容。 |
/init |
根据您的项目结构和编码模式生成或更新工作区说明(copilot-instructions.md 或 AGENTS.md)。 |
/plan |
为复杂的编码任务创建详细的实施计划。研究需求,提出澄清性问题,并生成带有步骤、验证和决策的结构化计划。 |
/search |
为“搜索”视图生成搜索查询。使用自然语言描述您想要搜索的内容。 |
/startDebugging |
从“聊天”视图生成 launch.json 调试配置文件并启动调试会话。 |
/<prompt name> |
在聊天中运行可重用提示。 |
聊天参与者
使用聊天参与者来处理聊天中的特定于域的请求。聊天参与者以 @ 开头,可用于询问特定主题的问题。VS Code 提供内置聊天参与者,如 @github、@terminal 和 @vscode,扩展也可以提供额外的参与者。
| 聊天参与者 | 描述 |
|---|---|
@claude |
用于将聊天会话委托给并与Claude 代理进行交互。 |
@cli |
用于将聊天会话委托给并与后台代理(Copilot CLI)进行交互。 |
@cloud |
用于将聊天会话委托给并与云代理进行交互。 |
@github |
使用 @github 参与者询问有关 GitHub 仓库、问题、拉取请求等信息。了解有关可用 GitHub 技能的更多信息。示例: @github 有哪些分配给我的未关闭的 PR?,@github 显示 @dancing-mona 最近合并的 PR |
@terminal |
使用 @terminal 参与者询问有关集成终端或 shell 命令的问题。示例: @terminal 列出此工作区中最大的 5 个文件 |
@vscode |
使用 @vscode 参与者询问有关 VS Code 功能、设置和 VS Code 扩展 API 的问题。示例: @vscode 如何启用自动换行? |
@workspace |
使用 @workspace 参与者询问有关当前工作区的问题。示例: @workspace 身份验证是如何实现的? |
使用代理
在使用代理时,您可以使用自然语言指定一个高级任务,让 AI 自主推理请求、规划所需工作并将更改应用于您的代码库。代理使用代码编辑和工具调用的组合来完成您指定的任务。在处理您的请求时,它会监控编辑和工具的结果,并迭代以解决出现的任何问题。
| 操作 | 描述 |
|---|---|
| ⇧⌘I (Windows Ctrl+Shift+I, Linux Ctrl+Shift+Alt+I) | 在“聊天”视图中切换到使用代理 |
| 工具 () | 配置在使用代理时可用的工具。从内置工具、MCP 服务器和扩展提供的工具中选择。 |
| 自动批准工具 | 启用在使用代理时自动批准所有工具( chat.tools.autoApprove )。 |
| 自动批准终端命令 | 启用在使用代理时自动批准终端命令( chat.tools.terminal.autoApprove )。 |
| MCP | 配置 MCP 服务器以扩展代理功能和工具。 |
| 第三方代理 | 使用来自外部提供商(如 Claude Agent (Preview) 和 OpenAI Codex)的代理,并使用您的 Copilot 订阅。 |
| Claude 代理(预览版) | 启动由 Anthropic 的 Claude Agent SDK 提供支持的 Claude Agent 会话。使用 /agents、/hooks 和 /memory 斜杠命令以实现高级工作流程。 |
提示
- 添加额外工具,在使用代理时扩展其功能。
- 配置自定义代理,以定义代理应如何运行,例如实现只读规划模式。
- 定义自定义说明,以指导代理如何生成和构建代码。
- 尝试 Claude Code 或 OpenAI Codex 等第三方代理,以获得替代的代理式编码体验。
规划
在 VS Code 聊天中使用规划代理,在开始复杂的编码任务之前创建详细的实施计划。将批准的计划移交给实施代理以开始编码。
| 操作 | 描述 |
|---|---|
| 计划 Agent | 从代理下拉列表中选择规划代理,或使用 /plan 斜杠命令为复杂的编码任务创建详细的实施计划。 |
| 待办事项列表 | 查看待办事项列表以跟踪复杂任务的进度。通过 setting(chat.tools.todos.showWidget 设置启用此功能。 |
自定义您的聊天体验
自定义您的聊天体验,以生成与您的编码风格、工具和开发人员工作流程相匹配的回复。有几种方法可以在 VS Code 中自定义您的聊天体验
-
自定义说明:为生成代码、执行代码审查或生成提交消息等任务定义通用准则或规则。自定义说明描述了 AI 应在其中运行的条件(任务如何完成)。
-
可重用提示文件:为常见任务(如生成代码或执行代码审查)定义可重用的提示。提示文件是独立的提示,您可以直接在聊天中运行它们。它们描述了要执行的任务(应该做什么)。
-
自定义代理:定义聊天的操作方式、可使用的工具以及与代码库的交互方式。每个聊天提示都在代理的边界内运行,无需为每个请求配置工具和说明。
提示
- 定义特定于语言的说明,以针对每种语言获得更准确生成的代码。
- 将您的说明存储在工作区中,以便轻松与团队共享。
- 为常见任务定义可重用的提示文件,以节省时间并帮助团队成员快速入门。
编辑器 AI 功能
在编辑器中编码时,您可以使用 Copilot 在键入时生成行内建议。调用行内聊天以提问并从 Copilot 处获得帮助,同时保持在编码流程中。例如,要求 Copilot 为函数或方法生成单元测试。了解有关行内建议和行内聊天的更多信息。
| 操作 | 描述 |
|---|---|
| 行内建议 | 开始在编辑器中键入,并获取与您的编码风格匹配并考虑到您现有代码的行内建议。 |
| 代码注释 | 通过在代码注释中编写说明,提供行内建议提示。 示例: # 编写一个带 add、subtract 和 multiply 方法的计算器类。使用静态方法。 |
| ⌘I(Windows、Linux Ctrl+I) | 启动编辑器行内聊天,直接从编辑器发送聊天请求。使用自然语言并引用聊天变量和斜杠命令来提供上下文。 |
| F2 | 在重命名代码中的符号时,获取 AI 驱动的建议。 |
| 上下文菜单操作 | 使用编辑器上下文菜单访问常见的 AI 操作,例如解释代码、生成测试、审查代码等。右键单击编辑器以打开上下文菜单,然后选择生成代码。 |
| 代码操作(灯泡) | 选择编辑器中的代码操作(灯泡)以修复代码中的 linting 或编译器错误。 |
提示
- 使用有意义的方法或函数名称,以便更快地获得更好的行内建议。
- 选择一个代码块来限定您的行内聊天提示的范围,或通过附加文件或符号来附加相关上下文。
- 使用编辑器上下文菜单选项,直接从编辑器访问常见的 AI 驱动操作。
源代码管理和问题
使用 AI 分析提交和拉取请求中的更改,并为提交消息和拉取请求描述提供建议。
| 操作 | 描述 |
|---|---|
#changes |
将当前的源代码管理更改添加为聊天提示的上下文。 |
| 作为上下文提交 | 将源代码管理历史记录中的提交添加为聊天提示的上下文。 |
| 提交消息 | 为源代码管理提交中的当前更改生成提交消息。 |
| 合并冲突(实验性) | 获取有关使用 AI解决 Git 合并冲突的帮助。 |
| 拉取请求描述 | 生成与拉取请求中的更改相对应的拉取请求标题和描述。 |
@github |
在聊天中使用 @github 参与者询问有关问题、拉取请求等方面的信息,涵盖您的所有仓库。了解有关可用 GitHub 技能的更多信息。示例: @github 有哪些分配给我的未关闭的 PR?,@github 显示 @dancing-mona 最近合并的 pr |
审查代码(实验性)
使用 AI 对代码块进行快速审查,或对工作区中未提交的更改进行审查。审查反馈会作为注释显示在编辑器中,您可以在其中应用建议。
| 操作 | 描述 |
|---|---|
| 审查选择(预览版) | 选择一个代码块,然后从编辑器上下文菜单中选择生成代码 > 审查,以进行快速审查。 |
| 代码审查 | 选择源代码管理视图中的代码审查按钮,对所有未提交的更改进行更深入的审查。 |
搜索和设置
在“搜索”视图中获取语义相关的搜索结果,或在“设置”编辑器中搜索设置时获得帮助。
| 操作 | 描述 |
|---|---|
| 设置搜索 | 在“设置”编辑器中包含语义搜索结果( workbench.settings.showAISearchToggle )。 |
| 语义搜索(预览版) | 在“搜索”视图中包含语义搜索结果( search.searchView.semanticSearchBehavior )。 |
生成测试
VS Code 可以通过在聊天中使用斜杠命令来帮助您为代码库中的函数和方法生成测试。斜杠命令是您可以在聊天提示中使用的常见任务的简写表示法。键入 / 接着是命令名称以使用斜杠命令。
| 操作 | 描述 |
|---|---|
/tests |
为编辑器中所有或仅选定的方法和函数生成测试。生成的测试将追加到现有测试文件中,或者创建一个新的测试文件。 |
/setupTests |
获取有关为代码设置测试框架的帮助。获取相关测试框架的建议、设置和配置它的步骤,以及 VS Code 测试扩展的建议。 |
/fixTestFailure |
要求 Copilot 建议如何修复失败的测试。 |
| 测试覆盖率(实验性) | 为尚未被测试覆盖的函数和方法生成测试。获取更多信息。 |
提示
- 提供有关要使用的测试框架或库的详细信息。
调试和修复问题
使用 Copilot 帮助修复编码问题,并帮助在 VS Code 中配置和启动调试会话。
| 操作 | 描述 |
|---|---|
/fix |
要求 Copilot 建议如何修复代码块或如何解决代码中的任何编译器或 linting 错误。例如,帮助修复未解析的 Node.js 包名称。 |
/fixTestFailure |
要求 Copilot 建议如何修复失败的测试。 |
/startDebugging(实验性) |
从“聊天”视图生成 launch.json 调试配置文件并启动调试会话。 |
copilot-debug 命令 |
终端命令,帮助您调试程序。在运行命令前加上前缀以启动其调试会话(例如,copilot-debug python foo.py)。 |
提示
- 提供有关所需修复类型的附加信息,例如优化内存消耗或性能。
- 留意编辑器中指示有关修复代码中问题建议的 Copilot 代码操作。
搭建新项目脚手架
Copilot 可以通过生成项目结构的脚手架或根据您的要求生成 Notebook 来帮助您创建新项目。
| 操作 | 描述 |
|---|---|
| 代理 | 使用代理并使用自然语言提示来创建新项目或文件。例如,创建一个跟踪我任务的 svelte Web 应用程序。 |
/new |
在“聊天”视图中使用 /new 命令来搭建新项目或新文件。使用自然语言描述您需要的项目/文件类型,并在创建前预览搭建的内容。示例: /new Express app using typescript and svelte |
/newNotebook |
在“聊天”视图中使用 /newNotebook 命令,根据您的要求生成一个新的 Jupyter Notebook。使用自然语言描述 Notebook 应包含的内容。示例: /newNotebook 获取人口普查数据并用 Seaborn 预览关键见解。 |
终端
获取有关 shell 命令以及如何在终端中运行命令时解决错误的帮助。
| 操作 | 描述 |
|---|---|
| ⌘I(Windows、Linux Ctrl+I) | 启动终端行内聊天,以使用自然语言询问有关 shell 命令和终端的信息。 示例: 这台机器有多少个核心? |
@terminal |
在“聊天”视图中使用 @terminal 参与者询问有关集成终端或 shell 命令的问题。示例: @terminal 列出此工作区中最大的 5 个文件 |
@terminal /explain |
使用“聊天”视图中的 /explain 命令来解释来自终端的某些内容。示例: @terminal /explain top shell command |
Python 和 Notebook 支持
您可以使用聊天来帮助您处理 Python 编程任务,包括在原生 Python REPL 和 Jupyter Notebook 中。
| 操作 | 描述 |
|---|---|
| 生成 ⌘I(Windows、Linux Ctrl+I) |
在 Notebook 中启动行内聊天,以生成代码块或 Markdown 块。 |
# |
将来自 Jupyter 内核的变量附加到您的聊天提示中,以获得更相关的回复。 |
| 原生 REPL + ⌘I (Windows, Linux Ctrl+I) | 在原生 Python REPL 中启动行内聊天并运行生成的命令。 |
| ⌃⌘I(Windows、Linux Ctrl+Alt+I) | 打开“聊天”视图并使用代理对 Notebook 进行编辑。 |
/newNotebook |
在“聊天”视图中使用 /newNotebook 命令,根据您的要求生成一个新的 Jupyter Notebook。使用自然语言描述 Notebook 应包含的内容。示例: /newNotebook 获取人口普查数据并用 Seaborn 预览关键见解。 |