VS Code 中的 GitHub Copilot

GitHub Copilot扩展是一款 AI 结对程序员工具,可帮助您更快、更智能地编写代码。您可以使用 VS Code 中的 Copilot 扩展来生成代码、从其生成的代码中学习,甚至配置您的编辑器。

先决条件

您将使用GitHub Copilot扩展来支持 VS Code 中的人工智能 (AI) 建议。

安装 GitHub Copilot 扩展

VS Code Marketplace 中的 Copilot 扩展

要使用 GitHub Copilot,您需要有效的 GitHub Copilot 订阅。在下面的内容中,您将了解 VS Code 如何帮助您直接从 VS Code 激活免费试用版。您还可以从GitHub Copilot 注册页面开始激活试用版。

登录并注册

如果您之前没有在 GitHub 帐户中授权 VS Code,系统会提示您在 VS Code 中登录 GitHub:

登录 Copilot 扩展的 VS Code 通知

在您的浏览器中,GitHub 将请求 GitHub Copilot 所需的权限。要批准这些权限,请选择“授权 Visual Studio Code”

激活您的免费试用

如果您尚未激活 Copilot 的免费试用版,该扩展将在 VS Code 中通知您。选择注册 GitHub Copilot以激活试用版。

VS Code 中的 Copilot 注册通知

您可以在GitHub Copilot 文档中了解有关 Copilot 计费的更多信息。

使用副驾驶

现在您已经注册了 Copilot 并激活了扩展程序,让我们看看它的实际帮助!

GitHub Copilot 提供了针对多种语言和各种框架的建议,尤其适用于 Python、JavaScript、TypeScript、Ruby、Go、C# 和 C++。

内嵌建议

Copilot 自动提出建议,帮助您更有效地编码。利用这些建议只需 3 个步骤:

  1. 开始编写代码(或与代码相关的项目,例如注释或测试)。

Copilot 提供各种语言和框架的建议。对于任何给定的输入,Copilot 可能会提供多个建议。您可以选择使用哪个建议或拒绝所有建议。

  1. 接收灰色幽灵(褪色)文本形式的副驾驶建议。

幽灵文本是占位符文本,将被您键入或从 Copilot 中选择的输入替换。

作为示例,在 JavaScript 文件中,您可以键入以下函数头:

function calculateDaysBetweenDates(begin, end) {

副驾驶将提供如下建议:

JavaScript 幽灵文本建议

  1. 选择接受副驾驶的建议。

对于任何给定的输入,Copilot 可能会提供多个建议。当 Copilot 提供建议时,您可以使用Tab键接受它,或将鼠标悬停在建议上以查看内联建议工具栏:

JavaScript 幽灵文本建议

在上图中,Copilot 提出了三个建议。您可以使用Tab接受整个建议,也可以使用Ctrl+RightArrow仅接受建议的一部分。您可以在建议工具栏中切换建议,或使用键盘快捷键⌥](Windows、Linux Alt+]

如果您不想接受任何建议,可以继续输入,Copilot 将在您工作时继续提供建议。

充分利用 Copilot

您可以采取一些措施来帮助(“提示”)Copilot 为您提供最佳建议。好消息是您现在可能已经在这样做了,因为它们可以帮助您和您的同事理解您的代码。

当 Copilot 有足够的背景信息来了解您在做什么以及您需要什么帮助时,Copilot 的建议效果最佳。正如您在寻求特定编程任务帮助时向同事提供上下文一样,您也可以使用 Copilot 执行相同的操作。

注意:“即时工程”是您在讨论 AI 时会听到的常见短语,指的是如何以及将哪些信息打包并发送到 AI API 端点。Copilot 扩展程序会为您执行此“提示工程”,但您可以通过提供指导扩展程序的提示来提供帮助。

提供背景信息

打开文件

Copilot 会查看编辑器中当前和打开的文件,以分析上下文并创建适当的建议。使用 Copilot 时在 VS Code 中打开相关文件有助于设置此上下文,并让 Copilot 看到项目的更大情况。

顶级评论

正如您向同事进行简短的高级介绍一样,您正在处理的文件中的顶级注释可以帮助 Copilot 了解您将要创建的作品的整体背景。

适当的包含和参考

最好手动设置工作所需的包含或模块引用。副驾驶可以提出建议,但您可能最清楚需要包含哪些依赖项。这还可以帮助 Copilot 了解您希望在制定建议时使用哪些框架、库及其版本。

有意义的函数名称

正如调用的方法fetchData()对同事(或几个月后的您)没有多大意义一样,fetchData()也不会帮助 Copilot。使用有意义的函数名称将有助于 Copilot 提供执行您想要的操作的主体。

具体且范围明确的功能注释

函数名称只能具有描述性,但不能太长,因此函数注释可以帮助填写 Copilot 可能需要了解的详细信息。

Prime Copilot 和示例代码

让 Copilot 位于正确页面的一个技巧是复制并粘贴与您要查找的内容接近的示例代码。提供一个小示例可以帮助 Copilot 生成与您想要实现的语言和任务相匹配的建议。一旦 Copilot 开始向您提供您想要且实际使用的代码,您就可以从文件中删除示例代码。当 Copilot 默认提供较旧的代码建议时,这对于将 Copilot 快速启动到较新的库版本特别有帮助。

保持一致并保持高质量标准

Copilot 将锁定您的代码以生成遵循现有模式的建议,因此谚语“垃圾输入,垃圾输出”适用。

当您快速而宽松地编码以使某些内容正常工作并且您可能希望在“黑客”模式下禁用 Copilot 完成时,保持高质量栏需要遵守纪律。您可以从 Copilot 状态菜单暂时禁用完成操作。通过选择 Copilot 状态栏项目调出 Copilot 状态菜单下拉列表。

将鼠标悬停在 Copilot 状态栏项目上会显示“显示 Copilot 状态菜单”

从下拉列表中,您可以完全禁用补全或仅针对活动文件类型(例如 Markdown 文件)禁用补全。

选择“禁用完成”的副驾驶状态菜单下拉列表

更多资源

如果您想了解有关高效使用 GitHub Copilot 的更多信息,您可以关注以下视频和博客文章:

聊天功能

除了内联建议之外,您还可以通过聊天界面从 Copilot 获得帮助。这通过多种方式得到支持:

  • 聊天视图:在 GitHub Copilot 聊天视图中向 Copilot 寻求有关任何任务或问题的帮助。
  • 内联聊天:在文件中内联编写代码时与 Copilot 交谈。
  • 快速聊天:打开聊天下拉列表以快速提出问题和建议。

通过安装额外的GitHub Copilot Chat扩展即可使用聊天功能。

安装 GitHub Copilot 聊天扩展

GitHub Copilot 聊天扩展

聊天视图

当开发一个项目或学习新东西时,获得人工智能帮助解决你的问题,无论大小,都会有很大帮助。Copilot 可实现交互式聊天体验,了解代码、工作区、扩展、设置等的上下文。

您可以通过活动栏访问聊天视图:

VS Code 活动栏中的 Copilot 视图

与 VS Code 中的其他视图一样,您可以将其移动到任何位置。例如,您可以将其移动到辅助侧边栏,以便您可以同时使用其他视图(例如资源管理器):

副驾驶视图移至辅助侧栏

副驾驶将提出潜在的问题以供开始使用。您可以选择以下任何问题或使用聊天框输入您自己的问题:

Copilot 解释 devcontainer.json 文件

当您继续提出问题时,Copilot 会保留您的对话历史记录,并且还会在响应中提供相关的后续问题或命令。

您可以使用响应右上角的“向上”和“向下”图标对响应进行赞成或反对,从而帮助 Copilot 提供更好的答案。这会向 Copilot 提供关于它对您的场景有多大帮助的反馈,以便它可以在将来更好地帮助您。

键盘快捷键

为了方便使用聊天视图,有几个键盘快捷键:

  • ⌃⌘I(Windows、Linux Ctrl+Alt+I - 打开聊天视图
  • ⌃L(Windows、Linux Ctrl+L - 清除聊天视图
  • ⌘↓(Windows、Linux Ctrl+Down - 将键盘焦点移至聊天视图输入框

代理和斜线命令

为了进一步帮助 Copilot 为您提供更相关的答案,您可以通过代理斜线命令来表明问题的范围和意图。

代理就像专家一样,拥有可以为您提供帮助的专业知识,您可以通过使用符号提及他们来在聊天中与他们交谈@。目前有两个代理:

  • @workspace具有有关工作区中代码的上下文,可以帮助您导航它,查找相关文件或类。
  • @vscode了解 VS Code 编辑器本身的命令和功能,并可以帮助您使用它们。

您可以在聊天输入前添加特定客服人员,以帮助 Copilot 为您提供更相关的响应。

询问 @vscode 代理如何更改 VS Code 颜色

代理还可以支持针对特定类型问题或任务的斜线命令。例如,@workspace /explain可用于要求 Copilot 在打开的工作空间中解释文件或代码选择。要查看可用的代理和斜线命令,请键入/列表。

聊天中的副驾驶斜线命令列表

  • @workspace /explain:逐步解释所选代码的工作原理。
  • @workspace /fix:针对所选代码中的错误提出修复建议。
  • @workspace /new:根据自然语言描述创建一个新项目。
  • @workspace /newNotebook:根据您的描述创建一个新的 Jupyter Notebook。
  • @workspace /terminal:解释如何在集成终端中执行某些操作。
  • @workspace /tests:为所选代码生成单元测试。
  • @vscode /api:有关 VS Code 扩展开发的问题。

除了代理和斜线命令组合之外,还有用于清除聊天会话或获取帮助等操作的通用斜线命令。

  • /help:打印有关 GitHub Copilot 的一般帮助。
  • /clear:清除会话。

代码块

根据您的问题,Copilot Chat 可能会在代码块中返回源代码。

使用 JSON 的 Copilot Chat 代码块来更改 VS Code 中注释的颜色

将鼠标悬停在代码块上会显示复制在光标处插入的选项( ⌃Enter (Windows、Linux Ctrl+Enter ) )。

更多操作” ( ) 按钮还显示“插入新文件”和“插入终端” ( ⌃/ (Windows、Linux Ctrl+/ )... )选项。

展开了“更多操作”按钮的副驾驶聊天代码块

如果 Copilot Chat 检测到代码块包含命令,您可以使用Run in Terminal ⌃/(Windows、Linux Ctrl+/直接在集成终端中运行它。此选项将创建或打开活动终端并插入命令文本,准备运行。

Copilot 聊天代码块列出文件,并显示“在终端中运行”选项

聊天查看位置

默认情况下,聊天视图显示在主侧栏中,但与 VS Code 中的其他视图一样,您可以将其拖放到任何位置。例如,您可以将聊天视图拖放到面板区域中:

面板区域中的聊天视图

您还可以在编辑器区域中打开聊天视图以获得更大的显示区域。从聊天视图标题栏的更多操作( ...) 菜单中,选择在编辑器中打开会话

Copilot 聊天视图标题栏 选择在编辑器中打开会话的更多操作

就像任何打开的编辑器一样,您可以将编辑器托管的聊天视图移动到单独的编辑器组中,并使用显示自定义(例如网格布局)在编辑器区域中打开多个聊天会话。

要将聊天视图移回侧边栏,请在聊天视图是活动编辑器时使用编辑器标题栏中的“在侧边栏中打开会话”命令。

编辑器中的聊天视图,侧栏中显示打开会话

内嵌聊天

Copilot 的另一个关键功能是在您编码时在线回答问题。这使您能够在保留现有编辑器工作流程的同时利用人工智能的力量。

在任何文件中,您可以按键盘上的⌘I(Windows、Linux Ctrl+I)来调出 Copilot 内联聊天:

devcontainer.json 文件中的 Copilot 内联聊天

您可以询问 Copilot 在编写和迭代代码时出现的问题,例如“解释这段代码”或“如何添加功能来执行 X 操作?” 如果您在编辑器中选择了代码,Copilot 会将您的问题范围限定为所选内容。

一些斜线命令也可以在内联聊天中使用,例如/explain要求 Copilot 解释代码块或/test生成单元测试。

内联聊天斜线命令列表

一个有用的命令是/fix,它分析错误行或选定的代码,并在差异视图中提出修复方案供您查看。检查并可能修改生成的代码后,您可以选择接受放弃修复。

内联聊天/修复识别未分配的变量并在差异视图中提出修复方案

快速聊天

如果您想向 Copilot 询问一个快速问题,并且不想启动完整的聊天视图会话或在编辑器中打开内联聊天,则可以使用“快速聊天”下拉菜单。要打开快速聊天,您可以运行聊天:打开快速聊天或使用⇧⌘I(Windows Ctrl+Shift+I、Linux Ctrl+Shift+Alt+I键盘快捷键。

快速聊天下拉菜单

您可以键入问题,使用代理和斜线命令(例如@workspace /explain和)确定问题范围,并使用下拉列表右上角的“在聊天视图中打开”@vscode按钮将讨论提升为完整的聊天视图会话。

快速聊天在聊天视图按钮中打开

聊天智能动作

为了更轻松地使用 Copilot 聊天功能,编辑器上下文菜单中有一个Copilot菜单组。右键单击编辑器并导航到Copilot以查看可用选项:

编辑器上下文菜单,其中 Copilot 菜单组已展开

您可以将这些智能操作应用于当前文件或文件中的选定内容。选择一个操作,在聊天视图或内联聊天中调出适当的代理和/或斜线命令。例如,为某个函数选择“生成文档”将打开内联聊天,其中包含建议的文档评论:

内联聊天 /doc 结果为 TypeScript 函数添加 JSDoc 注释

副驾驶的其他用途

除了内联完成和聊天之外,GitHub Copilot 还可以帮助完成其他开发任务和工作流程。例如,Copilot 可以帮助编写提交消息、修复错误和查找命令。

闪闪发光

当 Copilot 可以帮助完成任务或工作流程时,VS Code 会显示一个闪烁的图标。将鼠标悬停在闪光图标上将描述副驾驶的操作。

输入框中的闪烁图标

生成 Git 提交消息

Copilot 可以帮助您编写 GitHub 提交消息。在源代码管理消息输入框中,选择右侧的闪烁按钮,Copilot 将根据您的待处理更改创建提交消息。

将鼠标悬停在源代码控制输入框闪烁按钮上显示生成提交消息

如果您使用GitHub Pull Request 和 Issues扩展,则有一个闪烁按钮可用于在 Pull Request Create视图中填写标题和描述。

终端快速修复

当命令在终端中运行失败时,Copilot 会在装订线中显示一个闪光,提供快速修复来解释发生的情况。

终端命令失败显示闪烁并使用 Copilot Quick Fix 进行解释

选择使用 Copilot 进行解释将使用代理和斜线命令填充聊天视图@workspace /explain,以帮助纠正最后一个终端命令错误。

与 @workspace /explain #terminalLastCommand 的聊天视图和 Copilot 的回答

命令面板帮助

尝试在命令面板 ( ⇧⌘P (Windows、Linux Ctrl+Shift+P ) )中查找命令时,如果您认为没有看到所需的命令,则可以使用搜索词运行Ask GitHub Copilot 。

选择询问 GitHub Copilot 的命令面板来搜索“隐藏编辑器概述”

Ask GitHub Copilot命令将打开聊天视图并输入您的搜索词。

包含“隐藏编辑器概述”答案的聊天视图

其他资源

恭喜,您现在已经使用人工智能来增强您的编码!

您可以在GitHub Copilot 文档中阅读有关 Copilot 以及如何在 VS Code 中使用它的更多信息。

或者查看Youtube 上的VS Code Copilot 系列,您可以在其中找到更多介绍性内容以及使用 Copilot 与PythonC#JavaPowerShell等进行编程的特定视频。

常见问题

副驾驶聊天功能对我不起作用?

如果 Copilot Chat 不起作用,请检查每项要求:

  • 确保您使用的是最新版本的 Visual Studio Code(运行Code: Check for Updates)。
  • 确保您拥有最新版本的GitHub CopilotGitHub Copilot Chat扩展。
  • 登录 VS Code 的 GitHub 帐户必须同时是:
    • 已激活的 Copilot 订阅(检查您的订阅)。

我在活动栏中找不到 Copilot Chat

如果您已将聊天视图移出主要侧边栏,例如,将视图拖至辅助侧边栏,则聊天视图图标将不再显示在活动栏上。如果您关闭辅助侧栏,聊天视图将不可见,并且您可能无法访问聊天视图。

有多种方法可以显示聊天视图或将其恢复回活动栏:

  • 视图:显示聊天- 打开聊天视图,无论其托管在何处。
  • Copilot 状态菜单- 状态菜单下拉菜单中有一个打开 GitHub Copilot Chat 的选项。
  • 视图:重置视图位置- 将所有视图和面板恢复到默认位置的通用命令。

与任何视图一样,您可以将聊天视图拖放到活动栏或使用视图标题栏上下文菜单中的重置位置。

如何禁用副驾驶?

您可以从状态栏暂时停用 Copilot。系统将提示您是否要对所有代码(全局)禁用 Copilot,还是仅对活动编辑器中检测到的编程语言(例如 Python)禁用。

我如何提供有关 Copilot 的反馈?

您可以在GitHub Copilot 讨论中提供有关 Copilot 内联建议和响应的反馈。

如果您想提供有关 Copilot 聊天功能的反馈,您可以在vscode-copilot-release存储库中创建问题。

是否有 Copilot 扩展的预发布版本?

是的,您可以切换到 Copilot 扩展的预发布(每晚)版本,以尝试最新的功能和修复。在扩展视图中,右键单击或选择齿轮图标以打开上下文菜单,然后选择切换到预发布版本

带有切换到预发布版本选项的扩展视图上下文菜单

您可以通过扩展详细信息中的“预发布”徽章来判断您是否正在运行预发布版本:

GitHub Copilot 扩展的预发布版本