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的发布版本。这个版本有很多更新,我们希望你会喜欢,其中一些主要亮点包括:
- GitHub Copilot 免费版 - 使用 GitHub Copilot 免费计划
- 覆盖模式 - 在编辑器中切换覆盖或插入模式
- 粘贴时添加导入 - 粘贴代码时自动添加缺失的 TS/JS 导入
- 测试覆盖 - 快速过滤特定测试覆盖的代码
- 移动视图 - 可以轻松地在主侧栏和次侧栏之间移动视图
- 终端连字 - 在终端中使用连字
- 扩展允许列表 - 配置哪些扩展可以在您的组织中安装
- 与 Copilot 调试 - 使用
Copilot-调试终端命令启动调试会话 - 聊天上下文 - 将符号和文件夹添加为聊天上下文和编辑
- 从聊天转到 Copilot 编辑 - 切换到 Copilot 编辑以应用聊天中的代码建议
如果您想在线阅读这些发行说明,请访问 更新 页面 code.visualstudio.com。 内部用户: 想尽快尝试新功能吗?您可以下载 内部用户 每夜构建版本,并在最新更新可用时立即尝试。
GitHub Copilot
GitHub Copilot 免费计划
我们很高兴地宣布GitHub Copilot 全新免费计划。注册GitHub Copilot 免费计划,您只需要一个 GitHub 账户。您每月有固定的完成次数和聊天互动次数,每月重置。
您可以在 VS Code 内直接注册。请按照 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-调试终端命令,通过 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 关于您当前打开的工作区,我们首先需要将工作区缩小到一组相关的代码片段,然后将其作为上下文传递给 Copilot。如果您的工作区由 GitHub 仓库支持,我们可以通过使用 Github 代码搜索快速找到这些相关的片段。然而,由于代码搜索索引跟踪的是您的仓库的主分支,我们不能在本地更改或在分支上时依赖它。
在这个里程碑中,我们努力将 Github 搜索的性能优势带给分支和拉取请求。这意味着我们现在同时搜索基于你仓库主要分支的远程索引和任何本地更改的文件。然后我们将这些结果合并在一起,为 Copilot 提供快速且最新的片段集。你可以阅读更多关于 Github 代码搜索及其启用方法。
无障碍
代码操作无障碍信号
一些代码操作可能需要很长时间才能完成,例如快速修复调用外部服务生成图像描述。可能不明显何时触发或何时完全应用。因此,我们添加了无障碍信号来指示代码操作被触发或应用。
您可以启用这些信号
REPL中的自动对焦管理
我们引入了一个新的设置,以在REPL中提高可访问性。通过
无), 移动到输入框 (输入), 或者切换到最近执行的单元格 (上次执行) 每次代码执行时。默认情况下,焦点会移动到输入框。
工作台
改进的扩展搜索结果
当您在扩展视图中使用自由文本搜索扩展时,已安装的扩展现在会出现在搜索结果的顶部。这使得在市场中搜索时更容易找到和管理已安装的扩展。

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

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

在资源管理器中查找改进
在九月的发布中,我们引入了在整个项目中于资源管理器中查找文件的功能,这是之前不可用的功能。然而,这次更新暂时移除了高亮模式并限制了某些操作。
在此次发布中,我们重新引入了高亮模式。这个功能允许您轻松找到工作区中的文件和文件夹,并将匹配的结果高亮显示以提高可见性。此外,我们还在折叠的文件夹上引入了一个新的视觉指示器,显示其中是否隐藏了匹配项。
过滤器切换功能仍然可用,使您能够仅关注符合查询的文件和文件夹,同时隐藏不匹配的项目。我们还重新启用了在之前版本中必须禁用的所有上下文菜单操作。
我们还改进了使用查找控件的用户体验。当滚动到文件资源管理器的顶部时,会在顶部创建额外的空间,确保控件不会遮挡您的搜索结果。

在主侧栏和次侧栏之间移动视图
您已经可以通过拖放或使用移动视图命令将视图容器移动到其他位置。现在,您可以直接在视图容器上使用“移动到”上下文菜单操作,将其移动到主侧边栏、次侧边栏或面板区域之间。
在标题区域隐藏导航控件
有些人喜欢尽可能保持标题区域的整洁。我们添加了一个新设置
您还可以通过在标题区域右键单击并选择导航控件来访问此设置。

编辑器
配置粘贴和拖放行为
当你将文件拖放到文本编辑器中或复制并粘贴文件时,VS Code 提供多种方式将文件插入到该文件中。默认情况下,VS Code 会尝试插入文件相对于工作区的路径。现在你可以使用拖放/粘贴控制来切换资源的插入方式。扩展程序也可以提供自定义编辑,例如在 Markdown 中,提供插入 Markdown 链接的编辑。
随着新的
"编辑器粘贴偏好设置": [
"绝对路径"
]
这些设置是编辑类型的有序列表。默认情况下,首选类型的第一个匹配编辑会被应用。在默认编辑应用之后,您仍然可以使用拖放控制更改到其他类型的编辑。
这些新设置与我们的新复制和粘贴支持JavaScript和TypeScript中的导入很好地配合。此功能在跨JavaScript或TypeScript文件复制代码时会自动添加导入。为了避免干扰您的工作流程,我们决定默认情况下粘贴只是插入纯文本和粘贴与导入在粘贴控制中提供了一个选项。然而,如果你希望 VS Code 始终尝试在导入时粘贴,请设置:
"editor.pasteAs.preferences": [
"文本更新导入"
]
现在,VS Code 在可能的情况下会自动尝试使用导入进行粘贴,如果无法进行带有导入的粘贴编辑,则会回退到粘贴纯文本。目前,这仅适用于 JavaScript 和 TypeScript,但我们希望随着时间的推移,其他语言也会采用支持。
最后,您现在在设置时也可以指定首选粘贴样式编辑器操作粘贴为键绑定。以下的键绑定将始终尝试粘贴并更新导入:
{
"键": "ctrl+shift+v",
"命令": "编辑器操作粘贴为",
"参数": {
"偏好设置": ["文本.更新导入"]
}
}
持久编辑器查找历史记录
查找控制现在可以跨会话持久化搜索历史记录,并在 VS Code 重启时恢复。搜索历史记录按工作区存储,可以通过以下方式禁用
覆盖模式
你知道吗,除非你安装了Vim键映射,VS Code不支持在编辑器中覆盖文本。应广大需求,我们现在在编辑器中添加了覆盖模式,以便在输入时覆盖文本而不是插入文本。这个有用的场景是编辑Markdown表格时,你希望保持表格单元格边界整齐对齐。
此模式可以通过命令 视图:切换覆盖/插入模式 或使用您的键盘上的 插入 键进行切换。当您处于覆盖模式时,状态栏会显示一个 概述指示器。
在覆盖模式下,可以使用该设置更改光标样式。
源代码管理
Git 责任信息(实验性)
这个里程碑,我们已经添加了通过编辑器装饰和状态栏项显示责任信息的实验性支持。你可以通过使用
您可以自定义在编辑器和状态栏中显示的消息格式
{
"git.blame.editorDecoration.template": "${主题}, ${作者姓名} (${作者日期前})"
}
如果您想调整编辑器装饰的颜色,请使用git.blame.editorDecorationForeground主题颜色。
尝试这个实验性功能并告诉我们你的想法。
源代码控制图标题操作
根据用户反馈,我们已将“拉取”和“推送”操作重新添加到源控制图视图标题栏。如果当前历史项引用显示在源控制图中,则这些操作将被启用。
如果您不想使用这些操作,或 Source Control Graph 视图标题栏的任何其他操作,您可以右键单击标题栏并将其隐藏。

笔记本电脑
跨单元格选择高亮
现在在笔记本中支持选择突出显示,允许在多个单元格之间基于文本选择进行突出显示。这由现有的设置控制。
多重光标:选择所有匹配的出现位置
笔记本现在支持键盘快捷键 选择所有匹配的查找。这可以通过命令 id 找到笔记本全选查找匹配 并且可以默认使用快捷键 ⇧⌘L (Windows, Linux Ctrl+Shift+L)。
运行节中的单元格以生成Markdown
笔记本现在在Markdown单元格的单元格工具栏中暴露出在节中运行单元格操作。如果Markdown单元格有标题,则执行该节中包含的所有单元格和子节中的所有单元格。如果没有标题,则尽可能执行周围节中的所有单元格。
单元格执行时间详细程度
单元格状态栏中的执行时间信息现在有一个选项来增加详细程度。这可以通过设置启用。

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

为了使用此功能,请确保您还使用支持连字的字体
用于定制终端标签的新变量
终端标签上显示的文本由终端.集成.标签.标题和终端.集成.标签.描述设置允许使用变量集合。我们现在支持以下新变量:
-
${壳类型}- 检测到终端中使用的 shell 类型。这类似于默认值,但它不会更改为吉特例如,运行git命令时。 -
${shellCommand}- 在终端中运行的命令。这需要壳集成。
-
${shellPromptInput}- 在终端中运行的命令或当前检测到的提示输入。这需要shell集成。
立即运行最近的命令现在显示历史源文件
最近命令运行 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"]
}
}
最后,如果你希望完全禁用粘贴与导入,你可以使用
远程开发
这些远程开发扩展允许您通过SSH或远程隧道,或Windows子系统 for Linux(WSL)使用开发容器,作为功能齐全的开发环境。
亮点包括:
远程-SSHCopilot聊天参与者- 增强会话日志记录
您可以在远程开发发布说明中了解更多有关这些功能的信息。
企业支持
配置允许的扩展名
您现在可以使用以下方法控制哪些扩展可以安装在 VS Code 中
- 允许或阻止所有来自出版商的扩展
- 允许或阻止特定扩展名
- 允许特定的扩展版本
- 允许特定的扩展版本和平台
- 仅允许扩展的稳定版本
- 仅允许来自出版商的稳定扩展版本
以下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 上支持预安装扩展。
请按照以下步骤进行扩展初始化:
-
创建文件夹
引导\扩展在 VS Code 安装目录。 -
下载 VSIX 文件 以预安装您想要的扩展,并将它们放置在
引导\扩展文件夹。 -
当用户第一次启动 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:选择 TypeScript 版本...命令。
Microsoft Account 现在使用 MSAL(在 Windows 上支持 WAM)
为了确保 Microsoft 认证的强安全基线,我们在 Microsoft 帐户扩展中采用了 Microsoft 认证库。
这项工作的突出特点之一是WAM(Web Account Manager... 也称为Broker)集成。简单来说,不再需要通过浏览器进行Microsoft身份验证流程,我们现在可以直接与操作系统通信,这是获取Microsoft身份验证会话的推荐方式。此外,它更快,因为我们能够利用您已经在操作系统上登录的账户。

如果您发现此新流程有任何问题,请告知我们。如果您确实发现重大问题并需要恢复到旧的 Microsoft 认证行为,您可以这样做。
经典,重启 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 的代理支持获取应用程序编程接口
全球获取函数现在带有代理支持(
对不起,我无法访问特定的网页内容。如果你能提供具体的文本内容,我可以帮助你进行翻译。模块,已经具有代理支持。
预览功能
粘贴代码以附加聊天上下文
之前,你已经可以将文件作为上下文附加到 Copilot Chat 中。为了对上下文进行更精细的控制,你现在可以粘贴代码片段以将其作为聊天的上下文。这会添加必要的文件信息和相应的行号。你只能粘贴来自当前工作区的文件中的代码。
要尝试这个功能,请复制一些代码并粘贴到内联聊天、快速聊天或聊天视图中。选择出现的粘贴控制并选择粘贴的代码附件。或者,您可以设置
"编辑粘贴偏好设置": [
"聊天附加文本"
]

更多 shell 的终端补全
我们在中增加了对终端补全的支持pwsh在之前的版本中。这次发布,我们已经开始扩展到其他外壳。具体针对巴什和zsh目前是这样,但由于这种新方法是由扩展主机 API 支持的,我们计划对大多数 shell 提供通用支持。
您可以通过设置尝试当前的开发版本
光盘,代码,和代码内幕参数是支持的。

提议的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的数量。优化通过以下方式进行控制
如果您注意到扩展更新的问题,您可以禁用此功能
在编辑器中为GPU加速打基础
我们很高兴地宣布,我们已经开始在编辑器中实现GPU加速,类似于终端。 这项工作的目标主要是通过减少输入延迟和提高滚动性能来改善整体编码体验。
这还为时尚早,尚未准备好进行测试,但我们想分享一些已经取得的进展细节:
- GPU 渲染器在幕后使用 WebGPU。
- 我们目前的工作重点是功能的完整性和正确性,而不是性能。
- 启用GPU加速时,有一种回退机制,允许在不完全支持的情况下,线条“回退”到DOM渲染。这意味着我们可以早期自托管,并且当前不兼容的线条将使用DOM方法显示。一些当前回退的线条示例:超过200个字符的线条、带有某些Monaco装饰的线条(例如,淡化的未使用变量)、换行的线条等。
- Monaco 的内联装饰允许对包含字符的元素进行样式设置,这为该功能带来了巨大挑战,因为它们是使用 CSS 进行样式的。我们采用的支持大多数内联装饰而不破坏或更改 API 的方法是检测附加到这些装饰的 CSS,然后支持一组常见的 CSS 属性,如果不能支持所有样式则回退。
这是该功能运行的截图。注意 gutter 中的黄色线告诉我们哪些行正在使用回退渲染。这个特定的情况是因为 不显示参数具有内联装饰,但未使用:

跟踪此工作的事项是#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输入:
- @a-stewart (Anthony Stewart):添加在侧边栏和面板标题及视图之间添加边框的支持PR #157318
- @aravind-n (Aravind Nidadavolu):修正 fish 壳集成执行顺序PR #226589
- @BABA983 (BABA):在markdownDescription中修正了ShellIntegrationDecorationsEnabledPR #233387
- @BenLocal (benshi): Cli serve_web 将路径前缀设置为 /
输入:- /, 提交值解析错误PR #233986 - @BlackHole1 (Kevin Cui):修复:在 Windows 中无法打开 vscode 时使用 vscode-win32-x64PR #233285
- @BugGambit (Fredrik Anfinsen):添加对链接“foo”的支持,
' PR #231775 - @cachandlerdev:复制扩展链接PR #234210
- @CrafterKolyan (尼古拉·科罗廖夫):为扩展API的快速选择添加值选择界面PR #233275
- @davidmartos96 (David Martos):修复使用Fish时PATH前缀的问题PR #232291
- @dibarbet (David Barbet):不要在 C# 中将内插标记为字符串PR #232772
- @duncpro (Duncan):修复:创建新文件/文件夹按钮的可点击性PR #232130
- @elias-pap (Elias Papavasileiou):功能:添加 Vite 的图标PR #234620
- @gjsjohnmurray (约翰·默里)
- 添加
工作台.视图.静默显示设置对象以停止扩展揭示隐藏的输出视图(修复 #105270)PR #205225 - 修复
转到当前历史项目破损 (修复 #235063) PR #235067 - 启用
转到当前历史项目参考拾取器更改后正确处理 (修复 #235132) PR #235134
- 添加
- @iisaduan (Isabel Duan):修复 typescript organizeImports 设置PR #232676
- @jeanp413 (Jean Pierre):修复了在浏览器中重新加载vscode网页标签后旧的extensionHost进程没有立即被杀死的问题PR #234944
- @Kannav02 (Kannav Sethi):将“Organize Imports”命令标签更改为“Optimize Imports”PR #232869
- @LionelJouin (Lionel Jouin):修复:更新 go 语法 (#_232142) PR #232335
- @LitoMore (LitoMore):移除与微软相关的标志公关 #215758
- @Logicer16 (Logicer):修正启动时活动描述的语法PR #197536
- @RedCMD (RedCMD):添加
.winget文件扩展名到 YAML PR #232218 - @ribru17 (Riley Bruins):将JSDoc示例渲染为typescript代码PR #234143
- @sandersn (Nathan Shively-Sanders):撤销注册Copilot相关PR #233729
- @nickdiego (Nick Yamane):修复在使用wayland时的拖放支持Chromium CL
贡献于vscode-emmet-helper输入:
- @onlurking (Diogo Felix):为 emmet 添加缺失的 HTML 标签 PR #90
贡献于vscode-eslint输入:
贡献于vscode扩展示例输入:
- @olguzzar (Olivia Guzzardo):更新聊天教程以使用request.modelPR #1125
- @phil294 (Philip Waritschlager): webview-codicons: 将 codicons 依赖从 devDependencies 移动到 dependencies PR #1005
- @witsaint (高挺强):修复:
lsp-嵌入式语言服务清洁间隔参数类型 PR #1126
贡献于vscode扩展遥测输入:
- @kmagiera (Krzysztof Magiera):传播会话ID元数据 PR #215
贡献于vscode-十六进制编辑器输入:
- @Antecer (Antecer):我们需要一个所见即所得的复制方法PR #540
- @Hexa3333 (Alp Yılmaz):修复:DisplayContextSelection读取违规 (#_547)PR #548
- @jogo-:更新CHANGELOG.md PR #549
- @tomilho (Tomás Silva):修复:大写锁定激活时无法使用ctrl+fPR #555
贡献于vscode-json-languageservice输入:
- @jeremyfiel (Jeremy Fiel):修复:中的拼写错误
然后描述 PR #251 - @Legend-Master (Tony):修复缓慢的大对象oneof验证PR #247
- @sumimakito (Makito):功能增强(完成):支持来自 schema 的详细信息PR #243
贡献于vscode-jupyter输入:
- @gjsjohnmurray (约翰·默里):添加
connor4312.esbuild-问题-匹配器推荐 PR #16195 - @pwang347 (Paul):为内核后初始化添加公共API事件PR #16214
贡献于vscode-mypy输入:
- @hamirmahal (哈米尔·马哈尔):修复:解决由报告的开发依赖项问题
npm 审计公关 #327 - @taesungh (黄泰成):使用全局设置
忽略模式默认PR #325
贡献于vscode- Python调试器输入:
贡献于vscode-python-tools-extension-template输入:
贡献于vscode测试网页输入:
- @Cecil0o0 (hj):VS Code 主分支已移回 npm,我们可以抓住它PR #148
贡献于创新更新器输入:
- @BlackHole1 (Kevin Cui):修复:当静音为真时,对话框显示PR #29
贡献于语言服务器协议输入:
- @EwanDubashinski (伊万·杜巴欣斯基):添加了 PL/SQL 语言服务器的链接 PR #2057
- @gquerret (吉勒斯·奎雷特):将 OpenEdge ABL 添加到语言服务器列表中 PR #2056
- @orbitalquark:为 Textadept 添加了客户端实现的链接。PR #2058