Copilot 编辑
使用 Copilot 编辑启动 AI 驱动的代码编辑会话,您可以通过使用自然语言快速迭代代码更改。根据您的提示,Copilot 编辑会建议在工作区中的多个文件中进行代码更改。这些编辑直接应用于编辑器,因此您可以快速在原地查看它们,并了解周围代码的完整上下文。
Copilot 编辑非常适合迭代跨多个文件的大型更改。它将 Copilot 聊天的对话流程和内联聊天的快速反馈结合在一个体验中。在旁边进行持续的多轮聊天对话,同时受益于内联代码建议。
您可以通过将 github.copilot.chat.edits.enabled 设置设置为 true
来启用 Copilot 编辑功能。
以下视频演示了如何使用 Copilot 编辑修改基本的 Express 应用程序,并添加新页面、实现导航栏以及修改设计以包含主题切换器。
Copilot 编辑功能目前处于预览阶段。您可以在 我们的问题 中提供反馈和报告问题。
使用 Copilot 编辑
添加新功能、修复错误或重构现有代码通常是一个增量过程。使用 Copilot 编辑,您可以启动一个编辑会话,在该会话中您可以拉取多个相关文件,并通过发送聊天提示来迭代代码更改。
有不同的方法可以启动编辑会话
-
使用 ⇧⌘I (Windows Ctrl+Shift+I,Linux Ctrl+Shift+Alt+I) 键盘快捷键
-
在命令中心打开 Copilot 菜单,然后选择 **打开 Copilot 编辑**
-
在命令面板 (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 中使用 **视图:切换 Copilot 编辑** 或 **Copilot 编辑:专注于 Copilot 编辑视图** 命令
当您第一次打开 Copilot 编辑视图或启动新的编辑会话时,会显示欢迎消息。Copilot 编辑视图有一个输入字段用于输入您的提示,以及您要处理的文件列表(工作集)。
将文件添加到工作集
启动编辑会话时的第一步是添加您要使用的相关文件。这些文件也被称为编辑会话的工作集。Copilot 编辑不会在工作集之外进行更改,除非建议创建新文件。
工作集目前限制为 10 个文件。
Copilot 编辑会自动将打开的编辑器添加到工作集。如果您有多个 编辑器组,则每个组的打开编辑器都会被添加到工作集。要添加所有打开的编辑器,请选择 **添加文件...**,然后从文件快速选择中选择 **打开的编辑器**。
您可以通过选择 **添加文件...** 按钮或 图标 (⌘/ (Windows、Linux Ctrl+/)),然后在快速选择中选择文件来将文件添加到工作集。
要快速从快速选择中选择多个项目,请使用 向上 和 向下 键导航列表,使用 向右 键添加项目作为上下文,然后对其他项目重复此操作。
您还可以通过将文件或编辑器选项卡拖放到 Copilot 编辑视图来将文件添加到工作集。
为了帮助 Copilot 编辑提供更好的代码建议,您可以在提示中添加相关上下文,例如 #selection
或 #terminalSelection
。通过键入 #
符号或使用附加上下文控件 (⌘/ (Windows、Linux Ctrl+/)) 来引用上下文。
您还可以通过在提示中使用 #
作为文件建议的 IntelliSense 触发器来添加文件引用。如果 Copilot 决定更改提示中提到的文件,它们会自动添加到您的工作集。
请求代码编辑
添加完相关文件后,使用自然语言输入聊天提示,说明您要进行的具体编辑。例如,“添加一个显示电子邮件、电话和邮政地址的联系页面”,或“将所有单元测试转换为 vitest”。
请详细说明您希望 Copilot 编辑进行的更改。如果您有更大的任务,请将其分解成更小的任务,并经常迭代以引导 Copilot 朝正确的方向发展。
响应您的提示,Copilot 编辑会确定工作集中的哪些文件需要更改,并添加对更改的简短描述。请注意,Copilot 编辑会为受影响的文件打开编辑器选项卡,其中编辑开始流入。更改以内联方式显示在代码中,显示之前和之后的情况。使用 **查看更改** 控件以多文件差异视图查看所有编辑。
当 Copilot 编辑为您的项目生成编辑时,它会以视觉方式指示工作集中的哪些文件被编辑。在工作集中选择一个文件以将其打开并在编辑器中查看建议的编辑。
Copilot 编辑在您的代码中以内联方式显示生成的编辑,但不会自动将更改保存到磁盘(请注意编辑器选项卡中的脏标记)。在查看编辑时,您可能依赖于由文件更改触发的自动化任务,例如构建或测试任务。您可以保存单个文件,也可以选择工作集中的 **全部保存** (⌘S (Windows、Linux Ctrl+S)) 来将编辑保存到磁盘。
当您保存包含 AI 生成的更改的文件时,会显示一个确认对话框。在对话框中,您可以选中始终保存文件而不询问确认的选项。选中后,将不再显示全部保存控件。您可以使用 chat.editing.alwaysSaveWithGeneratedChanges 设置重置确认。
保存文件并不意味着您自动接受更改。保存文件后,您仍然可以选择接受或放弃生成的编辑。
您可以在编辑会话中继续迭代并发送更多请求。如果您对编辑不完全满意,可以提出后续问题,例如“不要包含电话号码”或“使用 jest 而不是 vitest”。或者,您可以进一步逐步编辑代码。例如,在构建 Web 应用程序时,使用一系列提示,例如“添加导航栏”、“添加主题切换器”、“将订单项以 JSON 格式存储在 MongoDB 中”。
接受或放弃编辑
Copilot Edits 会在您的代码中就地显示生成的编辑,并为您提供代码审查流程,您可以在其中接受或放弃每个 AI 生成的编辑。当您接受 AI 生成的编辑时,文件更改将在工作集中确认并保存到磁盘。如果您放弃编辑,则文件将恢复到之前接受的状态。
要接受或放弃 Copilot Edits 生成的编辑
-
在工作集标题栏中选择**接受**(⌘Enter(Windows,Linux Ctrl+Enter))或**放弃**(⌘Backspace(Windows,Linux Ctrl+Backspace)),以接受或放弃工作集中的所有编辑
-
选择工作集中单个文件上的**接受**或**放弃**图标,将操作限制到该特定文件
在查看文件的编辑时,可以使用向上(⇧⌥F5(Windows,Linux Shift+Alt+F5))和向下(⌥F5(Windows,Linux Alt+F5))控件快速导航到文件中的上一个或下一个编辑。然后,您可以使用**接受聊天编辑**和**拒绝聊天编辑**控件对文件中的单个编辑进行操作。
在向代码发送编辑请求时,您可能希望回滚其中一些更改,例如因为您想要使用其他实现策略。
您可以在 Copilot Edits 视图标题栏中使用**撤消上一步编辑**控件来恢复上一步编辑并返回到发送上一步请求之前的状态。在执行上一步编辑的撤消操作后,您可以使用 Copilot Edits 视图标题栏中的**重做上一步编辑**控件重新执行这些编辑。
您也可以在将鼠标悬停在 Copilot Edits 视图中的请求上时使用**撤消编辑(删除)**控件,以恢复从该请求开始的所有编辑。
有时,Copilot 在生成编辑时会走错路。发生这种情况后,很难通过添加对话来让它接受另一种方法。在这种情况下,使用**撤消上一步编辑**,直到您同意 Copilot 的响应。然后从那里重新开始,并提供更精确的提示。
向 Copilot 编辑发送聊天请求
Copilot Chat 非常适合询问有关项目或一般技术主题的问题,以及探索想法和代码建议。当您准备过渡到 Copilot Edits 并应用代码更改时,将聊天对话中的附加上下文转移到 Copilot Edits 可能很有用。
在聊天视图中,您可以输入聊天提示并将其直接发送到 Copilot Edits,同时保留附加的上下文。选择**发送**按钮选项菜单,然后选择**发送到 Copilot Edits**选项(或按⌥⌘Enter(Windows,Linux Ctrl+Alt+Enter)))。
请注意,Copilot Edits 视图将打开,并且您的提示和附加上下文将从聊天视图转移到 Copilot Edits 视图并立即提交。
设置
以下列表包含与 Copilot Edits 相关的设置。您可以通过设置编辑器(⌘,(Windows,Linux Ctrl+,))配置设置。
- github.copilot.chat.edits.enabled - 启用或禁用 Copilot Edits
- chat.editing.confirmEditRequestRemoval - 在撤消编辑之前询问确认(默认值:
true
) - chat.editing.confirmEditRequestRetry - 在执行上一步编辑的重做操作之前询问确认(默认值:
true
) - chat.editing.alwaysSaveWithGeneratedChanges - 自动将 Copilot Edits 生成的更改保存到磁盘(默认值:
false
)
键盘快捷键
以下列表包含与 Copilot Edits 相关的默认键盘快捷键。您可以使用键盘快捷键编辑器(⌘K ⌘S(Windows,Linux Ctrl+K Ctrl+S))修改任何默认键盘快捷键。
- ⇧⌘I(Windows Ctrl+Shift+I,Linux Ctrl+Shift+Alt+I)) - 打开 Copilot Edits 视图
- ⌥⌘Enter(Windows,Linux Ctrl+Alt+Enter)) - 将聊天视图中的提示发送到 Copilot Edits
- ⌘/(Windows,Linux Ctrl+/)) - 将上下文附加到您的提示
- ⌘S(Windows,Linux Ctrl+S)) - 将所有已编辑的文件保存到磁盘
- ⌘Enter(Windows,Linux Ctrl+Enter)) - 接受所有编辑
- ⌘Backspace(Windows,Linux Ctrl+Backspace)) - 放弃所有编辑
- ⇧⌥F5(Windows,Linux Shift+Alt+F5)) - 导航到文件中的上一步编辑
- ⌥F5(Windows,Linux Alt+F5)) - 导航到文件中的下一步编辑
如果您想更改特定于 Copilot Edits 视图的操作的键盘快捷键,则需要在when
子句中包含以下条件:chatLocation == 'editing-session'
。
限制
- 目前尚不支持多个同时编辑会话。
- 目前尚不支持在编辑会话中使用
@workspace /new
来搭建新项目。目前,请使用 Copilot Chat 进行初始搭建。 - 虽然
#codebase
非常适合查找与您的查询相关的上下文,但后续生成的编辑质量差异很大。明确将文件添加到工作集中会生成更好的结果。 - 尚不支持对 Jupyter 笔记本、其他自定义文本格式和二进制文件格式的支持,或者这些格式未经测试。
- 工作集目前限制为 10 个文件。
- Copilot Edits 每 10 分钟限制为 7 个编辑请求。
常见问题解答
Copilot Edits 与 Copilot Chat 有什么区别?
两者Copilot Chat和 Copilot Edits 都使用对话界面,您可以在其中使用自然语言提示来获取 AI 支持的建议。Copilot Edits 和 Copilot Chat 之间存在一些明显的区别。
Copilot Edits 将您置于**代码编辑**的上下文中,您可以在其中启动编辑会话并使用提示对代码库进行更改。Copilot Edits 可以直接在代码库中的**多个文件**上生成和应用代码更改。您可以在代码的上下文中立即**预览生成的编辑**。
聊天视图为您提供了一个更**通用**的聊天界面,用于询问有关代码或一般技术主题的问题。Copilot 也可以在聊天对话中提供代码建议并生成代码块。您需要将每个代码块**手动应用**到项目中的不同文件中,以评估其有效性。
内联聊天通过在编辑器中提供聊天界面来让您保持编码流程,您可以在其中直接在代码的上下文中**预览生成的代码建议**。内联聊天的范围仅限于启动它的编辑器,因此它只能提供对**单个文件**的代码建议。您也可以使用内联聊天来询问通用问题。
Copilot Edits 还为您提供了一个**代码审查流程**,您可以在其中轻松地查看生成的编辑,并决定是否接受或放弃它们。Copilot Chat 没有此代码审查机制。此外,您可以撤消过去的编辑,并**将更改回滚**到之前的接受状态。
下表显示了每种体验功能的比较。
功能 | Copilot 编辑 | 聊天视图 | 内联聊天 | 快速聊天 |
---|---|---|---|---|
多文件编辑 | ✅ | ✅* | ✅* | |
预览代码编辑 | ✅ | ✅ | ||
代码审查流程 | ✅ | |||
回滚更改 | ✅ | |||
附加上下文 | ✅ | ✅ | ✅ | ✅ |
使用参与者和命令 | ✅ | ✅ | ||
生成 shell 命令 | ✅ | ✅ | ||
通用聊天 | ✅ | ✅ | ✅ |
* 代码块包含在聊天对话中,需要手动应用到正确的文件中
我可以更改 Copilot 编辑视图的位置吗?
您可以将 Copilot 编辑视图拖放到活动栏中,以将其显示在主侧边栏中。您也可以将其移动到辅助侧边栏。了解有关 自定义布局 在 VS Code 中的更多信息。