检查GitHub Copilot的代码完成功能

已完成

GitHub Copilot提供两种类型的内联建议。 键入时虚文本建议以灰色文本显示在当前光标位置。 下一次编辑建议 (NES) 基于你最近所做的更改预测下一次代码编辑的位置和内容。

当您执行以下操作时,会收到幽灵文本建议:

  • 在编辑器中输入部分代码行或完整代码行。
  • 在编辑器中输入部分或完整的代码注释。
  • 在编辑器中输入空白代码行。

下次编辑建议会在编辑代码时自动显示。 它们会根据您最近的编辑,预测您接下来可能会进行的更改,并用一个特殊的指示器显示建议的编辑位置。

常见的下一个编辑建议场景

下一个编辑建议在三种编码方案中特别有用:

  • 捕获错误:NES 检测到拼写错误(conts x = 5 → const x = 5)、反转三元表达式和不正确的比较运算符等问题,然后建议正确的修复。
  • 级联意图更改:重命名类型或变量时,NES建议将此更改传递到所有相关代码中。 例如,将类从 Point 重命名为 Point3D 时,会建议在代码需要的地方添加 z 坐标。
  • 重构:重命名变量一次后,NES 建议更新所有其他事件。 粘贴代码后,NES 建议对其进行调整以匹配周围代码的样式。

生成虚文本建议

GitHub Copilot通过根据你正在编写的代码来建议代码完成,从而加速应用开发。

例如,假设要创建一个名为返回两个整数之和的 C# 方法 addInt 。 当您开始键入方法签名时,GitHub Copilot 会为您提供它认为您想要创建的代码建议。

Visual Studio Code编辑器的截图显示了addInt方法体的虚影文本建议。

虚文本建议显示时不带彩色语法高亮。 这有助于将建议与现有代码区分开来。 可以通过按 Tab 键来接受建议的代码。

可以按 Esc 键消除建议。

addInt 示例有点简单,因此你可能想知道GitHub Copilot如何处理更复杂的内容。

假设你想要创建一个方法,该方法接受数字列表,并返回列表中所包含的质数的总和。 可以命名该方法 addPrimeNumbersInNumericList。 开始键入方法签名时,GitHub Copilot 为你生成建议。 例如:

Visual Studio Code 编辑器屏幕截图显示 addPrimeNumbersInNumericList 方法体的虚文本建议。

在接受之前,请务必审查建议。 此虚影文本建议看起来不错,因此可以通过按 Tab 键接受该建议。

让我们进一步发展这个情景。

将建议合并到代码后,你会注意到该方法 isPrime 以红色下划线。 这是因为该方法 isPrime 尚不存在于代码中。

GitHub Copilot经过培训,以遵循最佳做法,包括将复杂问题分解为更小、更易于管理的部分。 在这种情况下,GitHub Copilot建议你创建单独的 isPrime 方法来检查数字是否为质数。

GitHub Copilot已准备好为 isPrime 方法建议代码片段。 在 addPrimeNumbersInNumericList 方法下方输入空白行时,GitHub Copilot建议使用 isPrime 方法。

Visual Studio Code 编辑器的截图显示了 addPrimeNumbersInNumericList 方法后出现的 isPrime 帮助方法的幽灵文本建议<>

虚文本建议通过提供代码段加速开发过程。 但是,如果这些建议不太符合您的需要怎么办? GitHub Copilot提供了用于管理虚影文本建议的界面。

管理虚文本建议

当 GitHub Copilot 建议虚文本补全时,它还提供用于管理建议的界面。 可以接受建议、查看其他建议或消除建议。

将鼠标指针悬停在建议的自动补全项上时,会显示多个用于管理建议的选项。

Visual Studio Code编辑器的屏幕截图,其中显示了包含Accept、Accept Word、导航和其他选项的影子文本建议管理工具栏。

用于管理建议的默认界面包括以下选项:

  • 通过选择“ 接受”来接受建议(完整)。 也可以通过按 Tab 键来接受建议。
  • 通过选择 Accept Word 部分接受建议。 也可以按 Ctrl + →(向右箭头)键来部分接受建议。
  • 通过选择 > 或 <查看备用建议。 还可以通过按 Alt + ] 或 Alt + [ 键查看替代建议。

选择接受单词选项,将接收建议中的下一个单词。 如果要接受部分建议,然后继续键入自己的代码,这非常有用。 例如,可以接受isPrime方法建议的第一个单词。

继续选择 Accept Word,直到你接受尽可能多的建议。

选择“接受Word”按钮右侧的省略号 (...) 图标可提供其他选项,例如 接受本行 和 始终显示工具栏。

选择 “始终显示工具栏 ”选项可确保使用键盘快捷方式管理虚影文本建议时工具栏保持可见。 选择 Open Completions Panel 选项将打开GitHub Copilot完成面板。

注释

若要接受整行建议,需要为 editor.action.inlineSuggest.acceptNextLine 命令配置自定义键盘快捷方式。 默认情况下,此选项在工具栏中不可用。

从注释生成代码建议

除了基于代码建议自动补全项之外,GitHub Copilot 还可以使用代码注释来建议代码段。 使用自然语言短语描述要创建的代码。 这使GitHub Copilot能够提出满足特定要求的自动完成建议。 例如,可以指定要在计算中使用的算法类型,或要添加到类的方法和属性。

让我们返回到质数示例。 此时,你有以下代码:

int addPrimeNumbersInNumericList(List<int> numbers)
{
    int sum = 0;
    foreach (int number in numbers)
    {
        if (IsPrime(number))
        {
            sum += number;
        }
    }
    return sum;
}

private bool IsPrime(int number)
{
    if (number <= 1)
    {
        return false;
    }
    for (int i = 2; i <= Math.Sqrt(number); i++)
    {
        if (number % i == 0) return false;
    }
    return true;
}

addPrimeNumbersInNumericList和isPrime方法似乎已完成。 但是,调用该方法时 addPrimeNumbersInNumericList ,仍需要可用作参数的数字列表。 可以编写描述所需数字列表的注释。 例如,100 个随机数的列表,范围为 1 和 1000。

开始输入注释时,GitHub Copilot 会建议自动补全该注释以完成注释。 GitHub Copilot使用周围的代码来改进其建议。 例如,如果您开始输入注释// create,GitHub Copilot会利用周围的代码来预测您想要创建的内容。 在本例中,GitHub Copilot 使用 addPrimeNumbersInNumericList 方法来预测要创建 a list of numbers。

Visual Studio Code编辑器的屏幕截图,其中显示了文字建议以完成注释“// 创建数字列表”。

您继续撰写评论时,GitHub Copilot 更新其自动完成建议。 准备好接受建议时,请选择 “接受 ”或按 Tab 键。

在注释后创建新代码行时,GitHub Copilot开始基于注释和现有代码生成代码片段。

Visual Studio Code 编辑器屏幕截图显示基于上方注释的第一行代码的虚文本建议。

在显示建议时接受每个建议。 如果GitHub Copilot还没有完成,它会生成另一个建议供你接受。

如果在代码片段完成后输入新代码行,GitHub Copilot会根据代码项目的要求生成另一个自动完成建议。

概要

虚影文本建议和下一个编辑建议可帮助你更高效、更准确地编写代码。 键入时,隐形文本建议会在光标位置显示为淡色文本,下一个编辑建议会根据您最近的更改预测下一次编辑的位置和内容。 你可以通过输入部分或完整代码行、部分或完整代码注释或空白代码行来生成虚文本建议。 可以通过按 Tab 键来接受建议,也可以通过按 Esc 键将其消除。 可以使用将鼠标悬停在建议上时出现的工具栏来管理建议。 通过工具栏,您可以查看替代建议、接受某个建议、接受建议中的某个词,或打开GitHub Copilot完成面板以查看更多建议。