本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

2024年11月(版本1.96)

更新 1.96.1:此更新解决了这些问题并启用了GitHub Copilot 免费计划

更新 1.96.2:此更新解决了这些问题

更新 1.96.3:此更新解决了这些问题

更新 1.96.4:此更新解决了这些问题

下载: Windows: x64 Arm64 | Mac: 通用 Intel | Linux: deb rpm tarball Arm snap


欢迎来到2024年11月Visual Studio Code的发布版本。这个版本有很多更新,我们希望你会喜欢,其中一些主要亮点包括:

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

GitHub Copilot

GitHub Copilot 免费计划

我们很高兴地宣布GitHub Copilot 全新免费计划。注册GitHub Copilot 免费计划,您只需要一个 GitHub 账户。您每月有固定的完成次数和聊天互动次数,每月重置。

您可以在 VS Code 内直接注册。请按照 Copilot 设置指南 中的步骤进行操作。

聊天视图显示了Copilot消息和一个按钮,使您可以登录以使用Copilot。

了解更多关于 Copilot 免费计划的详细信息和条款

Copilot编辑

最后一个里程碑,我们引入了Copilot 编辑(目前处于预览阶段),允许您使用自然语言快速编辑多个文件。从那时起,我们继续对体验进行迭代改进。您可以通过在命令中心中打开 Copilot 菜单,然后选择打开 Copilot 编辑,或通过触发输入:.

进度和编辑器控制

Copilot 编辑可以在不同的文件中进行多次更改。现在,您可以更清楚地看到其进展,编辑内容会不断到来。并且通过编辑覆盖控制,您可以轻松地循环浏览所有更改并接受或拒绝它们。

将聊天会话移至Copilot编辑

您可能使用聊天视图来探索一些对代码进行更改的创意。现在,您不再需要应用单独的代码块,而是可以将聊天会话移至 Copilot 编辑,以应用会话中的所有代码建议。

使用 Copilot 进行聊天交流编辑。

工作集建议文件

在 Copilot Edits 中,工作集决定了 Copilot Edits 可以建议更改的文件。为了帮助您将相关文件添加到工作集中,对于一个 Git 仓库,Copilot Edits 现在可以根据您已经添加的文件建议其他文件。例如,Copilot Edits 会建议与您已经添加的文件一起经常更改的文件。

Copilot 在工作集中的 添加文件 按钮旁边显示建议的文件。你也可以选择 添加文件,然后选择 相关文件,从建议的文件列表中进行选择。

重启后恢复编辑会话

编辑会话现在在重启 VS Code 后已完全恢复。这包括工作集、接受状态以及所有以前编辑步骤的文件状态。

从资源管理器、搜索和编辑器添加到工作集

您可以通过新的将文件添加到 Copilot 编辑工作集上下文菜单操作,将搜索结果中的文件和资源管理器视图中的文件添加到搜索视图。此外,您还可以从编辑器上下文菜单将文本选择附加到 Copilot 编辑。

将文件从资源管理器视图添加到 Copilot 编辑

与 Copilot 一起调试

配置调试可能会很棘手,特别是在处理新项目或语言时。在这个里程碑中,我们正在引入一个新的Copilot-调试终端命令,通过 VS Code 帮助你调试程序。你可以通过在通常要运行的命令前加上 来使用它。Copilot-调试例如,如果你通常使用命令运行你的程序pythonfoo.py, 现在你可以运行Copilot调试 pythonfoo.py开始调试会话。

你的程序退出后,你可以选择重新运行你的程序或查看、保存或重新生成用于调试你的程序的 VS Code 启动配置

终端在调试会话后显示选项以重新运行、重新生成、保存或启动配置。 主题: Codesong (预览于 vscode.dev)

任务支持

Copilot的调试功能,包括Copilot-调试/开始调试意图,现在生成预启动任务s 需要根据需要进行编译的代码在调试之前需要进行编译步骤。这对于编译型语言(如 Rust 和 C++)来说通常就是这样。

添加上下文

我们已在 Copilot Chat 和 Copilot Edits 中添加了新的方法来将符号和文件夹作为上下文包含进来,使您在工作流程中更容易引用相关信息。

符号

符号现在可以通过从大纲视图或面包屑中拖放到聊天视图中来轻松地添加到 Copilot Chat 和 Copilot Edits 中。

我们还在聊天输入中引入了符号补全。通过输入#输入符号名称后,您将看到来自您最近处理的文件的符号建议。

要跨整个项目引用符号,您可以使用#符号打开全局符号选择器。

文件夹

现在可以通过将文件夹从资源管理器、面包屑导航或其他视图拖动到 Copilot Chat 中将其添加为上下文。

当文件夹被拖入 Copilot Edits 时,文件夹中的所有文件都会被包含在工作集内。

Copilot使用量图表

VS Code 扩展可以使用 VS Code API 来 基于 Copilot 的功能进行开发。现在,您可以在运行状态视图中看到扩展的 Copilot 使用情况图表。该图表显示了扩展在过去 30 天内发出的聊天请求的数量。

运行状态视图中的Copilot使用图表

自定义提交信息生成指令

Copilot可以基于你所做的更改帮助你生成提交信息。在这个里程碑中,我们增加了在生成提交信息时支持自定义指令的功能。例如,如果你的提交信息需要遵循特定格式,你可以在自定义指令中描述这一点。

你可以使用

github.copilot.chat.commitMessageGeneration.instructions
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置为指定自定义指令或从您的工作区指定包含自定义指令的文件。这些指令会附加到用于生成提交信息的提示中。了解如何使用自定义指令的更多信息。

内联聊天

这个里程碑,我们进一步改进了内联聊天的用户体验:我们使进度报告更加微妙,同时在流式传输更改波浪线被禁用,并且检测到的命令以更美观的方式呈现。

此外,我们继续改进伪代码检测,并现在显示一个提示,当一行代码主要是自然语言时,您可以继续使用内联聊天。此功能允许您在编辑器中输入伪代码,然后将其用作内联聊天的提示。您还可以通过按压来触发此流程输入:.

自然语言主导的行内聊天提示。

此外,有一个新的实验性设置,可以在空行上显示内联聊天提示。此设置可以通过启用来实现

立线空行提示
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
默认情况下,此设置已禁用。

终端聊天

终端内联聊天进行了重新设计,使其外观和感觉更接近编辑器内联聊天:

终端内联聊天现在看起来很像编辑器聊天

以下是其他值得注意的改进:

  • 小部件的布局和定位得到了改进,表现总体上更好。
  • 有一个模型选择器
  • 底部的按钮现在更加一致。

性能改进@工作区

当你使用@工作区要询问 Copilot 关于您当前打开的工作区,我们首先需要将工作区缩小到一组相关的代码片段,然后将其作为上下文传递给 Copilot。如果您的工作区由 GitHub 仓库支持,我们可以通过使用 Github 代码搜索快速找到这些相关的片段。然而,由于代码搜索索引跟踪的是您的仓库的主分支,我们不能在本地更改或在分支上时依赖它。

在这个里程碑中,我们努力将 Github 搜索的性能优势带给分支和拉取请求。这意味着我们现在同时搜索基于你仓库主要分支的远程索引和任何本地更改的文件。然后我们将这些结果合并在一起,为 Copilot 提供快速且最新的片段集。你可以阅读更多关于 Github 代码搜索及其启用方法

无障碍

代码操作无障碍信号

一些代码操作可能需要很长时间才能完成,例如快速修复调用外部服务生成图像描述。可能不明显何时触发或何时完全应用。因此,我们添加了无障碍信号来指示代码操作被触发或应用。

您可以启用这些信号

可访问性.信号.代码操作触发
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
无障碍信号代码应用
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。

REPL中的自动对焦管理

我们引入了一个新的设置,以在REPL中提高可访问性。通过

可访问性.编辑器.自动聚焦于REPL执行
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
, 现在你可以指定焦点是否保持不变 (), 移动到输入框 (输入), 或者切换到最近执行的单元格 (上次执行) 每次代码执行时。默认情况下,焦点会移动到输入框。

工作台

改进的扩展搜索结果

当您在扩展视图中使用自由文本搜索扩展时,已安装的扩展现在会出现在搜索结果的顶部。这使得在市场中搜索时更容易找到和管理已安装的扩展。

已安装的扩展显示在搜索结果的顶部。

从扩展视图下载扩展

您现在可以通过在扩展视图中扩展的上下文菜单中使用下载操作直接从 VS Code 下载扩展。如果您想在不安装扩展的情况下下载扩展,这将非常有用。

上下文菜单选项从扩展视图下载扩展。

扩展磁盘空间

现在,您可以在扩展编辑器中看到扩展在磁盘上的内存使用情况。这将帮助您了解扩展使用了多少磁盘空间。

扩展内存使用情况显示在扩展视图中的磁盘上。

在资源管理器中查找改进

在九月的发布中,我们引入了在整个项目中于资源管理器中查找文件的功能,这是之前不可用的功能。然而,这次更新暂时移除了高亮模式并限制了某些操作。

在此次发布中,我们重新引入了高亮模式。这个功能允许您轻松找到工作区中的文件和文件夹,并将匹配的结果高亮显示以提高可见性。此外,我们还在折叠的文件夹上引入了一个新的视觉指示器,显示其中是否隐藏了匹配项。

过滤器切换功能仍然可用,使您能够仅关注符合查询的文件和文件夹,同时隐藏不匹配的项目。我们还重新启用了在之前版本中必须禁用的所有上下文菜单操作。

我们还改进了使用查找控件的用户体验。当滚动到文件资源管理器的顶部时,会在顶部创建额外的空间,确保控件不会遮挡您的搜索结果。

当滚动到顶部时,查找控件显示在资源管理器中的第一个文件或文件夹之上。

在主侧栏和次侧栏之间移动视图

您已经可以通过拖放或使用移动视图命令将视图容器移动到其他位置。现在,您可以直接在视图容器上使用“移动到”上下文菜单操作,将其移动到主侧边栏、次侧边栏或面板区域之间。

在标题区域隐藏导航控件

有些人喜欢尽可能保持标题区域的整洁。我们添加了一个新设置

工作台导航控制启用
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
这使您能够在标题区域隐藏后退/前进按钮。

您还可以通过在标题区域右键单击并选择导航控件来访问此设置。

在 VS Code 标题区域右键单击时的导航控制上下文菜单。

编辑器

配置粘贴和拖放行为

当你将文件拖放到文本编辑器中或复制并粘贴文件时,VS Code 提供多种方式将文件插入到该文件中。默认情况下,VS Code 会尝试插入文件相对于工作区的路径。现在你可以使用拖放/粘贴控制来切换资源的插入方式。扩展程序也可以提供自定义编辑,例如在 Markdown 中,提供插入 Markdown 链接的编辑

随着新的

编辑器.粘贴偏好设置
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
编辑器.拖入编辑器.偏好设置
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置,您现在可以指定默认使用的编辑类型。例如,如果您希望复制/粘贴总是插入粘贴文件的绝对路径,请设置:

"编辑器粘贴偏好设置": [
    "绝对路径"
]

这些设置是编辑类型的有序列表。默认情况下,首选类型的第一个匹配编辑会被应用。在默认编辑应用之后,您仍然可以使用拖放控制更改到其他类型的编辑。

这些新设置与我们的新复制和粘贴支持JavaScript和TypeScript中的导入很好地配合。此功能在跨JavaScript或TypeScript文件复制代码时会自动添加导入。为了避免干扰您的工作流程,我们决定默认情况下粘贴只是插入纯文本和粘贴与导入在粘贴控制中提供了一个选项。然而,如果你希望 VS Code 始终尝试在导入时粘贴,请设置:

"editor.pasteAs.preferences": [
    "文本更新导入"
]

现在,VS Code 在可能的情况下会自动尝试使用导入进行粘贴,如果无法进行带有导入的粘贴编辑,则会回退到粘贴纯文本。目前,这仅适用于 JavaScript 和 TypeScript,但我们希望随着时间的推移,其他语言也会采用支持。

最后,您现在在设置时也可以指定首选粘贴样式编辑器操作粘贴为键绑定。以下的键绑定将始终尝试粘贴并更新导入:

{
  "键": "ctrl+shift+v",
  "命令": "编辑器操作粘贴为",
  "参数": {
    "偏好设置": ["文本.更新导入"]
  }
}

持久编辑器查找历史记录

查找控制现在可以跨会话持久化搜索历史记录,并在 VS Code 重启时恢复。搜索历史记录按工作区存储,可以通过以下方式禁用

编辑器.查找.历史记录
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。

覆盖模式

你知道吗,除非你安装了Vim键映射,VS Code不支持在编辑器中覆盖文本。应广大需求,我们现在在编辑器中添加了覆盖模式,以便在输入时覆盖文本而不是插入文本。这个有用的场景是编辑Markdown表格时,你希望保持表格单元格边界整齐对齐。

此模式可以通过命令 视图:切换覆盖/插入模式 或使用您的键盘上的 插入 键进行切换。当您处于覆盖模式时,状态栏会显示一个 概述指示器。

在覆盖模式下,可以使用该设置更改光标样式。

编辑器.覆盖光标样式
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
此外,有一个设置
编辑器.粘贴时覆盖
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
,这决定了在覆盖模式下粘贴时是覆盖还是插入。默认行为是插入粘贴的文本。

源代码管理

Git 责任信息(实验性)

这个里程碑,我们已经添加了通过编辑器装饰和状态栏项显示责任信息的实验性支持。你可以通过使用

git.blame.editorDecoration.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
git.blame.statusBarItem.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。您可以悬停在责备信息上以查看更多提交详细信息。

您可以自定义在编辑器和状态栏中显示的消息格式

git.blame.editorDecoration.template
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
git.blame.statusBarItem.template
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置。您可以使用变量来表示最常使用的信息。例如,以下模板显示提交的主题、作者的姓名以及作者的日期相对于现在:

{
  "git.blame.editorDecoration.template": "${主题}, ${作者姓名} (${作者日期前})"
}

如果您想调整编辑器装饰的颜色,请使用git.blame.editorDecorationForeground主题颜色。

尝试这个实验性功能并告诉我们你的想法。

源代码控制图标题操作

根据用户反馈,我们已将“拉取”和“推送”操作重新添加到源控制图视图标题栏。如果当前历史项引用显示在源控制图中,则这些操作将被启用。

如果您不想使用这些操作,或 Source Control Graph 视图标题栏的任何其他操作,您可以右键单击标题栏并将其隐藏。

源代码控制图标题操作和上下文菜单隐藏特定项目。

笔记本电脑

跨单元格选择高亮

现在在笔记本中支持选择突出显示,允许在多个单元格之间基于文本选择进行突出显示。这由现有的设置控制。

编辑器选择突出显示
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
输入:.

多重光标:选择所有匹配的出现位置

笔记本现在支持键盘快捷键 选择所有匹配的查找。这可以通过命令 id 找到笔记本全选查找匹配 并且可以默认使用快捷键 ⇧⌘L (Windows, Linux Ctrl+Shift+L

运行节中的单元格以生成Markdown

笔记本现在在Markdown单元格的单元格工具栏中暴露出在节中运行单元格操作。如果Markdown单元格有标题,则执行该节中包含的所有单元格和子节中的所有单元格。如果没有标题,则尽可能执行周围节中的所有单元格。

单元格执行时间详细程度

单元格状态栏中的执行时间信息现在有一个选项来增加详细程度。这可以通过设置启用。

notebook.单元格执行时间详细程度
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
并且能够显示执行时间戳以及持续时间。

在单元格状态栏内显示详细的单元格执行时间。

终端

支持捆绑

现在终端支持连接符,无论是否使用GPU加速。此功能可以通过设置启用

终端.集成.字体连字
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
输入:

支持连字(如 ->、==> 等)的字体现在将视觉上看起来像单个字符。

为了使用此功能,请确保您还使用支持连字的字体

终端.集成.字体
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
输入:.

用于定制终端标签的新变量

终端标签上显示的文本由终端.集成.标签.标题终端.集成.标签.描述设置允许使用变量集合。我们现在支持以下新变量:

  • ${壳类型}- 检测到终端中使用的 shell 类型。这类似于默认值,但它不会更改为吉特例如,运行git命令时。

  • ${shellCommand} - 在终端中运行的命令。这需要壳集成

    替代文本

  • ${shellPromptInput} - 在终端中运行的命令或当前检测到的提示输入。这需要shell集成

    在终端中输入 "echo hello",在配置完成后将会在标签页中显示 "echo hello|"

立即运行最近的命令现在显示历史源文件

最近命令运行 shell 集成功能现在包括命令来源的完整标题,包括相关的历史文件以及一个方便的按钮来打开它。

替代文本

此命令的默认快捷键是Ctrl+Alt+R输入:.

链接格式/路径/到/文件.扩展名, 行号现在应该在终端中被检测为链接。

测试

可归因覆盖

这个里程碑,我们最终确定了一个API,使扩展能够按测试提供覆盖信息,这样您就可以确切地知道任何给定测试执行了什么代码。当可追溯覆盖可用时,测试覆盖视图、编辑器操作、切换到测试覆盖工具栏(通过测试:测试覆盖工具栏命令)或简单地使用测试:按测试过滤覆盖命令,在测试覆盖工具栏中都有过滤按钮。

主题: Codesong (预览于 vscode.dev)

重新设计的内联错误消息

我们重新设计了测试失败信息,使其既更引人注目又不那么碍眼。这在繁忙的场景中特别有用,例如在 SCM 差异或 Copilot 编辑中。选择失败信息仍然会打开一个预览控件,以显示失败的完整详细信息。

编辑器中新的测试错误消息的图像。

对连续运行用户界面的改进

之前,通过测试资源管理器视图中的“眼睛”图标可以切换的全局持续测试运行状态,会以默认的运行配置文件开启或关闭持续运行。

我们将连续运行的用户界面重新设计,增加了一个下拉菜单,可以单独为每个配置文件开启或关闭连续运行。选择该指示器会切换上次使用的运行配置文件集的开启或关闭。

语言

TypeScript 5.7

我们的JavaScript和TypeScript支持现在使用TypeScript 5.7。这个重要的更新包括了许多语言和工具的改进,以及重要的错误修复和性能优化。

您可以在TypeScript 博客上阅读有关 TypeScript 5.7 发布的所有内容。我们还在以下部分中包括了一些工具亮点。

粘贴用于导入JavaScript和TypeScript的代码

厌倦了在移动代码到不同文件后不得不添加导入吗?试试 TypeScript 5.7+ 的 Paste with imports 功能。现在,每当你在 JavaScript 或 TypeScript 之间复制粘贴代码时,VS Code 可以为粘贴的代码添加导入。

注意不仅添加了导入项,甚至在粘贴的代码中使用过的局部变量还增加了一个新的导出项!

虽然我们认为这个功能可以节省大量时间,但我们也很注意不要打乱您现有的工作流程。这就是为什么, 默认情况下,我们保持复制和粘贴总是只插入粘贴的文本。如果一个粘贴与导入编辑可用,然后你会看到粘贴控制,允许你选择粘贴与导入编辑。

粘贴控制,显示插入纯文本或带导入粘贴的选项。

如果你总是喜欢在导入时粘贴,你可以使用新的编辑器.粘贴偏好设置 设置:

"editor.pasteAs.preferences": [
    "文本更新导入"
]

这将始终尝试在有编辑内容时进行粘贴导入。

您还可以设置一个快捷键来粘贴带有导入内容,如果有的话:

{
  "键": "ctrl+shift+v",
  "命令": "编辑器操作粘贴为",
  "参数": {
    "偏好设置": ["文本.更新导入"]
  }
}

如果你愿意,你甚至可以反向操作,将粘贴导入默认设置,并添加一个键绑定以纯文本形式粘贴:

"editor.pasteAs.preferences": [
    "文本更新导入"
]
{
  "键": "ctrl+shift+v",
  "命令": "编辑器操作粘贴为",
  "参数": {
    "偏好设置": ["text.plain"]
  }
}

最后,如果你希望完全禁用粘贴与导入,你可以使用

typescript.粘贴时自动更新导入项.启用
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
javascript.updateImportsOnPaste.enabled
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
输入:.

远程开发

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

亮点包括:

  • 远程-SSHCopilot聊天参与者
  • 增强会话日志记录

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

企业支持

配置允许的扩展名

您现在可以使用以下方法控制哪些扩展可以安装在 VS Code 中

扩展允许
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
ORG 设置。此设置允许您通过出版商、特定扩展和版本来指定允许或阻止的扩展。如果阻止了一个扩展或版本,如果已经安装,它将被禁用。您可以指定以下类型的扩展选择器:

  • 允许或阻止所有来自出版商的扩展
  • 允许或阻止特定扩展名
  • 允许特定的扩展版本
  • 允许特定的扩展版本和平台
  • 仅允许扩展的稳定版本
  • 仅允许来自出版商的稳定扩展版本

以下JSON片段展示了不同设置值的示例:

"extensions.allowed": {
    // Allow all extensions from the 'microsoft' publisher. If the key does not have a '.', it means it is a publisher ID.
    "microsoft": true,

    // Allow all extensions from the 'github' publisher
    "github": true,

    // Allow prettier extension
    "esbenp.prettier-vscode": true,

    // Do not allow docker extension
    "ms-azuretools.vscode-docker": false,

    // Allow only version 3.0.0 of the eslint extension
    "dbaeumer.vscode-eslint": ["3.0.0"],

    // Allow multiple versions of the figma extension
    "figma.figma-vscode-extension": ["3.0.0", "4.2.3", "4.1.2"],

    // Allow version 5.0.0 of the rust extension on Windows and macOS
    "rust-lang.rust-analyzer": ["5.0.0@win32-x64", "5.0.0@darwin-x64"],

    // 仅允许 GitHub Pull Requests 扩展的稳定版本
    "github.vscode-pull-request-github": "stable",

    // 仅允许来自 redhat 出版商的稳定版本
    "redhat": "stable"
}

通过其出版商ID指定出版商。如果一个键没有句点 (输入:.),它被视为发布者ID。如果密钥包含句点,则被视为扩展ID。目前不支持使用通配符。

你可以使用微软作为发布者ID,以引用由Microsoft发布的所有扩展,尽管它们可能具有不同的发布者ID。

版本范围不被支持。如果您希望允许扩展的多个版本,您必须单独指定每个版本。要进一步通过平台限制版本,请使用@符号指定平台。例如,&rust-lang.rust-analyzer": ["5.0.0@win32-x64", "5.0.0@darwin-x64"]。 有关详细信息,请参阅 企业文档

管理员还可以通过Windows的组策略来配置此设置。有关详细信息,请参阅Windows的组策略部分的企业文档。

设置 VS Code 并预安装扩展

您可以设置 VS Code,预装一系列扩展 (自动启动)。此功能在您准备机器映像、虚拟机或预装 VS Code 的云工作站时非常有用,用户可以立即使用特定的扩展。

注意:目前仅在 Windows 上支持预安装扩展。

请按照以下步骤进行扩展初始化:

  1. 创建文件夹引导\扩展在 VS Code 安装目录。

  2. 下载 VSIX 文件 以预安装您想要的扩展,并将它们放置在 引导\扩展文件夹。

  3. 当用户第一次启动 VS Code 时,所有扩展在引导\扩展文件夹在后台静默安装。

用户仍然可以卸载预安装的扩展。卸载扩展后重启 VS Code 不会重新安装该扩展。

对扩展的贡献

Python

Python 环境扩展

在此次发布中,我们推出了Python环境扩展,现在可以在Marketplace上预览使用。

这个扩展简化了Python环境管理,提供了一个UI来创建、删除和管理环境,以及用于安装和卸载包的包管理。

设计时考虑与您首选的环境管理器通过各种API无缝集成,它默认支持Global Python解释器、venv和Conda。开发者可以构建扩展以添加对他们最喜欢的Python环境管理器的支持,并与我们的扩展UI集成,增强功能性和用户体验。

您可以在市场中下载Python环境,并与Python扩展的预发布版本一起使用。

Python 测试增强

  • --根目录pytest 的参数现在根据特定条件动态调整python.testing.cwd在你的工作区设置。
  • 现在重新启动测试调试会话将仅重新运行指定的测试。
  • 覆盖支持更新以处理无源例外。
  • pytest描述插件在用户界面中支持测试检测和执行。
  • 测试重写现在利用FIFO而不是UDS进行进程间通信,允许用户使用pytest插件,如pytest_socket在他们自己的测试设计中。
  • 重写接近默认状态: 本次发布解决了测试重写中的最后一个已知问题,除非出现进一步的问题,否则重写实验将在2025年初关闭,重写设置将恢复为默认。

Python REPL 增强

  • 在智能发送到原生 REPL 后将焦点留在编辑器上
  • 重新加载后本地 REPL 的处理改进
  • 在 VS Code 终端中修复 Python 3.13 的缩进错误问题

Pylance "完整" 语言服务器模式

python分析语言服务器模式当前设置也支持模式,使您可以充分利用 Pylance 的所有功能和最全面的 IntelliSense 体验。值得注意的是,这会降低性能,因为它可能会导致 Pylance 资源密集型,特别是在大型代码库中。

python分析语言服务器模式设置现在更改以下设置的默认值,具体取决于它是否设置为默认输入:

设置 默认
python分析排除 ['**'] [] []
python分析.使用库代码进行类型定义 假的
python分析启用pytest支持 假的
python分析索引 假的
python分析自动导入补全 假的 假的
python.analysis.showOnlyDirectDependenciesInAutoImport 假的 假的
python分析.包索引深度 [ { "name": "sklearn", "depth": 2 }, { "name": "matplotlib", "depth": 2 }, { "name": "scipy", "depth": 2 }, { "name": "django", "depth": 2 }, { "name": "flask", "depth": 2 }, { "name": "fastapi", "depth": 2 } ] [ { "name": "sklearn", "depth": 2 }, { "name": "matplotlib", "depth": 2 }, { "name": "scipy", "depth": 2 }, { "name": "django", "depth": 2 }, { "name": "flask", "depth": 2 }, { "name": "fastapi", "depth": 2 } ] { "name": "", "depth": 4, "includeAllSymbols": true }
python分析.重新生成标准库索引 假的 假的
python分析.用户文件索引限制 2000 2000 -1
python分析包括用户文件中的别名 假的 假的
python分析.函数返回类型 假的 假的
python分析pytest参数 假的 假的
python分析支持结构化文本 假的 假的
python分析支持文档字符串模板 假的 假的

TypeScript

TypeScript 可扩展悬停(实验性)

这个里程碑,我们实现了从TS服务器查看扩展/收缩信息的功能。该扩展使用Expandable Hover API来显示输入:+输入:-编辑器中的标记悬停时显示更多信息或更少信息。

实验设置可以使用

typescript.experimental.expandableHover
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
要使此设置生效,您必须使用TypeScript 5.8或更高版本。您可以通过使用来更改TypeScript版本TypeScript:选择 TypeScript 版本...命令。

Microsoft Account 现在使用 MSAL(在 Windows 上支持 WAM)

为了确保 Microsoft 认证的强安全基线,我们在 Microsoft 帐户扩展中采用了 Microsoft 认证库

这项工作的突出特点之一是WAM(Web Account Manager... 也称为Broker)集成。简单来说,不再需要通过浏览器进行Microsoft身份验证流程,我们现在可以直接与操作系统通信,这是获取Microsoft身份验证会话的推荐方式。此外,它更快,因为我们能够利用您已经在操作系统上登录的账户。

操作系统在 VS Code 上显示的认证弹窗。

如果您发现此新流程有任何问题,请告知我们。如果您确实发现重大问题并需要恢复到旧的 Microsoft 认证行为,您可以这样做。

microsoft-认证.实现
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
(将其设置为经典,重启 VS Code) 但请记住,这个设置不会持续太久。所以,如果你在 MSAL 流方面遇到问题,请提交一个 issue。

扩展编写

@vscode/聊天扩展实用工具

我们已经提供了聊天语言模型扩展API,供扩展作者与GitHub Copilot集成,已经几个月了。但我们发现,与LLM合作并构建高质量的聊天扩展本身是复杂的,特别是如果你希望利用工具调用。

我们发布了一个npm包,@vscode/聊天扩展实用工具,旨在使聊天参与者尽可能轻松地开始使用。它接管了您通常需要自己完成的几项工作,从而使聊天参与者的实现只需几行代码。该包还包含有用的高质量元素集合,可以与@vscode/prompt-tsx一起使用。

您可以在 中查看完整的文档。聊天扩展实用工具 代码库 并在 示例聊天扩展 中查看其运行情况。我们的新 LanguageModelTool API 文档 也描述了如何使用它。

可归因覆盖API

测试覆盖API现在允许扩展在每个测试的基础上提供覆盖信息。要实现此API,请填充包括测试?:测试项目[]物业在文件覆盖以指示哪些测试在该文件中执行了代码,并实现TestRunProfile加载测试的详细覆盖信息提供语句和声明覆盖。

请参阅上面的归属覆盖部分,了解用户看到的样子。

贡献到一个JavaScript调试终端

JavaScript 调试器现在有一种机制,允许其他扩展参与创建 JavaScript 调试终端。这使得除了 Node.js 之外的框架或运行时能够在相同熟悉的地方启用调试。请参阅JavaScript 调试器文档了解更多信息。

Node.js 的代理支持获取应用程序编程接口

全球获取函数现在带有代理支持(

http.fetchAdditionalSupport
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
). 这与对不起,我无法访问特定的网页内容。如果你能提供具体的文本内容,我可以帮助你进行翻译。模块,已经具有代理支持。

预览功能

粘贴代码以附加聊天上下文

之前,你已经可以将文件作为上下文附加到 Copilot Chat 中。为了对上下文进行更精细的控制,你现在可以粘贴代码片段以将其作为聊天的上下文。这会添加必要的文件信息和相应的行号。你只能粘贴来自当前工作区的文件中的代码。

要尝试这个功能,请复制一些代码并粘贴到内联聊天、快速聊天或聊天视图中。选择出现的粘贴控制并选择粘贴的代码附件。或者,您可以设置

编辑器.粘贴偏好设置
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置:

"编辑粘贴偏好设置": [
    "聊天附加文本"
]

在 Copilot Chat 中使用粘贴控件将代码作为上下文。

更多 shell 的终端补全

我们在中增加了对终端补全的支持pwsh在之前的版本中。这次发布,我们已经开始扩展到其他外壳。具体针对巴什zsh目前是这样,但由于这种新方法是由扩展主机 API 支持的,我们计划对大多数 shell 提供通用支持。

您可以通过设置尝试当前的开发版本

终端.集成.建议.启用
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
终端.集成.建议.启用扩展完成
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
目前仅光盘代码,和代码内幕参数是支持的。

在终端中输入命令,终端显示建议。然后输入,提供选项,选择。使用ctrl+space请求完成,并显示所有区域。输入并过滤列表到和。

提议的API

建议在快速选择上实现值选择 API

对于输入框您已经能够设置“值选择”,这使您能够编程选择输入的一部分或全部。在这一里程碑中,我们为在QuickPick中进行值选择添加了一个提议的API。

这是一个可能的样子的例子:

const qp = vscode.window.createQuickPick();
qp.value = '12345678';
qp.valueSelection = [4, 6];
qp.items = [
  { label: '12345678', description: 'desc 1' },
  { label: '12345678', description: 'desc 2' },
  { label: '12345678', description: 'desc 3' }
];
qp.显示();

在快速选择的输入框中选择了一些字符。

尝试快速选择中的值选择并告诉我们你的想法在这个 GitHub 问题中

提议的原生Windows句柄 API

这个里程碑,我们新增了一个提议的API,用于检索聚焦Windows的原生Windows句柄。原生Windows句柄是操作系统中的一个概念,本质上提供了一个指向特定Windows的指针。如果你正在与原生代码交互,并且需要例如在Windows之上渲染一个原生对话框,这将非常有用。

declare module 'vscode' {
  export namespace window {
    /**
     * 获取当前活动Windows的原生Windows句柄。
     * 当活动Windows更改时,此值将被更新。
     */
    export const nativeHandle: Uint8Array | undefined;
  }
}

这专门添加是为了微软认证的采用MSAL,以便我们将原生句柄传递给操作系统,使其能够在VS Code上显示身份验证对话框。

如果您对 nativeWindowHandle 提议有任何使用案例或反馈,请在这个 GitHub 问题中告诉我们您的想法!

工程

优化的扩展更新,通过vscode-unpkg服务

为了减少市场基础设施的负担,VS Code 现在使用了新增加的端点vscode-unpkg服务用于检查扩展更新。该服务实现了服务器端缓存,TTL为10分钟,这显著减少了直接请求Marketplace的数量。优化通过以下方式进行控制

extensions.gallery.useUnpkgResourceApi
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
设置(默认启用)。

如果您注意到扩展更新的问题,您可以禁用此功能

extensions.gallery.useUnpkgResourceApi
  • 在 VS Code 中打开
  • 在 VS Code Insiders 中打开
, 并恢复到直接的市场版本检查。

在编辑器中为GPU加速打基础

我们很高兴地宣布,我们已经开始在编辑器中实现GPU加速,类似于终端。 这项工作的目标主要是通过减少输入延迟和提高滚动性能来改善整体编码体验。

这还为时尚早,尚未准备好进行测试,但我们想分享一些已经取得的进展细节:

  • GPU 渲染器在幕后使用 WebGPU。
  • 我们目前的工作重点是功能的完整性和正确性,而不是性能。
  • 启用GPU加速时,有一种回退机制,允许在不完全支持的情况下,线条“回退”到DOM渲染。这意味着我们可以早期自托管,并且当前不兼容的线条将使用DOM方法显示。一些当前回退的线条示例:超过200个字符的线条、带有某些Monaco装饰的线条(例如,淡化的未使用变量)、换行的线条等。
  • Monaco 的内联装饰允许对包含字符的元素进行样式设置,这为该功能带来了巨大挑战,因为它们是使用 CSS 进行样式的。我们采用的支持大多数内联装饰而不破坏或更改 API 的方法是检测附加到这些装饰的 CSS,然后支持一组常见的 CSS 属性,如果不能支持所有样式则回退。

这是该功能运行的截图。注意 gutter 中的黄色线告诉我们哪些行正在使用回退渲染。这个特定的情况是因为 不显示参数具有内联装饰,但未使用:

GPU 渲染目前与 DOM 渲染看起来基本相同,通过 DOM 渲染的行会显示一条黄色线。

跟踪此工作的事项是#221145,该事项有频繁的更新和更多关于进展的详细信息。

macOS 10.15 的 EOL 警告

VS Code桌面版将在接下来的几个里程碑中更新到Electron 33。随着Electron 33的更新,VS Code桌面版将不再支持macOS Catalina。在这个里程碑中,我们为受影响平台的用户添加了弃用通知,以准备他们的迁移。如果您是上述操作系统版本的用户,请查看我们的常见问题以获取更多信息。

重要修复

  • 233915 通过使用上下文菜单中的 复制链接 动作在扩展视图中的扩展中与他人分享扩展。
  • 231542 经常无法保存文件或文件数据会在错误 EBUSY 时被擦除
  • 233304 onDidChangeCheckboxState损坏于1.95
  • 232263 优化树视图,以便将跨进程调用批量处理
  • 156723 在使用wayland运行时,拖放支持问题已修复

谢谢

最后但同样重要的,向VS Code的贡献者们致以深深的谢意

问题跟踪

对我们的问题跟踪的贡献:

拉取请求

贡献于Visual Studio Code输入:

贡献于vscode-emmet-helper输入:

贡献于vscode-eslint输入:

贡献于vscode扩展示例输入:

贡献于vscode扩展遥测输入:

贡献于vscode-十六进制编辑器输入:

贡献于vscode-json-languageservice输入:

贡献于vscode-jupyter输入:

贡献于vscode-mypy输入:

贡献于vscode- Python调试器输入:

贡献于vscode-python-tools-extension-template输入:

贡献于vscode测试网页输入:

贡献于创新更新器输入:

贡献于语言服务器协议输入: