在 VS Code 中使用 GitHub Copilot 进行代码补全
GitHub Copilot 充当 AI 驱动的结对程序员,自动提供建议来完成你的代码、注释、测试等。 它在你编写代码时直接在编辑器中提供这些建议,并且可以与各种编程语言和框架一起使用。
Copilot 提供两种类型的建议
-
代码补全 - 在编辑器中开始键入,Copilot 会提供与你的编码风格匹配并考虑你现有代码的代码建议。
-
下一个编辑建议(预览版) - 使用 Copilot 下一个编辑建议(又名 Copilot NES)预测你的下一个代码编辑。 基于你正在进行的编辑,Copilot 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 启用它
- 打开 VS Code 设置编辑器(⌘,(Windows、Linux Ctrl+,))
- 搜索
github.copilot.nextEditSuggestions.enabled
- 启用设置
如果你是 Copilot Business 或 Enterprise 用户,除了在编辑器中设置 github.copilot.nextEditSuggestions.enabled 之外,你的组织管理员还必须选择使用 Copilot“编辑器预览功能”。
你可以了解有关 管理组织中 Copilot 策略 的更多信息。
导航和接受编辑建议
你可以使用 Tab 键快速导航建议的代码更改,从而节省你查找下一个相关编辑的时间(无需手动搜索文件或引用)。 然后,你可以再次使用 Tab 键接受建议。
装订线中的箭头指示是否有可用的编辑建议。 你可以将鼠标悬停在箭头上以浏览编辑建议菜单,其中包括键盘快捷键和设置配置:
如果编辑建议低于当前编辑器视图,箭头将向下而不是向右指向:
下一个编辑建议的用例
捕捉和纠正错误
-
Copilot 可以帮助解决简单的错误,例如拼写错误。 它会建议修复缺少或交换字母的地方,例如
cont x = 5
或conts x = 5
,它们应该是const x = 5
。 -
Copilot 还可以帮助解决逻辑上更具挑战性的错误,例如反转的三元表达式
或者应该使用
&&
而不是||
的比较
更改意图
-
Copilot 会建议对你代码的其余部分进行更改,以匹配新的意图更改。 例如,当将类从
Point
更改为Point3D
时,Copilot 将建议向类定义添加z
变量。 接受更改后,Copilot NES 接下来建议将z
添加到距离计算中
重构
-
在一个文件中重命名变量一次,Copilot 将建议在其他所有地方更新它。 如果你使用新名称或命名模式,Copilot 会建议类似地更新后续代码。
-
匹配代码风格。 复制粘贴一些代码后,Copilot 将建议如何调整它以匹配粘贴发生处的当前代码。
进一步配置编辑建议
要使用 Copilot NES,你必须设置 github.copilot.nextEditSuggestions.enabled。 你还可以使用几个额外的设置来配置你的 Copilot NES 体验
-
editor.inlineSuggest.edits.codeShifting:如果你从不希望 Copilot NES 移动你的代码以显示建议,则可以禁用此设置。
-
editor.inlineSuggest.edits.renderSideBySide:
- auto(默认):如果视口中有足够的空间,则并排显示较大的建议,否则建议显示在相关代码下方。
- never:始终将较大的建议显示在相关代码下方。
提示与技巧
上下文
为了给你相关的内联建议,Copilot 会查看编辑器中的当前文件和打开的文件,以分析上下文并创建适当的建议。 在使用 Copilot 时,在 VS Code 中打开相关文件有助于设置此上下文,并使 Copilot 能够更全面地了解你的项目。
启用或禁用代码补全
你可以临时启用或禁用所有语言或仅特定语言的代码补全。
-
VS Code 状态栏中的 GitHub Copilot 状态图标指示 GitHub Copilot 是启用还是禁用。
-
要启用或禁用 Copilot 补全,首先在状态栏中选择 GitHub Copilot 图标。
-
如果你要禁用 GitHub Copilot,系统会询问你是要全局禁用建议,还是为当前正在编辑的文件的语言禁用建议。
- 要全局禁用 GitHub Copilot 的建议,请选择全局禁用。
- 要为指定语言禁用 GitHub Copilot 的建议,请选择为 <语言> 禁用。
设置
-
editor.inlineSuggest.syntaxHighlightingEnabled - 启用或禁用内联补全的语法突出显示。
-
github.copilot.nextEditSuggestions.enabled - 启用 Copilot 下一个编辑建议 (Copilot NES)。
-
editor.inlineSuggest.edits.codeShifting - 配置 Copilot NES 是否能够移动你的代码以显示建议。
-
editor.inlineSuggest.edits.renderSideBySide - 配置 Copilot NES 是否可以在可能的情况下并排显示较大的建议,或者 Copilot NES 是否应始终将较大的建议显示在相关代码下方。
后续步骤
-
开始使用入门级 Copilot 教程,以设置 VS Code 中的 Copilot 并亲身体验 Copilot。
-
了解如何通过 Copilot Chat 使用 AI 聊天对话。
其他资源
你可以在 Copilot 了解更多信息,以及如何在 GitHub Copilot 文档 中了解如何在 VS Code 中使用它。
或者查看 YouTube 上的 VS Code Copilot 系列,你可以在其中找到更多入门内容和特定于编程的视频,了解如何将 Copilot 与 Python、C#、Java、PowerShell、C++ 等一起使用。