VS Code 中 GitHub Copilot 的内联建议

VS Code 中的 GitHub Copilot 提供 AI 驱动的内联建议,可在您键入时补全代码、注释、测试等内容。内联建议适用于广泛的编程语言和框架。它们是 VS Code 中多种 AI 交互方式之一,此外还包括用于自主多文件任务的智能体聊天以及智能操作

您可能会体验到两种来自 Copilot 的内联建议,它们都与您的编码风格相匹配,并会考虑您现有的代码:

  • 幽灵文本建议 (Ghost text suggestions):在编辑器中开始键入,Copilot 会在当前光标位置提供灰色的幽灵文本建议。

  • 下一次编辑建议 (Next edit suggestions):使用 Copilot 下一次编辑建议(又称 Copilot NES)预测您的下一次代码编辑。基于您正在进行的编辑,NES 不仅会预测您接下来想要进行编辑的位置,还会预测具体的编辑内容。

先决条件

  • 您的机器上已安装 Visual Studio Code。请按照以下步骤设置 VS Code
  • 拥有 GitHub Copilot 订阅。请按照以下步骤设置 GitHub Copilot。您可以设置 Copilot Free 以获得每月的内联建议额度和 AI 点数。

幽灵文本建议

获取您的首个建议

Copilot 会在您键入时提供灰色的幽灵文本建议:有时是当前行的补全,有时是全新的代码块。

  1. 打开您选择的一种编程语言文件并开始键入。您应该能在键入时看到来自 Copilot 的内联建议。

    以下示例展示了 Copilot 如何通过灰色的幽灵文本建议 calculateDaysBetweenDates JavaScript 函数的实现:

    JavaScript ghost text suggestion.

  2. Tab 键接受建议。

    若要部分接受建议,请使用 ⌘→ (Windows, Linux Ctrl+Right) 键盘快捷键来接受建议的下一个单词或下一行。

替代建议

对于任何给定的输入,Copilot 可能会提供多个替代建议。您可以将鼠标悬停在建议上以查看其他建议。

Hovering over inline suggestions enables you to select from multiple suggestions

根据代码注释生成建议

您可以不依赖 Copilot 自行提供建议,而是通过代码注释提供有关预期代码的提示。例如,您可以指定要使用的算法类型或概念(例如,“使用递归”或“使用单例模式”),或者指定要添加到类中的方法和属性。

以下示例展示了如何指导 Copilot 在 TypeScript 中创建一个代表学生的类,并提供有关方法和属性的信息:

Use code comments to let Copilot generate a Student class in TypeScript with properties and methods.

下一个编辑建议

幽灵文本建议非常适合自动补全某段代码。但由于大部分编码活动都是在编辑现有代码,因此内联建议向光标处及远处的编辑提供帮助是一种自然演进。“下一次编辑建议”(Copilot NES)便是这一演进。编辑通常不是孤立进行的——在不同场景下,需要进行的编辑往往存在逻辑流。Copilot NES 实现了这一点。

基于您正在进行的编辑,下一次编辑建议会预测您接下来想要编辑的位置以及具体内容。Copilot NES 帮助您保持工作流,建议与您当前工作相关的未来更改,您可以按 Tab 键快速导航并接受 Copilot 的建议。根据潜在更改的范围,建议可能跨越单个符号、整行或多行。

要开始使用 Copilot NES,请启用 VS Code 设置 github.copilot.nextEditSuggestions.enabled 在 VS Code 中打开 在 VS Code Insiders 中打开 此设置由组织级别管理。请联系您的管理员进行更改。

导航并接受编辑建议

您可以使用 Tab 键快速导航至建议的代码更改,从而节省查找下一个相关编辑的时间(无需在文件中手动搜索或查找引用)。然后,您可以再次按 Tab 键接受建议。

侧边栏(gutter)中的箭头指示是否有可用的编辑建议。箭头指示相对于当前光标位置的下一个编辑建议所在的位置。

您可以将鼠标悬停在箭头上以探索编辑建议菜单,其中包含键盘快捷键和设置配置。

Copilot NES gutter menu expanded

重要

如果您是 VS Code vim 扩展用户,请使用最新版本的扩展,以避免与 NES 在按键绑定上产生任何冲突。

减少编辑建议带来的干扰

默认情况下,编辑建议由侧边栏箭头指示,代码更改会在编辑器中显示。启用 editor.inlineSuggest.edits.showCollapsed 在 VS Code 中打开 在 VS Code Insiders 中打开 设置,即可让代码更改仅在您按 Tab 键导航至建议或将鼠标悬停在箭头上方时才显示。或者,您可以悬停在箭头上方并从菜单中选择“显示折叠 (Show Collapsed)”选项。

下一次编辑建议的使用场景

捕获并纠正错误

  • Copilot 可帮助纠正简单的错误(如拼写错误)。 它会针对缺失或颠倒的字母建议修复,例如将 cont x = 5conts x = 5 修复为 const x = 5

    NES fixing a typo from "conts" to "const"

  • Copilot 还可以帮助处理更具挑战性的逻辑错误,例如反转的三元表达式。

    NES fixing a ternary logic mistake

    或本应使用 && 却使用了 || 的比较逻辑。

    NES fixing an if statement mistake

更改意图

  • Copilot 会建议与新的意图更改相匹配的代码修改。 例如,将类从 Point 更改为 Point3D 时,Copilot 会建议在类定义中添加 z 变量。接受更改后,Copilot NES 会进一步建议在距离计算中添加 z

    NES gif for updating Point to Point3D

重构

  • 在文件中重命名一次变量,Copilot 会建议在其他地方同时更新它。 如果您使用新的名称或命名模式,Copilot 会建议以类似方式更新后续代码。

    Copilot NES suggesting change after updating function name

  • 匹配代码风格。在复制并粘贴一段代码后,Copilot 会建议如何调整它以匹配粘贴位置的当前代码风格。

启用或禁用内联建议

您可以针对所有语言或仅特定语言启用/禁用内联建议。若要启用或禁用,请选择状态栏中的 Copilot 菜单,然后勾选或取消勾选相应选项。禁用特定语言的内联建议选项取决于当前活动编辑器的语言。

Screenshot of the Copilot menu in the Status Bar with Snooze and Cancel Snooze buttons.

或者,在设置编辑器中修改 github.copilot.enable 在 VS Code 中打开 在 VS Code Insiders 中打开 设置。为每个要启用或禁用内联建议的语言添加条目。若要对所有语言设置,请将 * 的值设置为 truefalse

若要临时禁用编辑器中的所有内联建议,请选择状态栏中的 Copilot 菜单,然后选择“暂停 (Snooze)”按钮,以将暂停时间增加五分钟。若要恢复,请选择 Copilot 菜单中的“取消暂停 (Cancel Snooze)”。

或者,在命令面板中使用“暂停内联建议”和“取消暂停内联建议”命令。

更改建议所用的 AI 模型

不同的大语言模型 (LLM) 基于不同的数据类型进行训练,可能具有不同的能力和优势。详细了解如何在 VS Code 中选择不同的 AI 语言模型

要更改编辑器中用于生成幽灵文本建议的语言模型:

  1. 打开命令面板 (F1)。

  2. 键入 change completions model 并选择 GitHub Copilot: Change Completions Model 命令。

  3. 在下拉菜单中,选择您想要使用的模型。

注意

可用模型列表可能会随时间变化。模型选择器并不总会显示多个模型。如果/当我们发布预览模型或额外的内联建议模型时,它们将在其中提供。如果您是 Copilot Business 或 Enterprise 用户,您的管理员需要在 GitHub.com 的 Copilot 策略设置中选择启用 Editor Preview Features,以使您的组织能够使用某些模型。

技巧与窍门

上下文

为了提供相关的内联建议,Copilot 会查看编辑器中当前打开的文件,分析上下文并创建适当的建议。在使用 Copilot 时,在 VS Code 中保持相关文件处于打开状态有助于设定此上下文,让 Copilot 对您的项目有更全面的了解。

设置

幽灵文本建议设置

  • github.copilot.enable 在 VS Code 中打开 在 VS Code Insiders 中打开 - 启用或禁用针对所有或特定语言的内联补全。

  • editor.inlineSuggest.fontFamily 在 VS Code 中打开 在 VS Code Insiders 中打开 - 配置内联补全的字体。

  • editor.inlineSuggest.showToolbar 在 VS Code 中打开 在 VS Code Insiders 中打开 - 启用或禁用内联补全出现的工具栏。

  • editor.inlineSuggest.syntaxHighlightingEnabled 在 VS Code 中打开 在 VS Code Insiders 中打开 - 启用或禁用内联补全的语法高亮。

下一次编辑建议设置

  • github.copilot.nextEditSuggestions.enabled 在 VS Code 中打开 在 VS Code Insiders 中打开 此设置由组织级别管理。请联系您的管理员进行更改。 - 启用 Copilot 下一次编辑建议 (Copilot NES)。

  • editor.inlineSuggest.edits.allowCodeShifting 在 VS Code 中打开 在 VS Code Insiders 中打开 - 配置 Copilot NES 是否可以移位您的代码以显示建议。

  • editor.inlineSuggest.edits.renderSideBySide 在 VS Code 中打开 在 VS Code Insiders 中打开 - 配置 Copilot NES 是否尽可能并排显示较大的建议,或者是否始终在相关代码下方显示建议。

    • auto (默认):如果视口中有足够空间,则并排显示较大的编辑建议,否则建议将显示在相关代码下方。
    • never:从不并排显示建议,始终在相关代码下方显示建议。
  • github.copilot.nextEditSuggestions.fixes 在 VS Code 中打开 在 VS Code Insiders 中打开 - 启用基于诊断(波浪线)的下一次编辑建议。例如:缺失的导入。

  • editor.inlineSuggest.minShowDelay 在 VS Code 中打开 在 VS Code Insiders 中打开 - 显示内联建议前等待的时间(毫秒)。默认值为 0

后续步骤

© . This site is unofficial and not affiliated with Microsoft.