GitHub Copilot 在 VS Code 中的内联建议

GitHub Copilot 作为 AI 驱动的双人程序员,自动提供内嵌建议以完成你的代码、注释、测试等内容。它在你编写代码时直接在编辑器中提供这些建议,并且可以兼容多种编程语言和框架。

你可能会遇到 Copilot 提供的两种内嵌建议,这两种都符合你的编码风格,并考虑了你现有的代码:

  • 幽灵文本建议——开始在编辑器中输入,Copilot会在你当前光标位置提供调暗的幽灵文本建议。

  • 下一次编辑建议——用Copilot next edit suggestions(也就是Copilot NES)预测你下一次代码的编辑。根据你所做的修改,NES既能预测你下一次要编辑的位置,也能预测该编辑应该是什么内容。

入门

  1. 安装GitHub Copilot扩展。

    安装GitHub Copilot扩展

  2. 用你的 GitHub 账号登录即可使用 Copilot。

    提示

    如果你还没有Copilot订阅,可以通过注册Copilot免费计划免费使用Copilot,并获得每月的在线建议和聊天互动限制。

  3. 通过我们的Copilot快速入门,探索VS Code中Copilot的关键功能。

获取你的初步建议

Copilot在你输入时会显示暗淡的幽灵文本建议:有时是当前行的补全,有时是全新的代码块。你可以接受全部或部分建议,也可以继续输入并忽略这些建议。

请注意以下示例中,Copilot 建议实现计算日期之间的天数JavaScript 函数通过使用调暗的幽灵文本实现:

JavaScript 幽灵文本建议。

当你看到内联建议时,可以用Tab键接受。

Copilot 尝试应用你代码中已有的相同编码风格。注意以下示例中,Copilot 应用了相同的输入参数命名方案添加建议的方法减法方法。

JavaScript 幽灵文本建议。

部分接受建议

你可能不想接受GitHub Copilot的整条建议。你可以用⌘→(Windows,Linux Ctrl+Right快捷键来接受建议的下一个词或下一行。

替代建议

对于任何输入,Copilot可能会提供多个替代建议。你可以将鼠标悬停到其他任何建议上。

将鼠标悬停在内联建议上,可以从多个建议中选择

从代码注释中生成建议

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

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

使用代码注释让 Copilot 在 TypeScript 中生成带有属性和方法的学生类。

下一个编辑建议

幽灵文本建议非常适合自动完成一段代码。但由于大多数编码活动是编辑现有代码,内联建议自然演变而来,帮助在光标处和远处进行编辑。编辑往往不是孤立的——不同场景下需要做哪些编辑是有逻辑的。下一个编辑建议(Copilot NES)就是这个进化。

根据你正在做的编辑,下一步编辑建议既能预测你下一次编辑的位置,也能预测该编辑应该是什么样的。Copilot NES帮助你保持工作流程,建议与当前工作相关的未来更改,你也可以简单地按Tab键快速导航并接受Copilot的建议。建议可能涵盖单个符号、整行或多行,具体取决于变更的范围。

要开始使用Copilot NES,请启用VS Code设置

github.copilot.nextEditSuggestions.enabled
  • 在VS代码中打开
  • 在VS Code Insiders中开放
.

导航并接受编辑建议

你可以用Tab键快速切换到建议代码修改,节省寻找下一个相关编辑的时间(无需手动查找文件或参考文献)。然后你可以再次用Tab键接受建议。

排水沟里的箭头会显示是否有编辑建议可用。箭头指示下一个编辑建议相对于你当前光标位置的位置。

你可以将鼠标悬停在箭头上查看编辑建议菜单,里面有键盘快捷键和设置配置:

副驾驶 NES 排水沟菜单扩展

重要

如果你是VS Code vim扩展用户,请使用最新版本的扩展,以避免与NES的按键绑定冲突。

通过编辑建议减少干扰

默认情况下,编辑建议会通过 gutter 箭头表示,代码变更则会在编辑器中显示。启用

editor.inline建议.编辑.show折叠
  • 在VS代码中打开
  • 在VS Code Insiders中开放
设置为仅在你按Tab键导航到建议或将鼠标悬停在下栏箭头之前,在编辑器中显示代码变更。或者,将鼠标悬停在排水沟箭头上,从菜单中选择“显示折叠”选项。

下一次编辑建议的用例

发现并纠正错误

  • Copilot 能帮你解决像打错字这样的简单错误。它会建议修复字母缺失或互换的情况,比如连续 x = 5续数 x = 5,本该是集合 x = 5.

    NES 修复从“conts” 改为 “const” 的拼写错误

  • Copilot 还可以帮助解决逻辑中更具挑战性的错误,比如倒置的三进制表达式:

    NES 修复三进制逻辑错误

    或者说,应该用&&||:

    NES 修复 if 语句错误

意图的转变

  • Copilot会建议对你代码的其他部分进行与新意图变化相匹配的修改。例如,当将一个类从要点Point3D副驾驶会建议添加一个z变量为类定义。接受变更后,NES的Copilot接着建议添加z距离计算:

    NES 动图用于将 Point 更新到 Point3D

重构

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

    副驾驶NES在更新函数名称后建议更改

  • 代码样式匹配。复制粘贴一些代码后,Copilot会建议如何调整,使其与粘贴发生的当前代码相匹配。

启用或禁用内嵌建议

你可以为所有语言或仅针对特定语言开启或禁用内嵌建议。要启用或禁用内嵌建议,请在状态栏中选择副驾驶菜单,然后勾选或取消启用或关闭内嵌建议的选项。关闭特定语言的内嵌建议取决于当前编辑器的语言。

状态栏中副驾驶菜单的截图,按钮是贪睡和取消贪睡。

或者,修改

GitHub.copilot.enable
  • 在VS代码中打开
  • 在VS Code Insiders中开放
设置编辑器中的设置。为你想启用或关闭内联建议的每种语言添加一个条目。要启用或禁用所有语言的内嵌建议,将 的值设置为*确实如此错误.

要暂时禁用编辑器中的所有内联建议,请在状态栏中选择副驾驶菜单,然后选择贪按钮,将延迟增加五分钟。要继续在线建议,请在副驾驶菜单中选择取消贪睡按钮。

或者,在命令面板中使用“Snooze Inline Suggestions”“取消 Snooze Inline Suggestions”命令。

更改AI模型以获取建议

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

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

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

  2. 输入变更完成模型,选择GitHub Copilot: Change Completions Model命令。

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

注释

可选型号的列表可能会随着时间变化和变化。模型选择器可能并不总是显示多个模型,预览模型和额外的内联建议模型将在发布时提供。如果您是 Copilot 业务或企业用户,您的管理员需要通过选择加入来为您的组织启用某些模型编辑器预览功能在 GitHub.com 的Copilot策略设置中。

技巧与窍门

背景

为了给你相关的内嵌建议,Copilot会查看编辑器中当前和已打开的文件,分析上下文并生成合适的建议。在使用 Copilot 时打开相关文件,可以在 VS Code 中设置上下文,让 Copilot 更全面地了解你的项目。

背景设定

幽灵文本建议设置

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

  • editor.inlineSuggest.fontFamily
    • 在VS代码中打开
    • 在VS Code Insiders中开放
    - 配置字体以支持内联补全。

  • editor.inlineSuggest.showToolbar
    • 在VS代码中打开
    • 在VS Code Insiders中开放
    - 启用或禁用用于内联完成的工具栏。

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

下一个编辑 建议 设置

  • github.copilot.nextEditSuggestions.enabled
    • 在VS代码中打开
    • 在VS Code Insiders中开放
    - 启用 Copilot 下一次编辑建议(Copilot NES)。

  • editor.inline建议.编辑.allowCodeShifting
    • 在VS代码中打开
    • 在VS Code Insiders中开放
    - 配置 Copilot NES 是否能移动你的代码以显示建议。

  • editor.inline建议.编辑.render并排
    • 在VS代码中打开
    • 在VS Code Insiders中开放
    - 配置 Copilot NES 是否可以并排显示更大的建议,或者 Copilot NES 是否应始终在相关代码下方显示更大的建议。

    • 自动(默认):如果视口空间足够,则并排显示更大的编辑建议,否则建议会显示在相关代码下方。
    • 绝不:绝不要并排展示建议,必须在相关代码下方显示建议。
  • github.copilot.nextEditSuggestions.fixes
    • 在VS代码中打开
    • 在VS Code Insiders中开放
    - 启用基于诊断(曲线)的下一次编辑建议。比如,丢失导入。

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

下一步