现已发布!了解 11 月份的新功能和修复。

2024 年 7 月(1.92 版本)

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

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

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


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

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

辅助功能

改进的调试体验

辅助功能帮助对话框

我们为“运行和调试”视图和“调试控制台”添加了辅助功能帮助对话框。当任一视图获得焦点时,您会获得有关打开辅助功能帮助对话框的提示。通过设置 accessibility.verbosity.debug 配置此提示。

调试控制台辅助功能视图

运行命令 打开辅助功能视图⌥F2 (Windows Alt+F2,Linux Shift+Alt+F2)以逐字符、逐行检查调试控制台内容。

屏幕阅读器优化模式下,现在启用设置 debug.autoExpandLazyVariables,以便轻松访问变量值。

当在“调试控制台”中评估表达式时,现在会向屏幕阅读器用户播报其值。

动态监视变量播报

当启用屏幕阅读器进行调试时,您现在会在监视变量值更改时听到通知。使用 accessibility.debugWatchVariableAnnouncements 进行配置。

配置键绑定操作

在上一个里程碑中,我们引入了一个操作,用于在辅助功能帮助对话框中配置未分配的键绑定。我们现在添加了 配置已分配的键绑定 命令(⌥A (Windows、Linux Alt+A)来补充此操作。

工作台

将面板移动到顶部

现在可以将面板移动到工作台的顶部,编辑器区域的上方。默认情况下,面板放置在底部,包括终端、“输出”面板和“调试控制台”等视图。此增强功能补充了将面板定位到左侧、右侧和底部的现有选项。

配置文件编辑器预览

在此里程碑中,我们继续改进配置文件编辑器,使其更加用户友好,并具有与设置编辑器一致的外观和风格。

Profiles Editor showing all user profiles and their settings.

配置文件编辑器作为 workbench.experimental.enableNewProfilesUI 设置背后的实验性功能提供。启用后,您可以从窗口左下角的“设置”齿轮图标访问配置文件编辑器。

Settings menu showing the Profiles menu item to open the Profiles Editor.

覆盖现有配置文件

现在可以通过创建具有相同名称的新配置文件来覆盖现有配置文件,包括默认配置文件。

改进的扩展更新体验

我们对扩展更新体验进行了一些改进,以便您可以更好地控制扩展更新,并更轻松地管理扩展的自动更新。

自动更新所有扩展

我们已将“扩展”视图标题区域中的全局扩展自动更新操作更改为 为所有扩展启用自动更新为所有扩展禁用自动更新 操作。使用这些操作,您可以一次性为所有扩展启用或禁用自动更新。

Manage Auto Updating Extensions.

自动更新单个扩展

我们通过始终显示启用或禁用扩展自动更新的操作来改进了单个扩展自动更新体验。这使得管理扩展的自动更新更加容易。

Auto update configuration per extension.

禁用通过 VSIX 安装的扩展的自动更新

当您通过 VSIX 安装扩展时,默认情况下会禁用该扩展的自动更新。这使您可以处理已安装的扩展版本,而无需自动更新它。

更好地控制扩展更新

当您将没有可执行代码的已安装扩展版本更新为具有可执行代码的版本时,现在需要用户同意。这使您可以在应用此类更新之前查看它们。以下视频演示了将没有代码的扩展更新到具有代码的版本时的体验。

选择 查看 按钮会在浏览器中打开扩展更改日志或扩展存储库。您可以查看更改,然后决定是否要更新扩展。

修复了设置编辑器跳转问题

“设置”编辑器过去在修改设置后会跳转,并将焦点更改为另一个设置。而且,修改设置前滚动得越多,此跳转就越严重。我们更改了“设置”编辑器在修改后重新渲染设置的方式,“设置”编辑器在修改设置后不再跳转。

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

设置的 URL 处理

VS Code 现在可以处理格式为 vscode://settings/setting.name 的“settings”URL(Insiders 为 vscode-insiders://settings/setting.name,OSS 版本为 code-oss),并将打开“设置”编辑器以显示指定的设置。如果未提供设置,则仍会打开“设置”编辑器。当在发行说明中使用带有设置 URL 的锚标记,并且在 VS Code 中打开了发行说明时,我们将执行特殊处理和渲染,如前面的 codesetting 功能中所述。

Setting URL in release notes

新的设置 workbench.externalBrowser 使您可以配置用于打开链接的浏览器。默认情况下,使用操作系统标准浏览器。您可以在每个工作区级别配置此设置,并且还启用了“设置同步”。

将浏览器可执行文件的完整路径指定为设置值。或者,为了确保跨设备正常运行,您还可以使用浏览器别名,例如 edgechromefirefox

Configure the browser to open links.

禁用拖放时自动打开文件

以前,将文件拖放到资源管理器中也会自动在编辑器中打开它。在某些情况下,这可能是不需要的。新的设置 explorer.autoOpenDroppedFile 使您可以切换此行为。默认情况下,拖放文件时会继续打开该文件,但设置为 false 时,将禁用此行为。

编辑器

代码灯泡控件改进

有时,代码灯泡控件可能会阻止编辑器中的代码。为了解决这个问题,我们为代码灯泡控件引入了一种改进的启发式方法,当没有空间时,会在装订线中显示代码灯泡,而不是阻止编辑器中的代码。

Lightbulb overlaps with code (left) versus positioned in the gutter (right).

您可以使用 editor.lightbulb.enabled 设置在编辑器中切换代码灯泡控件。

差异编辑器

聊天中更紧凑的差异

我们在“聊天”视图/内联聊天中迭代了差异编辑器布局,并使其更加紧凑。

之前:

Previous diff editor layout, which is less compact.

之后:

More compact diff editor layout.

源代码管理

传入/传出更改图

在此里程碑中,我们将启用使用图表可视化传入和传出更改。该图包含当前分支、当前分支的上游分支以及可选的基础分支。该图的根是这些分支的共同祖先。

我们对历史记录项悬停进行了一些改进

  • 启用了多选以查看属于同一分支的多个历史记录项中的更改。
  • ... 菜单添加了选项,以过滤来自远程/基础分支的历史记录项。
  • 添加了提取、拉取和推送历史记录项的操作。

试用一下,让我们知道您的想法!

您可以通过切换 scm.showHistoryGraph 设置来禁用传入/传出更改的图形可视化。

Source control view showing a graph visualization of the incoming and outgoing changes.

终端 shell 集成

每次源代码控制操作以及针对特定文件/文件夹的文件系统事件后,都会刷新“源代码管理”视图。当在集成终端中执行 git 命令时,命令完成和“源代码管理”视图刷新之间可能存在延迟。为了减少这种延迟,从本里程碑开始,我们正在使用终端 shell 集成 API 来检测在集成终端中执行的各种 git 命令(例如,addcheckoutcommitfetchpullpush 等)是否成功完成,并刷新“源代码管理”视图。

笔记本

多单元格注释

笔记本编辑器现在支持一次性切换一个或多个单元格上的注释。要执行此操作,请选择一个或多个单元格容器,然后使用键盘快捷键 ⌘/ (Windows,Linux Ctrl+/)

终端

新的滚动条

终端中的滚动条现在看起来就像编辑器中的滚动条一样

The terminal scroll bar now looks just like the editor's scroll bar

概览标尺与之前相同,左侧显示成功命令,中间显示查找结果,右侧显示失败命令。但现在它与滚动条滑块完美对齐。

调试

调试时显示变量类型

当设置 debug.showVariableTypes 打开时,VS Code 现在会在调试时显示变量的数据类型。

Show variable data types in the Variables section while debugging.

语言

VS Code 现在可以通过更新任何复制和粘贴文本中的链接来帮助您在 Markdown 文档之间移动文本节。使用此功能,VS Code 会修复所有相对路径链接、引用链接以及所有具有相对路径的图像/视频,以便它们在新文档中正常工作。

每当您在两个 Markdown 文件之间复制和粘贴带有链接的文本时,此功能就会生效。如果有可以更新的链接,您将在粘贴后看到粘贴小部件。选择“粘贴并更新粘贴的链接”,VS Code 会为您修复链接。

您可以通过将 markdown.updateLinksOnPaste 设置为 false 来完全禁用此功能。

在 CSS 中粘贴和拖放文件

您需要在 CSS 中使用图像吗?现在,您只需将图像文件拖放到 CSS 编辑器中,或复制并粘贴图像文件,即可快速插入 url() 引用。

远程开发

远程开发扩展使您可以使用 Dev 容器、通过 SSH 或 远程隧道 连接的远程计算机,或者 适用于 Linux 的 Windows 子系统 (WSL) 作为功能齐全的开发环境。

亮点包括

  • GPG keyboxd 支持
  • 本地端口范围配置

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

扩展的贡献

GitHub Copilot

Copilot Chat 的 GPT-4o 升级

我们已将 Copilot Chat 视图从 GPT-4-Turbo 升级到 GPT-4o,这是 OpenAI 迄今为止最强大的模型。我们的实验表明,GPT-4o 显著增强了 Copilot 的编码能力,可以直接在您的编辑器中提供更快、更准确、更高质量的代码和解释。这在推广期间很明显,因为开发人员越来越多地使用 Copilot Chat 视图并采纳了更多的代码建议。

我们正在不断尝试确定适合不同任务的最佳模型,在平衡性能和功能的同时,致力于质量、安全性和安全性。有关 GitHub Copilot 中采用 GPT-4o 的更多详细信息,请查看 GitHub 的更新日志

在聊天中匹配公共代码

您可以允许 GitHub Copilot 返回可能与 GitHub.com 上公开提供的代码匹配的代码。当为您的 组织订阅个人订阅启用此功能后,Copilot 代码完成已经为您提供了有关检测到的匹配项的详细信息。我们正在努力使您也可以在 Copilot Chat 中看到这些公共代码匹配项。

我们正在逐步为 Copilot Chat 用户推出此功能。一旦为您的机器启用此功能,您可能会在响应末尾看到一条消息,其中包含“查看匹配项”链接。如果您选择该链接,将打开一个编辑器,向您显示匹配的代码引用的详细信息。

Chat code referencing example.

聊天请求中的附件

Copilot Chat 支持通过“附加上下文”(⌘/ (Windows, Linux Ctrl+/)) 命令向您的聊天请求添加显式附件。这些现在作为提交的聊天请求的一部分呈现在聊天历史记录中。选择文件附件将在编辑器中打开相应的文件和范围。

Attachments in chat requests

此外,我们现在可以更清楚地了解何时大型显式附件溢出上下文窗口,从而部分或完全从请求中省略。

Warning and hover for large attachments

/new 的改进

我们更新了 /new 斜杠命令以支持快速文件生成。您可以使用聊天变量(例如 #selection)在文件或项目创建期间向 Copilot 提供额外的上下文。此外,还增强了 /new,使其能够在现有工作区中保存生成的文件和文件夹。

Create a new single file with /new in Copilot Chat.

从聊天访问 VS Code 命令

@vscode 聊天参与者上的新斜杠命令 /runCommand 使您可以搜索和执行核心 VS Code 命令。例如,要切换开发人员工具

Toggle Developer Tools with the /runCommand slash command in Copilot Chat.

您可以使用 github.copilot.chat.runCommand.enabled 启用此新斜杠命令。

Python

使用 python-environment-tools 改进了 Python 发现

在上一版本中,我们宣布了 Python 环境工具,该工具重新设计了以性能为中心的 Python 发现基础设施。这种方法减少了执行 python 二进制文件以探测信息的需求,从而提高了性能。

从本版本开始,我们将作为实验的一部分推出此增强功能。如果您有兴趣尝试此功能,可以在您的用户 settings.json 中将 "python.locator" 设置为 "native",然后重新加载 VS Code 窗口。访问 python-environment-tools 存储库,以了解有关此功能、正在进行的工作并提供反馈的更多信息。

显示本机 REPL 的执行状态

实验性本机 REPL ("python.REPL.sendToNativeREPL": true) 现在会显示成功/失败 UI,类似于 Jupyter 单元格中的 UI,具体取决于执行结果。此外,我们还进行了改进,以便不再在不生成输出的单元格上显示空行。

源代码中的内联变量值

Python 调试器扩展引入了内联值功能,以增强您的 Python 调试体验。借助内联值,您可以在调试会话期间在编辑器中、在相应代码行的旁边查看变量的值。这有助于您快速了解程序的状态,而无需将鼠标悬停在变量上或查看“运行和调试”视图中的“变量”部分。

Show Python Inline Variables.

要启用此功能,请在您的用户设置中将配置值 debugpy.showPythonInlineValues 设置为 true

注意:此功能目前处于探索状态,仍在进行改进。请在 vscode-python-debugger 存储库中提供您可能有的任何反馈!

改进的调试欢迎视图

当 Python 文件在编辑器中打开时,“调试欢迎”视图现在包含一个用于快速访问自动 Python 配置的按钮。

GitHub 拉取请求和问题

GitHub 拉取请求扩展方面取得了更多进展,该扩展使您能够处理、创建和管理拉取请求和问题。新功能包括

  • 通过使用已合并的 PR 的拉取请求描述中的“还原”按钮来还原拉取请求
  • 现在可以在“拉取请求”视图中查看其分支已删除的 PR。
  • 即使您检出了多个 PR,“在 GitHub.com 上打开拉取请求”操作也会显示。

查看扩展的 0.94.0 版本更新日志,了解其他亮点。

扩展创作

网络代理的基本身份验证

使用 https Node.js 模块的扩展现在可以使用需要基本身份验证的网络代理。

预览功能

真正的内联差异

在此迭代中,我们引入了 diffEditor.experimental.useTrueInlineView 设置(默认情况下关闭)。当您启用此设置并使用内联视图时,单行更改将以内联方式呈现

True Inline View in the diff editor.

这就是在未启用此实验性标志的情况下,内联视图的外观

Default Inline View in the diff editor.

此功能是实验性的,预计未来会有更改。

PowerShell 的 VS Code 原生 IntelliSense

此版本中,VS Code 原生 PowerShell IntelliSense 实验性功能取得了一些重大改进。要在 Windows 或 macOS 上启用此功能

"terminal.integrated.suggest.enabled": true

除了该功能更加可靠之外,还进行了许多其他改进,如下所示。

完成项不会被截断

完成项现在会准确显示键入的内容,而不是截断的版本。例如,在搜索目录名称时,现在会包含 .\ 并且会正确突出显示。

之前:

Before the completion for "src" would show "src"

之后:

After the completion for "src" would show ".\src"

针对目录导航优化的完成项

目录名称现在包含尾部的 \/,当完成时,这将刷新新目录的完成项。

配置 Enter 行为

新的 terminal.integrated.suggest.runOnEnter 设置使您可以配置 Enter 行为,以便在满足某些条件时运行命令。以下值可用

  • "always":始终在 Enter 上运行。
  • "exactMatch":当完成项完全键入时,在 Enter 上运行。
  • "exactMatchIgnoreExtension"(默认):当完成项完全键入或键入文件时(不包含其扩展名),在 Enter 上运行。
  • "never"(旧行为):永远不在 Enter 上运行。

此项更改尤为重要,因为它不会打破现有的肌肉记忆,因为启用此功能后,通常会产生与未启用该功能时相同的按键操作。一个有用的例子是运行 cd .. 命令。 在此更改之前,你需要输入 cd ..<回车><回车>,但现在只需一个 回车,这要归功于这个新设置。

改进的文件补全

文件补全现在按照文件名长度升序、文件名字母顺序,然后是文件扩展名字母顺序进行排序。作为命令(而不是参数)运行的文件补全现在也得到了提升,具体取决于其文件扩展名和当前操作系统。例如,在 Windows 上运行时,.ps1.bat.cmd 文件会被提升,使其在列表中显示得更高。

Results are now sorted by extensions with platform-specific boosts

这些更改不仅提高了顶部项目的相关性,还有助于肌肉记忆,使行为更接近于原生 PowerShell 的 Tab 补全。例如,在 Windows 上的 VS Code 代码库中常用的命令是 ./scripts/code.bat。 通过这些更改,./sc<Tab>/c<回车> 将完成并运行 ./scripts/code.bat

全局补全缓存

命令的全局补全在会话之间缓存,这显著提高了 shell 启动性能。这还修复了重新连接的终端补全无法正常工作的问题。目前,可以通过运行 终端: 清除建议缓存 命令来清除和刷新这些缓存。在 Intel i7-12700KF 上测量,这使得激活 shell 集成的时间从约 600 毫秒减少到约 50 毫秒。

PowerShell 中的内置终端补全

我们现在为 git 提供了内置补全。这些补全基于 posh-git 项目,但进行了一些通用和 VS Code 特有的改进。以下是一个补全的示例:

其他一些改进包括:

  • 别名在其右侧显示其展开状态

    Aliases show their expanded state on the right

  • 分支、标签、储藏和远程仓库的 Git 特定图标

    Branches and tabs have their own icon beside the completions

  • 右侧的子命令描述

    Subcommands like 'checkout' show their description on the right

我们还为 codecode-insiders 提供了内置补全,尽管这些补全非常基础,将在未来的版本中进行改进。

code now shows basic completions for everything in code --help

这些补全可能会与其他 PowerShell 模块中的补全冲突。你可以使用以下设置禁用它们:

"terminal.integrated.suggest.builtinCompletions": {
  "pwshCode": false,
  "pwshGit": false
}

TypeScript 5.6 支持

此版本包含对即将发布的 TypeScript 5.6 版本的支持。查看 TypeScript 5.6 迭代计划,了解此版本中的详细内容。

要开始使用 TypeScript 5.6 的预览版本,请安装 TypeScript Nightly 扩展。分享你的反馈,并告诉我们你是否遇到 TypeScript 5.6 的任何错误。

提议的 API

QuickInputButtonLocation 在输入框右侧显示按钮

在此里程碑中,我们在 QuickInputButton 上引入了一个建议的 API,使扩展可以选择按钮的呈现位置。选项包括:

  • Title:这会在快速选择的标题栏中呈现按钮。这是默认行为,并保持按钮的现有行为。
  • Inline:这会在输入框的右侧呈现按钮。如果你不打算将标题栏用于任何用途,但又想显示按钮,这将非常有用。

此功能已在 Git 扩展的创建分支输入框中采用,你可以使用 git.branchRandomName.dictionary 启用它。

查看 vscode#221397 以获取更多信息和更新。

测试增强

将代码与测试关联

我们正在开发一个 API,使扩展能够将代码与测试关联起来,反之亦然。这允许用户在两者之间跳转,并启用诸如在光标处运行测试等操作,使其也可以在实现代码中工作。我们预计随着 API 的发展,会构建更多的体验。

查看 vscode#126932 以获取更多信息和更新。

测试失败中的调用堆栈

我们正在开发一个 API,使能够将丰富的调用堆栈与单元测试失败相关联。这使户能够一目了然地看到哪些代码导致了失败。

查看 vscode#214488 以获取更多信息和更新。

可归因的测试覆盖率

我们正在开发一个 API,用于在每个测试的基础上归因测试覆盖率。这使户能够查看哪些测试运行了哪些代码,从而过滤编辑器中显示的覆盖率以及测试覆盖率视图中的覆盖率。

查看 vscode#212196 以获取更多信息和更新。

搜索 API

在过去的几个月中,我们一直在致力于最终确定三个建议的搜索 API:

  • FindTextInFiles:使用 VS Code 的文本搜索在工作区文件中查找文本。
  • FileSearchProvider:为自定义文件方案提供文件搜索结果,这些文件方案无法使用 VS Code 现有的搜索功能正确搜索。例如,当从虚拟文件系统内的快速打开中搜索时,扩展提供的结果可能会显示。
  • TextSearchProvider:类似于 FileSearchProvider,但用于文本搜索结果。例如,当从虚拟文件系统内的搜索视图中搜索时,扩展提供的结果可能会显示。

此外,我们正在改进 workspace.findFiles API,它使用 VS Code 的工作区文件搜索来查找文件。新版本应该允许更多选项,并且应该更清楚地处理排除选项。当我们推出改进后的版本时,现有的函数签名应该仍然可用。

此表说明了不同 API 之间的关系:

使用 API 查找 使用 API 提供结果
对于文件 FindFiles FileSearchProvider
对于文件中的文本 FindTextInFiles TextSearchProvider

如果你有兴趣,请访问上面的链接提供反馈!

网站

我们刷新了 VS Code 网站的设计,并添加了对浅色和深色主题的支持。

VS Code website light mode.

网站的新设计默认为你系统的浅色或深色模式主题,你也可以使用右上角的太阳/月亮图标手动切换。

VS Code website dark mode.

我们期待收到你的反馈!在 vscode-docs 存储库中提交任何功能请求或错误。

工程

将 Markdown 语言服务器移至单独的存储库

我们将为 VS Code 内置 Markdown IntelliSense 提供支持的语言服务器移到了 其自己的存储库中。以前,此项目是从主 VS Code 存储库的子文件夹中发布的。此更改使向项目贡献代码变得更容易。

该项目仍然以相同的名称在 npm 上发布:vscode-markdown-languageserver

在 VS Code 中使用 ESM 的进展

在此里程碑中,我们再次开始为 VS Code 核心采用 ESM 的工作。我们未来的目标是使用 ECMAScript 模块 (ESM) 加载并完全放弃 AMD。这是一项多里程碑的工作,它将使整体代码加载和捆绑现代化。

xterm.js 依赖于 VS Code

终端中的新滚动条需要大量的幕后工作。VS Code 中的终端基于 xterm.js OSS 项目构建,并且在其即将发布的版本中,还将提供 VS Code 代码库的一小部分,特别是 base/ 文件夹的一部分。

Electron 30 更新

在此里程碑中,我们将 Electron 30 更新推广到我们稳定版本的用户。此更新附带 Chromium 124.0.6367.243 和 Node.js 20.14.0。我们要感谢所有在 Insiders 版本上进行自我托管并提供早期反馈的用户。

关于生成 .bat.cmd 文件时中断 API 更改的通知

此 Electron 更新附带的 Node 版本包含一个 重大更改,以响应 CVE,如果你在 Windows 上执行 .bat.cmd 文件,可能会影响你。使用 shell 选项生成这些文件时,你可以遵循 Node.js 设置的指导方针

我们已经根据简单的源代码扫描主动通知了可能受影响的扩展,但我们可能遗漏了你的扩展。如果受到影响,在 Windows 上生成 .bat.cmd 文件时,你会遇到 EINVAL 异常。请参阅 Node.js 文档,了解如何处理这些问题。

我们建议扩展作者始终使用我们的 Insiders 版本 测试其扩展,以便提前发现这些更改。

值得注意的修复

  • 211199 启用平滑滚动后,在终端中按 Ctrl+c 不会滚动到最底部

感谢

最后但同样重要的是,非常感谢 VS Code 的贡献者。

问题跟踪

对我们的问题跟踪的贡献

拉取请求

vscode 的贡献

vscode-black-formatter 的贡献

vscode-hexeditor 的贡献

vscode-languageserver-node 的贡献

vscode-markdown-tm-grammar 的贡献

vscode-pull-request-github 的贡献

vscode-textmate 的贡献

debug-adapter-protocol 的贡献

language-server-protocol 的贡献

monaco-editor 的贡献

node-request-light 的贡献

python-environment-tools 的贡献