在 VS Code 中使用编辑模式
使用 Visual Studio Code 中的聊天编辑模式,您可以使用自然语言在项目中的多个文件中进行编辑。编辑直接应用于编辑器中,您可以在其中原地查看它们,并附带周围代码的完整上下文。
通过选择特定文件并提供清晰的上下文,您可以引导编辑模式进行有针对性的代码更改和改进。
如果您还没有 Copilot 订阅,可以通过注册 Copilot 免费计划 免费使用 Copilot,每月可获得一定数量的补全和聊天交互。
先决条件
- 安装最新版本的 Visual Studio Code
- 访问 Copilot
使用编辑模式
在编辑模式下,您可以选择要编辑的文件并提供相关上下文和提示。Copilot 将根据您的提示建议代码编辑。
-
或者,打开聊天视图 (⌃⌘I (Windows, Linux Ctrl+Alt+I)) 并在聊天模式选择器中选择 编辑。
-
选择 添加上下文 以提供与您的提示相关的上下文。
为确保 Copilot 拥有进行更改所需的正确上下文,请将工作区中的文件或文件夹等上下文添加到您的提示中。了解更多关于 向 Copilot 提示添加上下文 的信息。
活动编辑器会自动作为上下文添加。添加文件时,可能会建议其他相关文件。
提示通过在您的提示中添加
#codebase
,让 Copilot 自动找到正确的文件。请务必启用 github.copilot.chat.codesearch.enabled (预览) 设置以获得最佳结果。 -
在聊天输入字段中输入您的提示,以指示您要进行的编辑类型。
尝试使用以下一些示例问题开始
重构 calculate 函数,使其更高效。
为应用添加登录表单。使用 OAuth 进行身份验证。
为 calculator 类添加单元测试。使用 vitest 作为测试框架。
-
请注意,Copilot 会将建议的编辑直接流式传输到编辑器中。
聊天视图以粗体文本显示已编辑文件列表。编辑器覆盖控件使您能够在建议的编辑之间导航。
-
查看建议的编辑并接受或放弃建议的编辑。
-
继续迭代代码更改以优化编辑或实现附加功能。
接受或放弃编辑
Copilot 在聊天视图的更改文件列表中列出已编辑的文件。带有待处理编辑的文件在资源管理器视图和编辑器选项卡中也有指示器。
使用编辑器覆盖控件,您可以使用 上 () 和 下 () 控件在建议的编辑之间导航。使用 保留 或 撤消 按钮来接受或拒绝给定文件的编辑。
使用编辑器或聊天视图中的 保留 或 撤消 控件来接受或拒绝单个或所有建议的编辑。
通过 chat.editing.autoAcceptDelay 设置,您可以配置一个延迟时间,在该延迟后,建议的编辑将自动接受。将鼠标悬停在编辑器覆盖控件上可取消自动接受倒计时。
关闭 VS Code 时,会记住待处理编辑的状态。重新打开 VS Code 时,待处理编辑将恢复,您仍然可以接受或放弃这些编辑。
撤销编辑
当您发送请求对代码进行编辑时,您可能希望回滚其中的一些更改,例如,因为您想使用另一种实现策略,或者因为 Copilot 在生成编辑时走错了方向。
您可以使用聊天视图标题栏中的 撤消上次编辑 控件来撤销上次编辑并返回到发送上次请求之前的状态。执行撤消上次编辑后,您可以使用聊天视图标题栏中的 重做上次编辑 控件再次重做这些编辑。
您还可以在 Copilot Edits 视图中将鼠标悬停在请求上时使用 撤消编辑(删除) 控件(x 图标)来撤销从该请求开始进行的所有编辑。
设置
以下列表包含与编辑模式相关的设置。您可以通过设置编辑器 (⌘, (Windows, Linux Ctrl+,)) 配置设置。
- chat.editing.confirmEditRequestRemoval - 在撤销编辑前要求确认(默认值:
true
)。 - chat.editing.confirmEditRequestRetry - 在重做上次编辑前要求确认(默认值:
true
)。 - chat.editing.autoAcceptDelay - 配置一个延迟时间,在该延迟后,建议的编辑将自动接受;使用零禁用自动接受(默认值:0)。
- github.copilot.chat.codesearch.enabled (预览) - 当您在提示中添加
#codebase
时,让 Copilot 找到正确的文件,类似于代理模式的工作方式(默认值:false
)。 - chat.implicitContext.enabled (实验性) - 配置活动编辑器是否应自动作为上下文添加到聊天提示中。
- github.copilot.chat.edits.suggestRelatedFilesFromGitHistory (实验性) - 在 Copilot Edits 中从 Git 历史记录中建议相关文件(默认值:
false
)。
键盘快捷方式
以下列表包含与 Copilot Edits 相关的默认键盘快捷方式。您可以使用键盘快捷方式编辑器 (⌘K ⌘S (Windows, Linux Ctrl+K Ctrl+S)) 修改任何默认键盘快捷方式。
- - 打开 Copilot Edits 视图
- - 将提示从聊天视图发送到 Copilot Edits
- ⌘/ (Windows, Linux Ctrl+/) - 向您的提示附加上下文
- - 将所有已编辑的文件保存到磁盘
- ⌘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
非常擅长为您的查询找到相关上下文,但后续生成的编辑质量差异很大。尝试使用 github.copilot.chat.codesearch.enabled (预览) 设置,以获得改进的、更像代理的体验来查找文件,或者明确将文件添加到您的提示中以创建更好的结果。 - 缺少或未测试对自定义文本格式和二进制文件格式的支持。
常见问题
我可以更改 Copilot Edits 视图的位置吗?
您可以将 Copilot Edits 视图拖放到活动栏中,以使其在主侧边栏中显示。您也可以将其移动到辅助侧边栏。了解更多关于 VS Code 中的 自定义布局 信息。
为什么要使用编辑模式而不是代理模式?
考虑以下标准在编辑模式和代理模式之间进行选择
- 编辑范围:如果您的请求仅涉及代码编辑并且您知道更改的精确范围,则可以使用编辑模式。
- 持续时间:代理模式涉及多个步骤来处理请求,因此获取响应可能需要更长时间。例如,确定要编辑的相关上下文和文件,确定行动计划等等。
- 非确定性:代理模式评估生成的编辑结果,并可能迭代多次。因此,代理模式可能比编辑模式更具非确定性。
- 请求配额:在代理模式下,根据任务的复杂性,一个提示可能会导致向后端发送许多请求。