在 VS Code 中使用 GitHub Copilot 进行代码补全
GitHub Copilot 充当一个由 AI 驱动的结对程序员,自动提供建议来补全你的代码、注释、测试等。它在你编写代码时直接在编辑器中提供这些建议,并且可以与多种编程语言和框架协同工作。
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 NES)正是这种演进。
基于你正在进行的编辑,下一个编辑建议会预测你想要进行的下一次编辑的位置以及该编辑应该是什么。Copilot NES 帮助你保持心流状态,建议与你当前工作相关的未来更改,你只需按 Tab 键即可快速导航并接受 Copilot 的建议。建议可能跨越单个符号、一整行或多行,具体取决于潜在更改的范围。
要开始使用 Copilot NES,请启用 VS Code 设置 github.copilot.nextEditSuggestions.enabled。
导航并接受编辑建议
你可以使用 Tab 键快速导航到建议的代码更改,从而节省你寻找下一个相关编辑的时间(无需手动搜索文件或引用)。然后,你可以再次按 Tab 键接受建议。
边栏中的箭头指示是否有可用的编辑建议。箭头指示下一个编辑建议相对于你当前光标位置的位置。
你可以将鼠标悬停在箭头上以浏览编辑建议菜单,其中包括键盘快捷键和设置配置:
如果你是 VS Code vim 扩展 的用户,请使用最新版本的扩展以避免与 NES 的键绑定冲突。
通过编辑建议减少干扰
默认情况下,编辑建议由边栏箭头指示,并且代码更改显示在编辑器中。启用 editor.inlineSuggest.edits.showCollapsed 设置,代码更改将仅在你按下 Tab 键导航到建议或将鼠标悬停在边栏箭头上时才显示在编辑器中。或者,将鼠标悬停在边栏箭头上,然后从菜单中选择 折叠显示 选项。
下一个编辑建议的用例
发现并纠正错误
-
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
。
要临时禁用编辑器中的所有代码补全,请选择状态栏中的 Copilot 菜单,然后选择 暂停 按钮,将暂停时间增加五分钟。要恢复代码补全,请在 Copilot 菜单中选择 取消暂停 按钮。
或者,在命令面板中使用 暂停内联建议 和 取消暂停内联建议 命令。
更改用于补全的 AI 模型
不同的大型语言模型 (LLM) 在不同类型的数据上进行训练,可能具有不同的能力和优势。了解更多关于如何在 VS Code 中 选择不同的 AI 语言模型 的信息。
要更改用于在编辑器中生成代码补全的语言模型:
-
打开命令面板 (F1)。
-
输入 更改补全模型 并选择 GitHub Copilot: 更改补全模型 命令。
-
在下拉菜单中,选择你想要使用的模型。
可用模型列表可能会随时间变化。模型选择器可能不总是显示多个模型,预览模型和其他代码补全模型将在我们发布时出现在那里。如果你是 Copilot Business 或 Enterprise 用户,你的管理员需要在 GitHub.com 的 Copilot 策略设置 中选择加入 编辑器预览功能
,为你的组织启用某些模型。
提示与技巧
上下文
为了给你提供相关的内联建议,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: 从不并排显示建议,始终在相关代码下方显示建议。
-
github.copilot.nextEditSuggestions.fixes - 基于诊断信息(波浪线)启用下一个编辑建议。例如,缺失的导入。
-
editor.inlineSuggest.minShowDelay - 显示内联建议前等待的毫秒数。默认为
0
。
后续步骤
-
在快速入门中发现主要功能。
-
在 VS Code 聊天中使用 AI 聊天对话。
-
在 YouTube 上观看我们的 VS Code Copilot 系列视频。