在 VS Code 中试用

2025 年 2 月 (版本 1.98)

更新 1.98.1:本次更新解决了这些问题

更新 1.98.2:本次更新解决了这些问题

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


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

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

GitHub Copilot

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

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

Copilot 编辑

代理模式改进(实验性)

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

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

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

  • 终端命令现在以内联方式显示,因此您可以跟踪运行了哪些命令。
  • 您可以在运行终端命令之前,在聊天回复中编辑建议的终端命令。
  • 使用快捷键 ⌘Enter (Windows, Linux Ctrl+Enter) 确认终端命令。

代理模式会自主搜索您的代码库以获取相关上下文。展开消息即可查看已执行的搜索结果。

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

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

  • 聊天中的撤销和重做操作现在可以撤销或重做聊天响应中进行的最后一次文件编辑。这对于代理模式很有用,因为您现在可以撤销模型执行的某些步骤,而无需回滚整个聊天响应。
  • 代理模式现在可以自动或在收到指示时运行您的构建任务。如果您看到模型在不应该运行时运行任务,可以通过 github.copilot.chat.agent.runTasks 设置禁用此功能。

了解更多关于 Copilot 编辑代理模式的信息,或阅读 代理模式公告博客文章

注意:如果您是 Copilot 商业版或企业版用户,您的组织管理员必须选择启用 Copilot 的“编辑器预览功能”,才能使用代理模式。

Copilot 编辑中的笔记本支持(预览)

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

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

优化编辑器集成

我们已经优化了 Copilot 编辑与代码和笔记本编辑器的集成

  • 应用更改时不再滚动。视口保持原位,更易于专注于更改内容。
  • 将编辑审查操作从“接受”重命名为“保留”,将“丢弃”重命名为“撤销”,以更好地反映实际情况。Copilot 编辑的更改是实时的,它们在进行时即被应用和保存,用户可以选择保留或撤销它们。
  • 保留或撤销文件后,下一个文件会自动显示。

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

刷新用户界面

为了将 Copilot 编辑与 Copilot 聊天统一,我们对 Copilot 编辑进行了改版。已附加但尚未发送的文件现在显示为常规聊天附件。只有经过 AI 修改的文件才会被添加到更改文件列表,该列表位于聊天输入区域上方。

通过 chat.renderRelatedFiles 设置,您可以启用获取相关文件的建议。相关文件建议显示在聊天附件下方。

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

移除 Copilot 编辑限制

以前,您在 Copilot 编辑中只能将 10 个文件附加到提示中。在此版本中,我们取消了此限制。此外,我们还取消了每 10 分钟 14 次交互的客户端速率限制。

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

自定义指令正式发布

设置github.copilot.chat.codeGeneration.useInstructionFiles

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

在这个里程碑,我们使带有 .github/copilot-instructions.md 的自定义指令正式可用。请确保 github.copilot.chat.codeGeneration.useInstructionFiles 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. 授予: 您将像以前一样通过常规身份验证流程(通过模态对话框)。
  2. 暂不: VS Code 会记住您的选择,在您的下一个 VS Code 窗口会话之前不会再打扰您。唯一的例外是如果该功能需要此额外权限才能运行,例如 @github
  3. 不再询问: VS Code 会记住您的选择,并通过 github.copilot.advanced.authPermissions 设置将其持久化。任何需要此额外权限的功能都将失败。

重要的是,此确认不确认或拒绝 Copilot(服务)访问您的仓库。这仅是 VS Code 的 Copilot 体验如何进行身份验证。要配置 Copilot 可以访问的内容,请阅读有关内容排除的文档

Copilot 聊天中更高级的代码库搜索

设置github.copilot.chat.codesearch.enabled

当您将 #codebase 添加到您的 Copilot 聊天查询时,Copilot 会帮助您在工作区中为您的聊天提示找到相关代码。#codebase 现在可以运行文本搜索和文件搜索等工具,从您的工作区中提取更多上下文。

github.copilot.chat.codesearch.enabled 设置为启用此行为。完整的工具列表如下:

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

将问题作为聊天上下文附加

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

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

将文件夹作为上下文附加

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

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

设置:

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

折叠模式默认禁用,可以通过配置 editor.inlineSuggest.edits.showCollapsed 启用,或者您可以在 NES 侧边指示器菜单中启用或禁用它。

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

更改补全模型

您已经可以更改 Copilot 聊天和 Copilot 编辑的语言模型,现在您也可以更改内联建议的模型。

另外,您可以通过命令面板中的 更改补全模型 命令或标题栏 Copilot 菜单中的 配置代码补全 项来更改用于代码补全的模型。

注意:可用模型的列表可能会随时间变化。如果您是 Copilot 商业版或企业版用户,您的管理员需要在 GitHub.com 的Copilot 策略设置中选择启用 Editor Preview Features,才能为您的组织启用某些模型。

模型可用性

本次发布,我们为 Copilot 添加了更多模型供您选择。以下模型现在在 Visual Studio Code 和 github.com 聊天中的模型选择器中可用

  • GPT 4.5(预览版):OpenAI 的最新模型 GPT-4.5 现已在 GitHub Copilot Chat 中向 Copilot 企业版用户提供。GPT-4.5 是一种大型语言模型,在直觉、写作风格和广泛知识方面具有高级能力。在 GitHub 博客文章中了解有关 GPT-4.5 模型可用性的更多信息。

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

Copilot 视觉(预览)

我们正在此版本的 Copilot 聊天中快速推出端到端视觉支持。这允许您在聊天提示中附加图像并与图像进行交互。例如,如果您在调试时遇到错误,可以附加 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 窗口的屏幕截图(选择回形针 📎 按钮 > 屏幕截图窗口

如果所选模型目前不具备处理该文件类型的能力,则会显示警告。目前唯一支持的模型将是 GPT 4o,但对 Claude 3.5 SonnetGemini 2.0 Flash 的图像附件支持也将很快推出。目前支持的图像类型有 JPEG/JPGPNGGIFWEBP

Copilot 状态概览(实验性)

设置chat.experimental.statusIndicator.enabled

我们正在试验一种新的集中式 Copilot 状态概览,它能快速显示您的 Copilot 状态和关键编辑器设置

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

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

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

使用 chat.experimental.statusIndicator.enabled 设置启用 Copilot 状态概览。

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

设置chat.languageContext.typescript.enabled

我们正在试验对 TypeScript 文件的内联补全和 /fix 命令增强上下文。该实验目前仅限于 Insider 版本,可以通过 chat.languageContext.typescript.enabled 设置启用。

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

您可以使用 github.copilot.chat.pullRequestDescriptionGeneration.instructions 设置提供生成拉取请求标题和描述的自定义指令。您可以将此设置指向工作区中的一个文件,也可以在设置中内联提供指令。获取有关在 VS Code 中自定义 Copilot 的更多详细信息。

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

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

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

辅助功能

Copilot 编辑辅助功能

我们使 Copilot 编辑更具辅助功能。

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

activeEditorState 窗口标题变量

我们有一个新的 window.title 变量 activeEditorState,用于向屏幕阅读器用户指示编辑器信息,例如修改状态、问题数量以及文件何时有待处理的 Copilot 编辑。在屏幕阅读器优化模式下,此变量默认附加,可以通过 accessibility.windowTitleOptimized 禁用。

工作台

Linux 上的自定义标题栏

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

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

您始终可以恢复到本机标题装饰,既可以通过自定义标题上下文菜单,也可以通过将 window.titleBarStyle 配置为 native

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

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

次要侧边栏视图使用标签

我们决定更改次要侧边栏中视图的外观,以显示标签而不是图标,类似于面板区域中的做法。这使得区分不同视图变得更容易,例如 Copilot 编辑Copilot 聊天 视图。您可以随时通过配置 workbench.secondarySideBar.showLabels 切换回显示图标。

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

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

设置workbench.settings.useWeightedKeySearch

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

您可以通过启用 workbench.settings.useWeightedKeySearch 设置来试用此预览功能。

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

简单文件选择器中隐藏点文件的选项

使用简单文件选择器时(无论是连接到远程还是使用 files.simpleDialog.enable),您现在可以使用显示/隐藏点文件按钮来隐藏点文件。

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

编辑器

Peek 引用拖放支持

KPeek 视图现在支持拖放。调用 Peek 引用Peek 实现 或任何其他 Peek 命令,然后从其树中拖动条目以将其作为单独的编辑器打开。

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

出现高亮延迟

编辑器中出现高亮的延迟现在默认为 0。这使得编辑器整体感觉更灵敏。您仍然可以通过 editor.occurrencesHighlightDelay 设置控制延迟。

源代码管理

更新视图标题

当我们在源代码管理视图中添加 源代码管理图表 视图时,它突出了源代码管理视图中部分标题的重复:“源代码管理仓库”、“源代码管理”和“源代码管理图表”。在这个里程碑中,我们重新审视了视图的标题,使其更短且不再重复视图标题:“仓库”、“更改”和“图表”。

丢弃未跟踪更改的改进

设置git.discardUntrackedChangesToTrash

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

从这个里程碑开始,丢弃未跟踪文件时,如果可能,会将其移动到回收站/垃圾桶,以便文件可以轻松恢复。您可以使用 git.discardUntrackedChangesToTrash 设置禁用此功能。

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

诊断提交钩子(实验性)

设置:

在这个里程碑,我们引入了一个新的提交钩子,如果更改的文件有任何未解决的诊断,它会提示您。这目前是一个实验性功能,可以通过 git.diagnosticsCommitHook.Enabled 设置启用。

默认情况下,提交钩子会提示任何错误级别的诊断,但诊断源和级别可以使用 git.diagnosticsCommitHook.Sources 设置进行自定义。试试看,并告诉我们您的反馈。

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

笔记本

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

设置notebook.diff.experimental.toggleInline

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

通过将 notebook.diff.experimental.toggleInline 设置为 true 来启用此功能。然后您可以使用右上角的编辑器菜单将差异视图切换为内联模式。

笔记本内联值悬停

笔记本内联值现在会截断其修饰以适应视口宽度,并具有丰富的悬停提示以显示完整值,同时保持空白格式。这保持了数据框等变量的形状,使值更容易一目了然。

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

终端智能感知 (预览)

设置terminal.integrated.suggest.enabled

我们通过添加补全规范(例如 git)、优化命令行解析以提供更好的建议,以及增强文件和文件夹补全,显著改进了 bash、zsh、fish 和 PowerShell 中的终端 shell 补全。通过 terminal.integrated.suggest.enabled 启用此功能。

增强的 Fig 补全支持

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

  • 基本工具:catchmodchowncpcurldfduechofindgrepheadlesslsmkdirmoremvpwdrmrmdirtailtoptouchuname
  • 进程工具:killkillallps
  • 包管理器:aptbrew
  • Node.js 生态系统:nodenpmnpxnvmpnpmyarn
  • SCM、语言、编辑器:gitnanopythonpython3vim
  • 网络:scpsshwget

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

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

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

可配置的快速建议

设置terminal.integrated.suggest.quickSuggestions

类似于编辑器,快速建议是指在键入任何内容时自动显示智能感知,而不是触发字符,后者在使用特定字符(如 \-)时显示。新的 terminal.integrated.suggest.quickSuggestions 设置允许精确控制何时显示快速建议。

默认值启用命令和参数的快速建议,现在默认禁用,回退到路径,我们听说这可能会很嘈杂和令人沮丧,因为它们通常不适用。这是默认设置

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

内联建议检测

设置terminal.integrated.suggest.inlineSuggestion

迄今为止,内联建议检测面临的一个问题是来自不同来源的建议竞争造成的混淆。具体来说,是在 shell 中输入时经常出现的内联建议

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

这些建议实际上是 shell 级别的功能(fish/zsh 中的自动建议,pwsh 中的预测等),对于用户来说可能不明显,尤其是在与智能感知一同显示时。

智能感知功能要求我们检测此内联建议,这以前使用了一种简单的实现,只检查文本是否使用微弱斜体 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 进行配置。

详细的命令补全

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

$CDPATH 环境变量是一个常见的 shell 功能,它包含一个以冒号分隔的路径列表,类似于 $PATH,允许无论当前工作目录如何,都像它们是相对路径一样进行导航。Fish 实际上在 cd 标签补全中显示 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 配置此项。

绝对路径

现在支持绝对路径。

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 的命令别名现在也能被检测到,并具有一个新的独特图标

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.

任务

任务重新运行操作

我们为终端提供了一个新的重新运行任务操作,快捷键为 ⌃⇧R (Windows、Linux Ctrl+Shift+R)。此操作显示在终端选项卡的内联工具栏和终端的上下文菜单中。

调试

调试内联值悬停

如果设置 debug.inlineValues 已启用,内联值装饰现在具有内联悬停功能,使得一眼就能更容易地阅读更长的值。

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 旧版服务器的生命周期结束
  • 扩展的代理可配置性

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

企业支持

允许的扩展的多行支持

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

扩展贡献

Python

拆分长字符串时自动插入引号

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

Pylance 内存消耗改进

为改善 Pylance 的内存消耗进行了一些优化,特别是在处理大型工作区时。此增强功能 已添加到 Pyright,它是支持 Pylance 语言服务器功能的静态类型检查器。

Python Shell 集成改进

修改 python.terminal.shellIntegration.enabled 后,您不再需要重新加载才能使更改生效。只需创建一个新终端即可在终端中查看 Python REPL 的所需更改。

Windows Git Bash 的正确工作区提示

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

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

您现在可以通过在 python.testing.autoTestDiscoverOnSavePattern 设置中指定 glob 模式来优化自动测试发现所涉及的文件。其默认值设置为 **/*.py

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

我们现在在 settings.jsonlaunch.json 文件中查找测试调试配置,扩展了您可以定义这些配置的位置。

GitHub 身份验证

采用 Electron fetch 后改进的代理支持

GitHub 身份验证扩展现在利用 Electron 版本的 fetch 来进行 Web 请求。这帮助了具有特定代理和防火墙设置的用户。如果您知道您在具有代理设置的环境中运行,并且无法在 VS Code 中向 GitHub 进行身份验证,请不要犹豫创建问题!

扩展创作

身份验证

重要提示:我们将 AuthenticationForceNewSessionOptions 重命名为 AuthenticationGetSessionPresentationOptions,并暂时保留一个已弃用的 AuthenticationForceNewNewSessionOptions。功能上没有区别,因此这在运行时不是一个重大更改,但您应该更新您的代码以使用 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 的修改,后者过去接受一个与新的 AuthenticationGetSessionPresentationOptions 具有相同签名的 AuthenticationForceNewSessionOptions

如果您明确使用 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
  • string 编码为具有特定 encodingUint8Array
  • 使用特定 encodingUint8Array 解码为 string

试试看,并在此 GitHub 问题中告诉我们您的想法。

Shell 环境

扩展能够访问从 VS Code 集成终端打开的 pwsh、zsh、bash 和 fish shell 的用户当前活跃的 shell 环境信息。这仅在 terminal.integrated.shellIntegration.enabled 启用时可用。

用户可以使用 terminal.integrated.shellIntegration.environmentReporting 决定是否报告其 shell 环境信息。

试试看,并在此 GitHub 问题中告诉我们您的想法。

工程

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) 的最后一个版本。有关更多信息,请参阅我们的常见问题

开发时泄漏可处置对象的跟踪

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

我们一直在寻找此类泄漏,并增加了另一个用于检测的工具。我们利用 FinalizationRegistry API,因为它会在对象被垃圾回收时通知我们。如果这样的对象代表一个尚未处置的 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 的贡献