– 代理会话日,2月19日

2025年2月 (版本 1.98)

更新 1.98.1:此更新修复了这些 问题

更新 1.98.2:此更新修复了这些 问题

下载:Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap


欢迎使用 Visual Studio Code 2025年2月版。此版本包含了许多我们希望您会喜欢的更新,其中的一些关键亮点包括:

如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新Insiders:想尽快尝试新功能吗?您可以下载每晚Insiders版本并尽快尝试最新更新。

GitHub Copilot

Copilot 功能可能会经历不同的早期访问阶段,通常通过设置进行启用和配置。

阶段 描述
实验性 (Experimental) 该功能仍在开发中,尚未准备好供一般使用。
查看 实验性功能 (@tag:experimental)。
预览版 (Preview) 该功能仍在完善中,但已可以开始使用。欢迎提供反馈。
查看 预览功能 (@tag:preview)。
稳定版 该功能已准备好供一般使用。

Copilot 编辑

代理模式改进(实验性)

上个月,我们在 VS Code Insiders 的 Copilot Edits 中引入了“代理模式 (agent mode)”。在代理模式下,Copilot 可以自动在您的工作区中搜索相关上下文、编辑文件、检查错误,并运行终端命令(经您许可后)以端到端地完成任务。

注意:代理模式目前已在 VS Code Insiders 中可用,我们刚刚开始在 VS Code 稳定版 中逐步推出。一旦为您启用了代理模式,您将在 Copilot Edits 视图中看到一个模式下拉菜单——只需选择 Agent 即可。

本月我们对工具使用的用户体验进行了多项改进:

  • 终端命令现在内联显示,方便您跟踪已运行的命令。
  • 您可以在运行之前在聊天响应中编辑建议的终端命令。
  • 使用 ⌘Enter(Windows, Linux 为 Ctrl+Enter 快捷键确认终端命令。

代理模式会自主在您的代码库中搜索相关上下文。展开消息即可查看具体执行了哪些搜索及其结果。

Screenshot that shows the expandable list of search results in Copilot Edits.

我们还对代理模式的提示词和行为进行了各种改进:

  • 聊天中的撤销和重做操作现在会撤销或重做聊天响应中所做的最后一次文件编辑。这对于代理模式非常有用,因为您现在可以撤销模型采取的某些步骤,而无需回滚整个聊天响应。
  • 代理模式现在可以自动或根据指示运行您的构建 任务 (tasks)。如果您发现模型在不该运行任务时运行了任务,可以通过
    github.copilot.chat.agent.runTasks
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
    设置来禁用此功能。

了解更多关于 Copilot Edits 代理模式 的信息,或阅读 代理模式发布博客文章

注意:如果您是 Copilot Business 或 Enterprise 用户,您的组织管理员必须选择加入 (opt in) 使用 Copilot "Editor Preview Features",代理模式才可用。

Copilot Edits 对笔记本的支持(预览)

我们在 VS Code Insiders 中作为预览功能引入了 Copilot Edits 对笔记本的支持。您现在可以使用 Copilot 编辑笔记本文件,享受与编辑代码文件同样直观的体验。从头开始创建新笔记本、修改多个单元格的内容、插入和删除单元格以及更改单元格类型。此预览功能为处理数据科学或文档笔记本提供了无缝的工作流。

注意:此功能目前仅在安装了 GitHub Copilot Chat 预发布版的 VS Code Insiders 中可用。我们将在未来的版本中将其引入 VS Code 稳定版之前,继续改进此体验。

优化的编辑器集成

我们打磨了 Copilot Edits 与代码和笔记本编辑器的集成:

  • 在应用更改时不再滚动。视口保持在原位,使您更容易专注于发生的变化。
  • 将编辑审阅操作从“接受 (Accept)”重命名为“保留 (Keep)”,从“丢弃 (Discard)”重命名为“撤销 (Undo)”,以更好地反映实际发生的动作。Copilot Edits 的更改是实时的,它们在生成时就会被应用和保存,用户选择保留或撤销它们。
  • 在保留或撤销一个文件后,会自动显示下一个文件。

视频演示了编辑是如何在发生时应用并保存的。实时预览会更新,用户决定“保留”更改。撤销和进一步调整仍然是可能的。

刷新的 UI

为了准备将 Copilot Edits 与 Copilot Chat 统一,我们对 Copilot Edits 进行了视觉升级。已添加但尚未发送的文件现在渲染为常规聊天附件。只有经 AI 修改过的文件才会添加到已更改文件列表中,该列表位于聊天输入框上方。

使用

chat.renderRelatedFiles
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
通过设置,您可以启用获取相关文件的建议。相关文件建议会渲染在聊天附件下方。

Screenshot that shows the updated Copilot Edits attachments and changed files user experience.

移除了 Copilot Edits 限制

以前,您在 Copilot Edits 的提示词中最多只能添加 10 个文件。在此版本中,我们移除了这一限制。此外,我们也移除了客户端每 10 分钟 14 次交互的速率限制。

请注意,服务器端的使用速率限制仍然适用。

自定义指令正式发布 (GA)

设置

github.copilot.chat.codeGeneration.useInstructionFiles
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

自定义指令使您能够量身定制 GitHub Copilot,使其提供符合您及团队工作方式的聊天响应和代码建议。在您工作区的 .github/copilot-instructions.md 文件中以 Markdown 格式描述您的具体要求。

在本次里程碑中,我们让使用 .github/copilot-instructions.md 的自定义指令正式发布。请确保

github.copilot.chat.codeGeneration.useInstructionFiles
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
VS Code 设置已启用,Copilot 随后将在生成响应时使用这些指令。

了解更多关于 Copilot 自定义指令 的信息。

更流畅的聊天身份验证流程

如果您的源代码托管在 GitHub 存储库中,您将能够利用多项功能,包括高级代码搜索、@github 聊天参与者等!

然而,对于私有 GitHub 存储库,VS Code 需要获得与您在 GitHub 上的存储库交互的权限。一段时间以来,这是通过我们通常的 VS Code 身份验证流程呈现的,即当您调用某些功能(例如向 @workspace@github 提问,或使用 #codebase 工具)时会显示一个模态对话框。

为了使这种体验更顺畅,我们在聊天中引入了这种确认方式:

Screenshot that shows the authentication confirmation dialog in Chat, showing the three options to continue.

它不仅不像模态对话框那样突兀,而且还具有新功能:

  1. 授予 (Grant): 您将像以前一样通过常规身份验证流程(通过模态框)。
  2. 暂时不 (Not Now): VS Code 会记住您的选择,在您的下一个 VS Code 窗口会话之前不会再打扰您。唯一的例外是如果该功能需要此额外权限才能运行,例如 @github
  3. 不再询问 (Never Ask Again): VS Code 会记住您的选择并通过
    github.copilot.advanced.authPermissions
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
    设置将其持久化。任何需要此额外权限的功能都将失败。

需要注意的是,此确认并不代表确认或拒绝 Copilot(服务)访问您的存储库。这仅是 VS Code 的 Copilot 体验进行身份验证的方式。要配置 Copilot 可以访问的内容,请阅读关于内容排除的文档。

Copilot Chat 中更高级的代码库搜索

设置

github.copilot.chat.codesearch.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

当您在 Copilot Chat 查询中添加 #codebase 时,Copilot 会帮助您在工作区中寻找与聊天提示相关的代码。#codebase 现在可以运行文本搜索和文件搜索等工具,以从您的工作区引入额外的上下文。

设置

github.copilot.chat.codesearch.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
来启用此行为。完整的工具列表包括:

  • 基于嵌入 (Embeddings) 的语义搜索
  • 文本搜索
  • 文件搜索
  • Git 已修改文件
  • 项目结构
  • 读取文件
  • 读取目录
  • 工作区符号搜索

将“问题 (Problems)”作为聊天上下文添加

为了帮助修复代码或工作区中的其他问题,您现在可以将“问题”面板中的问题添加到聊天中,作为提示词的上下文。

您可以将“问题”面板中的项目拖动到聊天视图中,在提示词中输入 #problems,或者选择回形针 📎 按钮。您可以添加特定的问题、文件中的所有问题或代码库中的所有文件。

将文件夹作为上下文添加

以前,您可以通过从资源管理器视图拖放来将文件夹作为上下文添加。现在,您还可以通过选择回形针 📎 图标或在聊天提示词中输入 #folder: 后跟文件夹名称来添加文件夹。

下一次编辑建议的折叠模式(预览)

设置:

  • github.copilot.nextEditSuggestions.enabled
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
  • editor.inlineSuggest.edits.showCollapsed
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开

我们为 NES (Next Edit Suggestions) 添加了折叠模式。启用此模式后,编辑器左边距仅显示 NES 建议指示器。只有当您通过按下 Tab 导航到它时,才会显示代码建议本身。连续的建议会立即显示,直到某个建议不被接受。

折叠模式默认禁用,可以通过配置

editor.inlineSuggest.edits.showCollapsed
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
来启用,或者您可以在 NES 侧边栏指示器菜单中启用或禁用它。

Screenshot that shows the Next Edit Suggestions context menu in the editor left margin, highlighting the Show Collapsed option.

更改补全模型

您已经可以更改 Copilot Chat 和 Copilot Edits 的语言模型,现在您也可以更改内联建议 (inline suggestions) 的模型了。

或者,您可以通过命令面板中的 Change Completions Model 命令或标题栏 Copilot 菜单中的 Configure Code Completions 项目来更改用于代码补全的模型。

注意: 可选模型列表可能会随时间而变化。如果您是 Copilot Business 或 Enterprise 用户,您的管理员需要通过在 GitHub.com 的 Copilot 策略设置 中选择加入 Editor Preview Features 来为您的组织启用某些模型。

模型可用性

在此版本中,我们为使用 Copilot 时增加了更多模型选择。以下模型现在可在 Visual Studio Code 和 github.com 聊天的模型选择器中使用:

  • GPT 4.5 (预览):OpenAI 的最新模型 GPT-4.5 现在通过 GitHub Copilot Chat 向 Copilot Enterprise 用户开放。GPT-4.5 是一款大型语言模型,在直觉、写作风格和广泛知识方面具有先进能力。在 GitHub 博客文章 中了解更多关于 GPT-4.5 模型的可用性信息。

  • Claude 3.7 Sonnet (预览):Claude 3.7 Sonnet 现在对所有付费 Copilot 计划的客户开放。这款新的 Sonnet 模型支持 Copilot 中的思考 (thinking) 和非思考模式。在初步测试中,我们看到在代理 (agentic) 场景中有了特别显著的改进。在 GitHub 博客文章 中了解更多关于 Claude 3.7 Sonnet 模型的可用性信息。

Copilot Vision (预览)

我们在此版本的 Copilot Chat 中快速推出了端到端视觉支持。这允许您在聊天提示中附加图片并与之交互。例如,如果您在调试时遇到错误,可以附加一张 VS Code 的截图,并请求 Copilot 帮助您解决问题。您也可以用它来附加一些 UI 模型图,让 Copilot 提供一些 HTML 和 CSS 来实现该模型。

Animation that shows an attached image in a Copilot Chat prompt. Hovering over the image shows a preview of it.

您可以通过多种方式附加图片:

  • 从操作系统或资源管理器视图中拖放图片
  • 从剪贴板粘贴图片
  • 附加 VS Code 窗口截图(选择 回形针 📎 按钮 > Screenshot Window

如果所选模型目前不具备处理该文件类型的能力,系统会显示警告。目前唯一支持的模型是 GPT 4o,但对 Claude 3.5 SonnetGemini 2.0 Flash 图片附件的支持也将很快推出。目前支持的图片类型包括 JPEG/JPG, PNG, GIF, 和 WEBP

Copilot 状态概览(实验性)

设置

chat.experimental.statusIndicator.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

我们正在尝试一种新的集中式 Copilot 状态概览,它可以快速查看您的 Copilot 状态和关键编辑器设置:

  • 如果您是 Copilot 免费版用户,将显示配额信息
  • 编辑器相关设置,如代码补全
  • 使用其他 Copilot 功能的实用键盘快捷键

该 Copilot 状态概览可通过状态栏中的 Copilot 图标访问。

Screenshot that shows the Copilot status overview in the Status Bar.

通过以下设置启用 Copilot 状态概览:

chat.experimental.statusIndicator.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置来指定 VS Code 应该查找技能的自定义路径。

TypeScript 的内联补全上下文(实验性)

设置

chat.languageContext.typescript.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

我们正在试验为 TypeScript 文件的内联补全和 /fix 命令提供增强上下文。该实验目前仅限于 Insider 版本,并可通过以下设置启用:

chat.languageContext.typescript.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置来指定 VS Code 应该查找技能的自定义路径。

拉取请求 (PR) 标题和描述的自定义指令

您可以通过设置提供用于生成拉取请求标题和描述的自定义指令:

github.copilot.chat.pullRequestDescriptionGeneration.instructions
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
。您可以将该设置指向工作区中的一个文件,也可以在设置中直接提供内联指令。获取更多关于在 VS Code 中自定义 Copilot 的详细信息。

以下示例显示了如何在设置中提供内联自定义指令。

{
  "github.copilot.chat.pullRequestDescriptionGeneration.instructions": [
    {
      "text": "Prefix every PR title with an emoji."
    }
  ]
}

生成标题和描述需要安装 GitHub Pull Requests 扩展。

辅助功能

Copilot Edits 可访问性

我们大幅提升了 Copilot Edits 的可访问性。

  • 现在针对有修改的文件和已更改的区域(插入、修改和删除)增加了音频信号。
  • 可访问的差异查看器现在可用于已修改的文件。就像在差异编辑器中一样,选择 F7 来启用它。

activeEditorState 窗口标题变量

我们新增了一个

window.title
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
变量 activeEditorState,向屏幕阅读器用户指示编辑器信息,例如修改状态、问题数量以及文件是否有待处理的 Copilot 编辑。在屏幕阅读器优化模式下,此变量默认会被附加,并可以通过
accessibility.windowTitleOptimized
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
禁用。

工作台

Linux 上的自定义标题栏

自定义标题栏现在 Linux 上默认启用。自定义标题栏让您可以访问布局控件、Copilot 菜单等。

Screenshot that shows the custom VS Code title bar on Linux.

您可以随时通过自定义标题栏右键菜单或配置以下设置来恢复到原生标题栏装饰:

window.titleBarStyle
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
native

Screenshot that shows the content menu option to disable the custom title bar on Linux.

我们很高兴能继续收到关于此体验的反馈,并且已经在根据现有反馈改进未来的里程碑。

辅助侧边栏视图使用标签

我们决定更改辅助侧边栏 (Secondary Side Bar) 中视图的外观,以显示标签而不是图标,类似于面板区域的显示方式。这使得区分不同的视图变得更容易,例如 Copilot EditsCopilot Chat 视图。您可以随时通过配置以下设置切换回显示图标:

workbench.secondarySideBar.showLabels
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
.

Screenshot that shows Secondary Side Bar with labels instead of icons.

新的设置编辑器键匹配算法(预览)

设置

workbench.settings.useWeightedKeySearch
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

我们添加了一种新的设置编辑器搜索算法,该算法会优先处理更相关的键匹配。该搜索算法尝试以比以前更多的方式匹配设置 ID 和标签,但它也会对结果进行更多过滤,以便只显示最佳匹配类型。

您可以通过启用以下预览功能来尝试:

workbench.settings.useWeightedKeySearch
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置来指定 VS Code 应该查找技能的自定义路径。

主题:浅粉色(在 vscode.dev 上预览)

在简单文件选择器中隐藏点文件 (Dot Files) 的选项

当使用 简单文件选择器 时(无论是在连接到远程开发时,还是在使用

files.simpleDialog.enable
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
时),您现在可以使用 Show/Hide dot files 按钮来隐藏点文件。

Screenshot that shows the simple file picker, highlighting the button to show or hide dot files.

编辑器

预览引用 (Peek references) 拖放支持

预览 (Peek) 视图现在支持拖放。调用 Peek ReferencesPeek Implementation 或任何其他预览命令,然后从其树形结构中拖动条目以将它们作为单独的编辑器打开。

主题:GitHub Light Colorblind (Beta) (在 vscode.dev 上预览)

出现突出显示延迟 (Occurrences highlight delay)

编辑器内出现突出显示的延迟现在默认设置为 0。这带来了整体响应更快的编辑器感受。您仍然可以通过以下设置控制延迟:

editor.occurrencesHighlightDelay
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置来指定 VS Code 应该查找技能的自定义路径。

源代码管理

更新的视图标题

当我们将 Source Control Graph 视图添加到源码控制 (Source Control) 视图中时,它凸显了源码控制视图中部分标题的重复:“Source Control Repositories”、“Source Control”和“Source Control Graph”。在这个里程碑中,我们重新审视了这些视图的标题,使它们更短且不再重复视图标题:“Repositories”、“Changes”和“Graph”。

丢弃未跟踪更改的改进

设置

git.discardUntrackedChangesToTrash
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

多年来,我们收到了多份关于数据丢失的报告,因为丢弃一个未跟踪的文件会永久删除该文件,尽管 VS Code 会显示一个明确说明文件将被永久删除的模态对话框。

从这个里程碑开始,丢弃未跟踪的文件将在可能的情况下将文件移至回收站,以便文件可以轻松恢复。您可以使用以下设置禁用此功能:

git.discardUntrackedChangesToTrash
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置来指定 VS Code 应该查找技能的自定义路径。

Screenshot of the modal dialog shown when discarding an untracked file.

诊断提交挂钩 (Diagnostics commit hook)(实验性)

设置:

  • git.diagnosticsCommitHook.Enabled
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开
  • git.diagnosticsCommitHook.Sources
    • 在 VS Code 中打开
    • 在 VS Code Insiders 中打开

在本次里程碑中,我们引入了一个新的提交挂钩,如果更改的文件有任何未解决的诊断(例如代码错误),它会向您提示。这目前是一个实验性功能,可以使用以下设置启用:

git.diagnosticsCommitHook.Enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置来指定 VS Code 应该查找技能的自定义路径。

默认情况下,提交挂钩会对任何错误级别的诊断进行提示,但诊断源和级别可以使用以下设置自定义:

git.diagnosticsCommitHook.Sources
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。请尝试一下并向我们提供您的反馈。

Screenshot of the modal dialog shown when there are unresolved diagnostics for the changed files.

Notebook

内联笔记本差异视图(实验性)

设置

notebook.diff.experimental.toggleInline
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

您现在可以启用笔记本的内联差异视图。此功能使您能够在单个内联视图中查看笔记本单元格内的更改,而不是传统的并排对比。

通过将以下设置设为 true 来启用此功能:

notebook.diff.experimental.toggleInline
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
。然后,您可以使用右上角的编辑器菜单将差异视图切换为内联模式。

笔记本内联值悬停

笔记本内联值现在的装饰会被截断以适应视口宽度,并具有丰富的悬停效果来显示完整值,同时保持空格格式。这保持了像 dataframes 这样的变量的形状,使值更容易一目了然。

Screenshot that shows the cursor hovering above a dataframe object's inline decoration. A rich value hover is shown.

终端 IntelliSense(预览)

设置

terminal.integrated.suggest.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

我们通过添加补全规范(例如 git)、改进命令行解析以获得更好的建议,以及增强文件和文件夹补全,显著改进了 bash、zsh、fish 和 PowerShell 的终端 shell 补全。通过以下设置启用此功能:

terminal.integrated.suggest.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
.

增强的 Fig 补全支持

我们利用 Fig 补全规范 来为特定的 CLI 提供智能补全。以前我们只有少量的这类规范,但在本次迭代中,我们将以下 CLI 添加到了 VS Code 自带的列表中:

  • 基础工具:cat, chmod, chown, cp, curl, df, du, echo, find, grep, head, less, ls, mkdir, more, mv, pwd, rm, rmdir, tail, top, touch, uname
  • 进程工具:kill, killall, ps
  • 包管理器:apt, brew
  • Node.js 生态:node, npm, npx, nvm, pnpm, yarn
  • SCM、语言、编辑器:git, nano, python, python3, vim
  • 网络:scp, ssh, wget

除了新的规范外,我们现在还支持 生成器 (generators),它在请求补全时通过运行命令动态生成补全。一个实际应用的例子是显示 git checkout 的所有分支:

该截图显示了 "git checkout tyriar/xterm" 的补全,显示了多个结果,包括与查询不完全匹配的模糊结果。 主题:Sapphire (在 vscode.dev 上预览)

在后台,这会运行 git --no-optional-locks branch -a --no-color --sort=-committerdate 来获取分支列表,然后将其处理成补全建议。类似的方法也用于获取标签 (tags)。

可配置的快速建议 (Quick Suggestions)

设置

terminal.integrated.suggest.quickSuggestions
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

与编辑器类似,快速建议是指在输入任何内容时自动显示 IntelliSense,而触发字符则是指在输入某些字符(如 \-)时显示。新的

terminal.integrated.suggest.quickSuggestions
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置允许精确控制何时应呈现快速建议。

默认值启用了命令和参数的快速建议,而路径建议现在默认禁用(因为我们听说路径建议往往不适用,可能会产生干扰)。以下是默认设置:

"terminal.integrated.suggest.quickSuggestions": {
  "commands": "on",
  "arguments": "on",
  "unknown": "off"
}

内联建议检测

设置

terminal.integrated.suggest.inlineSuggestion
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

到目前为止,内联建议检测面临的一个问题是由于来自不同来源的建议相互竞争而引入的混淆。具体来说,是在 shell 中输入时经常出现的内联建议:

Screenshot that shows fish shell showing suggestions, such as previous git commit commands when typing a prefix.

这些建议实际上是 shell 级的功能(fish/zsh 中的 auto suggestions,pwsh 中的 predictions 等),用户可能意识不到这一点,尤其是当它们与 IntelliSense 并排呈现时。

IntelliSense 功能要求我们检测这种内联建议,以前我们使用的是一个幼稚的实现,仅检查文本是否具有 faint (弱化)italics (斜体) SGR 属性。事实证明这是不够的,不仅是因为用户可能会自定义样式,还因为 fish shell 默认不使用这两种样式。我们现在通过分析命令行上下文和光标位置来检测大多数情况。

基于这一改进后的检测,内联建议现在作为带有星号图标的首选项呈现,既与编辑器的行为更加一致,也更清楚地说明了在这种情况下按下 kstyle(Tab) 会发生什么。

Screenshot that shows when an inline suggestion shows up, it will be detected and put beside a star icon at the top of IntelliSense.

默认是始终将此建议显示为首选建议,但可以通过以下设置配置:

terminal.integrated.suggest.inlineSuggestion
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
.

详细的命令补全

bash 和 zsh 内置命令以及 PowerShell 命令的补全现在更加详细,提供了可用参数的细节。这些信息源自 shell 的文档或帮助命令。

对于 bash,使用 help <command> 获取基本描述

Screenshot that shows the history completion in bash, showing usage information and description.

对于 zsh,使用 man zshbuiltins 获取详细描述

Screenshot that shows completions in zsh, displaying detailed information from the manpage.

对于 PowerShell,补全中会显示 Get-Command 的更多属性

Screenshot that shows the completion for Get-ChildItem, showing the module Microsoft.PowerShell.Management and its version.

Screenshot that shows the completion for ConvertTo-Json, showing the signature of the command.

改进的排序

命令补全现在具有改进的排序,具体如下:

  • 细节更丰富的补全通常显示在细节较少的补全之上
  • 内置命令优先于来自 $PATH 的路径

Screenshot that shows the more useful alias and autoload commands showing before others in zsh.

对于路径,做了以下改进:

  • _ 开头的路径会受到降权惩罚,因为这通常表示它们是特殊的且通常不应被频繁更改(例如 __init__.py)。
  • 排序时忽略标点符号,因此以 . 开头的文件将与其他文件混合在一起。

Screenshot that shows init.py will show below other files, while a .build dir will show immediately above a build file.

CDPATH 支持

设置

terminal.integrated.suggest.cdPath
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开

$CDPATH 环境变量是一个常见的 shell 功能,它包含一个冒号分隔的路径列表(类似于 $PATH),允许无论当前工作目录为何都像相对路径一样导航到这些路径。Fish 实际上在 cd 的 tab 补全中显示了 CDPATH 条目:

Screenshot that shows tab completion in fish, displaying entries from CDPATH.

我们现在支持在使用 cd 时将 $CDPATH 条目显示为补全建议:

Screenshot that shows CDPATH entries now show up in IntelliSense.

此功能在 Windows(使用 ; 分隔符)上也能工作,并且不需要 shell 原生支持该功能,因为默认使用的是绝对路径。

Screenshot that shows a CDPATH containing 2 paths separated by a semi-colon, including all sub-directories even on PowerShell which does not support CDPATH natively.

通过此项配置:

terminal.integrated.suggest.cdPath
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
.

绝对路径

现在支持绝对路径。

Screenshot that shows "cd c:\Github\mi" will show results for all absolute folders matching that term.

Screenshot that shows cd to absolute paths also works with Unix-style paths.

别名支持

bash、zsh 和 fish 的命令别名 (alias) 现在也能被检测到,并具有一个新的独特图标:

Screenshot that shows the alias c->code-insiders will now be detected and show with the command icon with a little arrow in the corner.

区分选项和标志

CLI 选项(带有值)和标志(不带值)现在在 UI 中通过不同的图标进行区分:

Screenshot that shows flags like --help will show a flag icon, options like --diff will show a different icon.

任务

任务重新运行操作

我们为终端新增了一个 重新运行 (rerun) 任务操作,快捷键为 ⌃⇧R(Windows, Linux 为 Ctrl+Shift+R。该操作出现在终端标签页的内联工具栏和终端的上下文菜单中。

调试

调试内联值悬停

如果启用了设置

debug.inlineValues
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
,内联值装饰现在具有内联悬停功能,使得一目了然地阅读较长的值变得更容易。

Screenshot that shows the cursor hovering above a dataframe object's inline decoration in an active debugging session. Rich value hover is shown.

语言

TypeScript 5.8

VS Code 现在包含 TypeScript 5.8.2。这一重大更新带来了新的语言改进,包括 改进条件表达式的类型检查 以及 支持编写符合 Node 新的 --experimental-strip-types 选项的代码。它还包括了许多工具改进和错误修复。

查看 TypeScript 5.8 发布博客 了解更多关于此更新的详细信息。

远程开发

远程开发扩展允许您通过 SSH 或远程隧道使用开发容器、远程机器或适用于 Linux 的 Windows 子系统 (WSL) 作为功能齐全的开发环境。

亮点包括:

  • Linux 旧版服务器生命周期结束 (EOL)
  • 扩展的代理可配置性

您可以在 远程开发发布说明 中了解关于这些功能的更多信息。

企业支持

允许扩展列表的多行支持

您现在可以在 Windows 的组策略中使用多行字符串配置允许的扩展。这允许对允许的扩展进行更灵活和广泛的配置。了解更多关于 配置允许扩展 的信息。

对扩展的贡献

Python

折断长字符串时自动插入引号

Pylance 现在支持自动插入引号,以便在折断长字符串时提供无缝体验。

Pylance 内存消耗改进

进行了一些优化以改善 Pylance 的内存消耗,尤其是在处理大型工作区时。此增强功能 是针对 Pyright(支持 Pylance 语言服务器功能的静态类型检查器)进行的。

Python shell 集成的改进

在修改以下设置后:

python.terminal.shellIntegration.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
您将不再需要重新加载即可使更改生效。只需创建一个新终端即可在终端的 Python REPL 中看到所需的更改。

Windows Git Bash 的正确工作区提示

在 Windows 上使用 Git Bash 的 Python 用户现在将在其终端提示符中看到正确的工作目录。这些更改适用于那些选择加入 pythonTerminalEnvVarActivation 实验的用户。

自动测试发现文件模式的新设置

您现在可以通过在以下设置中指定 glob 模式来细化自动测试发现发生的文件:

python.testing.autoTestDiscoverOnSavePattern
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
。其默认值设置为 **/*.py

从 settings.json 读取测试调试配置作为回退

我们现在会同时在 settings.jsonlaunch.json 文件中查找测试调试配置,扩大了您可以定义这些配置的范围。

GitHub 身份验证

通过采用 Electron fetch 改进代理支持

GitHub Authentication 扩展现在利用 Electron 版本的 fetch 来发出 Web 请求。这帮助了具有某些代理和防火墙设置的用户。如果您知道自己在具有代理设置的环境中运行,并且无法在 VS Code 内部对 GitHub 进行身份验证,请随时提交 Issue!

扩展创作

认证

重要:我们将 AuthenticationForceNewSessionOptions 重命名为 AuthenticationGetSessionPresentationOptions,目前保留了一个已弃用的 AuthenticationForceNewSessionOptions。没有功能差异,因此在运行时这不是破坏性更改,但您应该更新代码以使用 AuthenticationGetSessionPresentationOptions 而不是 AuthenticationForceNewSessionOptions,因为后者将来会被移除。

看看这两个身份验证调用:

vscode.authentication.getSession(provider, scopes, { createIfNone: options });
vscode.authentication.getSession(provider, scopes, { forceNewSession: options });

createIfNoneforceNewSession 现在将接收 booleanAuthenticationGetSessionPresentationOptions

/**
 * Optional options to be used when calling {@link authentication.getSession} with interactive options `forceNewSession` & `createIfNone`.
 */
export interface AuthenticationGetSessionPresentationOptions {
  /**
   * An optional message that will be displayed to the user when we ask to re-authenticate. Providing additional context
   * as to why you are asking a user to re-authenticate can help increase the odds that they will accept.
   */
  detail?: string;
}

完整类型定义可以在这里找到...

这是 createIfNone 的新增内容,但它是对 forceNewSession 的修改,后者过去接收 AuthenticationForceNewSessionOptions,其签名与新的 AuthenticationGetSessionPresentationOptions 相同。

如果您正在明确使用 AuthenticationForceNewSessionOptions,您会看到它被标记为已弃用,您应该将其替换为 AuthenticationGetSessionPresentationOptions,因为 AuthenticationForceNewSessionOptions 将在未来版本中被移除。

需要注意的是,这里改变的只有类型。没有运行时更改,因此从这个角度来看,这不是一个破坏性更改。

此外,authLearnMore 提议的 API 已从 AuthenticationForceNewSessionOptions 更新为 AuthenticationGetSessionPresentationOptions

这是一个利用 detaillearnMore 提议的示例:

Screenshot that shows the authentication modal dialog, featuring a message that says 'To get more relevant Copilot Chat results, we need permission to read the contents of your repository on GitHub.' and a button to learn more.

精简的 Snippet API

您现在可以在插入代码片段时控制空格规范化。这适用于 insertSnippet API 和 SnippetTextEdit API,并控制是否调整代码片段额外行的缩进。

const snippet = `This is an indented
    snippet`;

// keepWhitespace: false, undefined
function indentedFunctionWithSnippet() {
  return `This is an indented
        snippet`; // adjusted indentation
}

// keepWhitespace: true
function indentedFunctionWithSnippet() {
  return `This is an indented
    snippet`; // original indentation
}

提议的 API

文本编码

我们添加了新的提议 API 以在 VS Code 中处理 文本编码

具体来说,这个新 API 允许:

  • 获取 TextDocument 的当前 encoding(编码)
  • 使用特定的 encoding 打开 TextDocument
  • 使用特定的 encodingstring 编码为 Uint8Array
  • 使用特定的 encodingUint8Array 解码为 string

尝试一下并在这个 GitHub Issue 中告诉我们您的想法。

Shell 环境

扩展程序能够访问从 VS Code 集成终端打开的 pwsh, zsh, bash, 和 fish shell 的用户当前活动 shell 环境信息。这仅在

terminal.integrated.shellIntegration.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
已启用。

启用时可用。用户可以决定是否通过以下设置报告其 shell 环境信息:

terminal.integrated.shellIntegration.environmentReporting
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
.

尝试一下并在这个 GitHub Issue 中告诉我们您的想法。

工程

Electron 34 更新

在本次里程碑中,我们将 Electron 34 更新推向了稳定版的运行。此更新附带了 Chromium 132.0.6834.196 和 Node.js 20.18.2。我们要感谢所有在 Insiders 版本中自行托管并提供早期反馈的人。

macOS 10.15 支持已结束

VS Code 1.97 是支持 macOS 10.15 (macOS Catalina) 的最后一个版本。有关更多信息,请参阅我们的 常见问题解答

开发时跟踪泄漏的可丢弃对象 (Disposables)

VS Code 使用可丢弃模式进行显式资源管理,例如关闭文件、清理 DOM 元素或移除事件监听器。不丢弃资源意味着浪费内存,并且内存使用量会随着时间的推移而累积。

我们一直在寻找此类泄漏,并添加了另一个检测工具。我们利用 FinalizationRegistry API,因为它在对象被垃圾回收时会通知我们。如果这样一个对象代表一个未被 dispose 的 disposable,这意味着我们存在泄漏。这些信息会被收集并展示给 VS Code 的开发人员,以便我们能够及时清理。

值得注意的修复

感谢

最后但同样重要的是,向 VS Code 的贡献者们致以衷心的感谢

问题跟踪

对我们问题跟踪的贡献

拉取请求

vscode 的贡献

vscode-css-languageservice 的贡献

vscode-eslint 的贡献

vscode-hexeditor 的贡献

vscode-jupyter 的贡献

vscode-languageserver-node 的贡献

vscode-mypy 的贡献

vscode-pull-request-github 的贡献

vscode-python-debugger 的贡献

vscode-vsce 的贡献

debug-adapter-protocol 的贡献

language-server-protocol 的贡献

python-environment-tools 的贡献

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