使用 VS Code 中的 GitHub Copilot 进行代码补全
GitHub Copilot 充当人工智能驱动的结对编程助手,自动提供建议来补全您的代码、注释、测试等。它在您编写代码时直接在编辑器中提供这些建议,并且可以与各种编程语言和框架配合使用。
Copilot 提供两种建议类型
-
代码补全 - 在编辑器中开始输入,Copilot 会提供与您的编码风格匹配并考虑现有代码的代码建议。
-
下一处编辑建议 - 使用 Copilot 下一处编辑建议 (也称为 Copilot NES) 预测您的下一处代码编辑。根据您正在进行的编辑,NES 既能预测您想要进行的下一处编辑的位置,也能预测该编辑的内容。
入门
-
安装 GitHub Copilot 扩展。
-
使用您的 GitHub 帐户登录以使用 Copilot。
提示如果您还没有 Copilot 订阅,可以通过注册 Copilot 免费计划 免费使用 Copilot,并获得每月补全和聊天交互的限制。
-
通过我们的 Copilot 快速入门,了解 VS Code 中 Copilot 的主要功能。
内嵌建议
Copilot 在您输入时提供代码建议:有时是当前行的补全,有时是全新的代码块。您可以接受全部或部分建议,或者继续输入并忽略建议。
请注意以下示例中,Copilot 如何使用变暗的幽灵文本建议实现 calculateDaysBetweenDates
JavaScript 函数
当您看到内嵌建议时,可以使用 Tab 键接受它。
Copilot 会尝试对代码建议应用您代码中已有的相同编码风格。请注意以下示例中,Copilot 如何为建议的 subtract
方法应用与 add
方法相同的输入参数命名方案。
部分接受建议
您可能不想接受 GitHub Copilot 的整个建议。您可以使用 ⌘→ (Windows、Linux Ctrl+Right) 键盘快捷方式接受建议的下一个单词或下一行。
其他建议
对于任何给定的输入,Copilot 可能会提供多个其他建议。您可以将鼠标悬停在建议上,以查看任何其他建议。
从代码注释生成建议
除了依赖 Copilot 提供建议外,您还可以通过使用代码注释提供有关您期望的代码的提示。例如,您可以指定要使用的算法类型或概念(例如,“使用递归”或“使用单例模式”),或者要添加到类中的方法和属性。
以下示例演示了如何指示 Copilot 在 TypeScript 中创建一个类来表示学生,并提供有关方法和属性的信息
下一处编辑建议
内嵌建议非常适合自动完成代码片段。但由于大多数编码活动都是编辑现有代码,Copilot 代码补全的自然演进也包括帮助进行编辑,无论是在光标处还是更远的地方。编辑通常不是孤立进行的 - 在不同的场景中,需要进行的编辑存在逻辑流程。Copilot 下一处编辑建议 (Copilot NES) 就是这种演进。
根据您正在进行的编辑,Copilot NES 既能预测您想要进行的下一处编辑的位置,也能预测该编辑的内容。Copilot NES 帮助您保持专注,建议与您当前工作相关的未来更改,您只需按 Tab 键即可快速导航并接受 Copilot 的建议。建议可能跨越单个符号、整行或多行,具体取决于潜在更改的范围。
要开始使用 Copilot NES,请启用 VS Code 设置 github.copilot.nextEditSuggestions.enabled。
导航并接受编辑建议
您可以使用 Tab 键快速导航到建议的代码更改,节省寻找下一个相关编辑的时间(无需手动搜索文件或引用)。然后,您可以再次使用 Tab 键接受建议。
装订线中的箭头表示是否有可用的编辑建议。您可以将鼠标悬停在箭头上以浏览编辑建议菜单,其中包含键盘快捷方式和设置配置
如果编辑建议位于当前编辑器视图下方,箭头将指向下方而不是右侧
如果您是 VS Code vim 扩展 的用户,请使用该扩展的最新版本,以避免与 NES 的键绑定发生冲突。
减少编辑建议带来的干扰
默认情况下,编辑建议通过装订线箭头指示,并在编辑器中显示代码更改。如果您希望减少干扰,可以禁用在编辑器中显示代码更改,直到您按下 Tab 键导航到建议或将鼠标悬停在装订线箭头上。
要禁用在编辑器中显示代码更改,请在设置编辑器中启用 editor.inlineSuggest.edits.showCollapsed 设置。或者,将鼠标悬停在装订线箭头上,从菜单中选择折叠显示选项。要重新启用显示代码更改,请禁用该设置或从装订线箭头菜单中选择展开显示。
下一处编辑建议的使用场景
捕获和纠正错误
-
Copilot 帮助纠正简单的错误,如拼写错误。它会建议修复字母缺失或调换的情况,例如
cont x = 5
或conts x = 5
,这些本应是const x = 5
。 -
Copilot 还可以帮助纠正更复杂的逻辑错误,例如颠倒的三元表达式
或者本应使用
&&
而不是||
的比较
改变意图
-
Copilot 会建议对您代码的其余部分进行更改,以匹配新的意图变化。例如,当将类从
Point
更改为Point3D
时,Copilot 会建议在类定义中添加一个z
变量。接受更改后,Copilot NES 接下来会建议将z
添加到距离计算中
重构
-
在一个文件中重命名一个变量一次,Copilot 将建议在其他所有地方更新它。如果您使用新的名称或命名模式,Copilot 会建议类似地更新后续代码。
-
匹配代码风格。复制粘贴一些代码后,Copilot 会建议如何调整它以匹配粘贴发生处的当前代码。
启用或禁用代码补全
您可以为所有语言或仅为特定语言启用或禁用代码补全。
-
要启用或禁用代码补全,请在状态栏中选择 Copilot 菜单,然后勾选或取消勾选以启用或禁用代码补全的选项。
-
或者,在设置编辑器中修改 github.copilot.enable 设置。
为您要启用或禁用代码补全的每种语言添加一个条目。要为所有语言启用或禁用代码补全,请将
*
的值设置为true
或false
。
更改用于补全的 AI 模型
不同的大型语言模型 (LLM) 在不同类型的数据上进行训练,可能具有不同的功能和优势。了解如何在 VS Code 中 选择不同的 AI 语言模型 的更多信息。
要更改用于在编辑器中生成代码补全的语言模型
-
打开命令面板 (F1)。
-
输入更改补全模型并选择GitHub Copilot: 更改补全模型命令。
-
在下拉菜单中,选择您要使用的模型。
或者,如果启用了命令中心,您可以单击 VS Code 标题栏中的 Copilot 菜单,然后在下拉菜单中单击配置代码补全。然后在下拉菜单中选择更改补全模型...并选择您要使用的模型。
可用模型的列表可能会随时间变化。模型选择器可能不会总是显示多个模型,并且预览模型和其他代码补全模型将在发布时/何时在此处提供。如果您是 Copilot Business 或 Enterprise 用户,您的管理员需要在 GitHub.com 上的 Copilot 策略设置 中选择加入 Editor Preview Features
,以启用组织的特定模型。
技巧与窍门
上下文
为了为您提供相关的内嵌建议,Copilot 会查看编辑器中当前打开的文件,以分析上下文并创建适当的建议。在使用 Copilot 时,在 VS Code 中打开相关文件有助于设置此上下文,并让 Copilot 更全面地了解您的项目。
设置
代码补全设置
-
github.copilot.enable - 启用或禁用所有或特定语言的内嵌补全。
-
editor.inlineSuggest.fontFamily - 配置内嵌补全的字体。
-
editor.inlineSuggest.showToolbar - 启用或禁用内嵌补全时出现的工具栏。
-
editor.inlineSuggest.syntaxHighlightingEnabled - 启用或禁用内嵌补全的语法高亮。
下一处编辑建议设置
-
github.copilot.nextEditSuggestions.enabled - 启用 Copilot 下一处编辑建议 (Copilot NES)。
-
editor.inlineSuggest.edits.allowCodeShifting - 配置 Copilot NES 是否能够移动您的代码以显示建议。
-
editor.inlineSuggest.edits.renderSideBySide - 配置 Copilot NES 是否尽可能并排显示较大的建议,或者 Copilot NES 是否应始终在相关代码下方显示较大的建议。
- auto(默认):如果在视口中有足够的空间,则并排显示较大的编辑建议,否则在相关代码下方显示建议。
- never:从不并排显示建议,始终在相关代码下方显示建议。
下一步
-
通过 Copilot 快速入门 了解主要功能。
-
使用 Copilot Chat 进行 AI 聊天对话。
-
观看我们在 YouTube 上的 VS Code Copilot 系列 中的视频。