– 代理会话日,2月19日

2024年6月 (版本 1.91)

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

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


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

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

辅助功能

编辑器悬停的可访问视图

为了提高编码时的可访问性,可访问视图可访问性帮助菜单现在可以呈现编辑器悬停信息的全部内容。根据悬停的焦点部分,它们会显示有关焦点部分的信息或整个悬停内容。

Accessible View showing the contents of the editor hover information.

为了使链接与工作区中的普通文本更容易区分,您可以启用设置 accessibility.underlineLinks 以对链接进行下划线。

The run and debug view showing a mix of regular text and underlined links.

工作台

我们添加了一个新的设置 search.ripgrep.maxThreads,它使您可以限制 ripgrep 搜索引擎使用的线程数。无论搜索是由核心产品还是通过扩展 API 使用,此设置都适用。

search.ripgrep.maxThreads 设置为非零值以配置线程数。请谨慎操作,因为将此设置固定为特定值可能会降低 ripgrep 的速度。

调整猜测允许的编码

通过新的设置 files.candidateGuessEncodings,您可以配置在启用 files.autoGuessEncoding 时应考虑的一组编码。配置的顺序决定了优先级。此功能使您可以将可以检测到的可能的编码限制为更小的集合,并优先考虑一种编码而不是另一种编码。

配置文件编辑器预览

在本里程碑中,我们引入了一个新的配置文件编辑器,使您可以从一个地方管理 配置文件。此体验包括创建新配置文件、编辑和删除现有配置文件以及导入和导出配置文件以与他人共享。在创建新配置文件时,您可以预览配置文件并在保存之前根据需要进行自定义。配置文件编辑器还使您可以使用特定配置文件打开新窗口,或将配置文件设置为新窗口的默认配置文件。

Profiles Editor showing all user profiles and their settings.

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

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

试用一下,并告诉我们如何改进此体验。

使用配置文件菜单项的新窗口

除了配置文件编辑器之外,我们还在“文件”菜单中添加了操作,以使用特定配置文件打开新窗口。使用 文件 > 使用配置文件打开新窗口 菜单以使用特定配置文件打开新窗口。

Screenshot of the File menu showing the New Window with Profile menu items.

扩展安装选项

我们添加了更多选项,以便在安装扩展时获得更大的灵活性

  • 安装扩展时不进行同步。
  • 安装扩展的特定版本。 之前,您必须先安装扩展的最新版本,然后才能选择特定版本。

这些操作可在“扩展”视图中扩展的上下文菜单中获得

Context menu for the Extensions view, showing the additional install actions.

访问自定义标签中的文件扩展名

当您定义 自定义标签时,您现在可以使用 ${extname(N)} 语法更灵活地访问单个文件扩展名。 此外,${extname(N)} 还支持负索引以捕获反向顺序的文件扩展名。 要获取整个文件扩展名,请使用 ${extname}

例如,对于文件 tests/editor.test.ts

  • ${filename} => editor
  • ${extname} => test.ts
  • ${extname(0)} => ts
  • ${extname(1)} => test
  • ${extname(-1)} => test
  • ${extname(-2)} => ts

合并来自多个扩展的自定义标签模式

当两个扩展在它们的 configurationDefaults 中为设置 workbench.editor.customLabels.patterns 贡献默认配置时,贡献的模式将合并在一起。

"workbench.editor.customLabels.patterns" : {
  "**/app/**/page.tsx": "${dirname} - Page",
  "**/app/**/layout.tsx": "${dirname} - Layout"
}
"workbench.editor.customLabels.patterns" : {
  "**/components/**/index.tsx": "${dirname} - Component"
}
扩展 1 的默认贡献 扩展 2 的默认贡献
"workbench.editor.customLabels.patterns" : {
  "**/app/**/page.tsx": "${dirname} - Page",
  "**/app/**/layout.tsx": "${dirname} - Layout",
  "**/components/**/index.tsx": "${dirname} - Component"
}
生成的自定义标签模式

取消设置主题颜色

如果主题设置了您不喜欢的颜色或边框,您现在可以使用 default 将其设置回原始值

  "workbench.colorCustomizations": {
      "diffEditor.removedTextBorder": "default"
  }

更改折叠占位符颜色

折叠占位符(省略号)现在可以使用颜色 editor.foldPlaceholderForeground 进行主题设置。

编辑器

保存时代码操作

使用 editor.codeActionsOnSave 设置,您可以配置在保存文件时自动应用的 Code Actions 集合,例如组织导入。 我们通过根据您的工作区文件和活动扩展提供可用 Code Actions 的列表来改进配置此设置的 IntelliSense。

注意:请注意,虽然 truefalse 目前仍然是有效的配置,但它们将被弃用,以支持 explicitalwaysnever。 请参阅 Code Actions on Save 文档 以获取示例。

快速关闭只读文件状态

如果您通过 files.readonlyInclude 设置将文件配置为只读,现在可以从只读编辑器消息快速切换关闭文件的只读状态。

Read-only editor message enabling you to toggle the read-only status.

源代码管理

传入/传出更改图预览

我们一直在探索使用传入和传出更改的替代可视化方式。 此里程碑包括一项实验性功能,该功能使用图形可视化传入和传出更改。 该图形包含当前分支、当前分支的上游分支以及可选的基本分支。 图形的根是这些分支的共同祖先。

您可以使用 scm.experimental.showHistoryGraph 设置启用此新的可视化效果。 试用一下,并告诉我们您的想法,因为我们将继续改进和扩展此可视化效果中提供的功能。

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

Notebook

在文本选择中查找

Notebook 查找控件现在具有用于文本选择和单元格选择的“在所选内容中查找”。 默认情况下启用此行为,可以通过控件内的按钮进行控制。 根据您的选择上下文,切换此按钮会将您的查找查询限定为一个或多个选定的单元格或单元格内的行。

从上下文菜单复制或打开文本输出

在使用 Notebook 中的文本输出时,现在可以使用文本输出的上下文菜单来复制输出值或在新编辑器中打开输出。 此功能使您更易于查看大型流式输出。

终端

支持复制和粘贴转义序列 (OSC 52)

现在支持操作系统命令 (OSC) 52 转义序列。 任何在终端中运行的程序都可以使用它,但主要用例是 tmux 的剪贴板访问。

新的自定义字形

终端现在支持分支、行号和锁 Powerline 符号的自定义字形。 就像我们支持的 其他自定义字形 一样,这些符号在启用 GPU 加速 时无需配置字体即可工作。

Characters 0xe0a0, 0xe0a1 and 0xe0a2 render with their Powerline symbols.

当调整字体大小、行高或字母间距时,这些符号也与单元格完美缩放。

The new symbols scale vertically and horizontally when a custom font size, line height or letter spacing is used.

调试

JavaScript 调试器

JavaScript 调试器现在显示悬停在变量上以及内联值(通过 debug.inlineValues 设置启用)中被遮蔽变量的正确值,基于程序的范围。

JavaScript code snippet that shows an overlay with the value of shadowed variables.

主题:Codesong(在vscode.dev上预览)

语言

TypeScript 5.5

我们现在包含 TypeScript 5.5。 此主要更新带来了许多新的语言功能和工具改进。 请查看 TypeScript 5.5 博客文章 以获取有关此版本的详细信息。

正则表达式的语法检查

感谢 TypeScript 5.5,我们现在报告 JavaScript 和 TypeScript 正则表达式字面量中的许多语法错误。 这包括未关闭的组、不正确的反向引用或无效的转义等错误

Editor showing a regex error for an invalid group caused by an extra parenthesis.

Editor showing a regex error for an invalid escape sequence

请查看 TypeScript 5.5 博客文章以获取更多详细信息

对扩展的贡献

GitHub Copilot

紧凑的内联聊天

内联聊天渲染现在更加紧凑,这使得阅读和理解建议更加容易。 我们还在试验一种更具叙述性的按钮样式,您可以通过 inlineChat.experimental.textButtons 启用它。

Sample of more compact inline chat in the editor.

终端初始提示

终端中显示一个新的提示,以帮助发现内联聊天。

The terminal will say "Press Ctrl+I to ask GitHub Copilot to do something. Start typing to dismiss"

只有在安装了 Copilot 扩展并且只有一个没有进行任何交互的终端时,才会显示此提示。可以通过右键单击该提示永久将其关闭。首次使用终端内联聊天后,该提示也会自动关闭。

应用代码块

在“聊天”视图中代码块上的“在编辑器中应用”命令使用语言模型来确定将更改应用于当前编辑器的最佳方法。

Chat view showing the Apply In Editor command for a code block in a chat response.

Python

使用 python-environment-tools 发现 Python 环境

我们很高兴推出一个新的工具,python-environment-tools,旨在显著提高检测全局 Python 安装和 Python 虚拟环境的速度。该工具使用 Rust 以确保快速准确的发现过程。

我们目前正在测试此新功能,将其与现有支持并行运行,以评估 Python 扩展中的新发现性能。因此,您将看到一个新的日志记录通道,名为 Python Locator,它显示使用此新工具的发现时间。

此增强功能是我们持续努力优化 VS Code 中 Python 支持的性能和效率的一部分。访问 python-environment-tools 仓库,了解有关此功能、正在进行的工作以及提供反馈的更多信息。

原生 REPL 中的智能发送

Python 扩展现在已在 VS Code 原生 REPL 中启用了 智能发送

以前,当您将光标放在 Python 代码行上并按下 Shift+Enter 时,Python 扩展会将确切的行内容发送到原生 REPL,即使它会失败,例如因为它是一条多行命令的一部分。

现在,Shift+Enter 在非嵌套场景中发送最小的可执行代码,或在嵌套场景中发送最高级别的代码块。这使用户能够快速地在整个文件中按 Shift+Enter,以最少的努力运行尽可能多的可执行代码。

对 reStructuredText 文档字符串的支持

Pylance 现在支持在悬停时渲染 reStructuredText 文档字符串 (docstrings)!

此功能仍处于早期阶段,目前在标志后面,因为我们正在努力确保它有效地处理各种 Sphinx、GoogleDoc 和 Epytext 场景。要试用它,您可以启用实验设置 python.analysis.supportRestructuredText

Docstring displayed when hovering over the panel module.

尝试此更改,并在 Pylance GitHub 仓库 上报告任何问题或反馈。

注意:此设置是实验性的,并且可能会在未来删除,因为我们稳定此新功能并默认启用它。

GitHub 拉取请求和议题

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

  • 已签出的 PR 的 提交 子树中显示提交日期。
  • 许多错误修复。

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

ESLint

ESLint 扩展现在支持 扁平化配置文件格式。该扩展仍然支持 eslintrc 文件,您可以使用 eslint.useFlatConfig 设置来控制使用哪种配置文件格式。

请参阅 ESLint 扁平化配置推出计划,以了解 ESLint 弃用和删除对 eslintrc 文件格式支持的计划。

扩展创作

聊天和语言模型 API

上个月,我们完成了使扩展能够参与聊天并访问语言模型的 API,但它们仅在 VS Code Insiders 中可用。在此版本中,这些 API 现在在 VS Code Stable 中完全可用。

查看我们的 公告博客文章,了解有关这些 API 的更多信息,并了解一些早期采用者如何使用它们。

要开始使用,请访问我们的 扩展示例聊天可扩展性文档

对象设置的默认值处理

当多个扩展为相同的对象设置贡献默认值时,这些默认值现在将合并。这可以防止扩展之间的冲突。

最终确定了 DebugSessionOptions.testRun API

从测试运行启动调试会话的扩展现在可以将该运行传递到调用 vscode.debug.startDebugging 时的 DebugSessionOptions 中。当传递时,诸如重新启动调试会话之类的生命周期操作也会创建一个新的测试运行。

调试适配器协议

调试适配器协议 进行了一些值得注意的更改

  • 通过新的 Scope.presentationHint = returnValue 选项表示返回值。
  • evaluate 请求中添加了源位置。VS Code 实现了这一点,并在评估悬停和内联值时传递位置。

提议的 API

用于语言模型的工具和函数

我们添加了一个 API 提案,该提案支持调用工具或函数。该 API 包含两个主要部分

  1. 扩展能够注册“工具”。工具是一段旨在由语言模型使用的功能。例如,读取文件的 Git 历史记录。

  2. 语言模型支持工具的机制,例如:扩展在发出请求时传递工具、语言模型请求工具调用以及扩展传回工具调用的结果。

该提案可以在 vscode.proposed.lmTools.d.ts 中找到。

注意:该 API 仍在积极开发中,并且会发生变化。此外,预计 VS Code 将附带合理的默认工具。

身份验证 getSessions 现在是 getAccounts

虽然我们支持多帐户身份验证提供程序,但一直缺少的是获取所有会话并对特定会话采取行动的能力。 以前,我们有一个 getSessions API 提案试图解决这个问题,但在实验和借鉴流行的身份验证库的启发下,我们采取了一种不同的方法来解决这个问题。

我们放弃了以前提出的 getSessions API,转而采用一种将“帐户”和“会话”的概念分开的方法。

希望使用身份验证会话的扩展作者可以运行以下代码来获取用户登录的帐户的 AuthenticationSessionAccountInformation

const accounts = vscode.authentication.getAccounts('microsoft');

然后,您可以使用这些帐户为这些帐户创建会话

const session = vscode.authentication.getSession('microsoft', scopes, {
  account: accounts[0]
});

注意:要使此工作,身份验证提供程序需要处理一个新参数,您可以在下面的 API 提案中阅读有关该参数的信息

我们认为这是一种更清晰的处理多个身份验证会话的方式,并且能够处理我们以前无法支持的各种场景。

该提案可以在 vscode.proposed.authGetSessions.d.ts 中找到,该提案使用了此提案的先前名称,以避免破坏依赖于此提案的现有代码。

评论线程显示

我们添加了一个 API 提案,该提案使提供评论的扩展能够在其编辑器中显示自己的评论线程。此 API 提供了在显示线程时是保留焦点还是将焦点置于线程的回复框中的选项。

该提案可在 vscode.proposed.commentReveal.d.ts 处获得。

可归因测试覆盖率

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

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

工程

将 NLS 与 AMD 加载器分离

在此里程碑中,我们开始删除 VS Code 中核心本机语言支持 (NLS) 与我们提供的异步模块定义 (AMD) 加载器的依赖关系。我们未来的目标是使用 ECMAScript 模块 (ESM) 加载并完全放弃 AMD。为了朝着这个方向取得进展,我们删除了 AMD 加载器插件依赖项。您不应该注意到任何行为上的差异,并且我们过去支持的所有翻译仍然在 Web 和桌面中得到支持。

值得注意的修复

感谢

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

问题跟踪

对我们问题跟踪的贡献

拉取请求

vscode 的贡献

vscode-css-languageservice 的贡献

vscode-extension-samples 的贡献

vscode-html-languageservice 的贡献

vscode-languageserver-node 的贡献

vscode-python-tools-extension-template 的贡献

node-jsonc-parser 的贡献

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