现已发布!阅读关于 11 月新增功能和修复的内容。

2023 年 7 月 (版本 1.81)

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

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


欢迎来到 Visual Studio Code 2023 年 7 月的版本。此版本包含许多更新,我们希望您会喜欢,其中一些主要亮点包括:

如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新页面。

内测版:想尽快尝试新功能?您可以下载每晚的内测版构建,并尽快尝试最新的更新。

辅助功能

辅助功能视图改进

打开辅助功能视图⌥F2(Windows Alt+F2,Linux Shift+Alt+F2)命令允许屏幕阅读器用户逐个字符、逐行检查内容。在上一个迭代中,我们为编辑器悬停和聊天面板响应添加了辅助功能视图。

现在,通知、内联聊天响应、Jupyter Notebook 输出和工作台悬停都有了辅助功能视图。

当具有辅助功能视图的元素获得焦点时,将在 ARIA 标签中提供提示。该提示可以通过 `accessibility.verbosity` 设置按功能禁用。

显示辅助功能视图中的下一个⌥](Windows、Linux Alt+])和显示辅助功能视图中的上一个⌥[(Windows、Linux Alt+[)命令,以便在聊天面板和通知列表中的元素之间轻松导航。

面包屑符号信息

使用聚焦和选择面包屑(`breadcrumbs.focusAndSelect`)命令后,面包屑导航现在包含屏幕阅读器的符号信息。

输入控件和结果导航一致性

通过使用(⌘↓(Windows、Linux Ctrl+Down)和(⌘↑(Windows、Linux Ctrl+Up),在输入控件(例如搜索或过滤器输入)与其结果之间导航的体验在扩展视图、键盘快捷方式编辑器以及注释、问题和调试控制台面板之间保持一致。

可访问的 diff 查看器

在 diff 编辑器中,差异审查窗格已重命名为可访问的 diff 查看器。可访问的 diff 查看器解决了 diff 编辑器的可访问性不足的问题,可以通过 F7 或 diff 编辑器更多操作菜单中的打开可访问的 diff 查看器命令来打开。除了此重命名之外,我们还修复了一些错误并添加了一些新功能,例如能够从查看器启动辅助功能帮助对话框或跳转到已修改的编辑器。

配置文件

支持部分配置文件

您现在可以创建一个配置文件,仅在该配置文件中自定义部分配置(设置、键盘快捷方式、片段、任务和扩展)。例如,您可以创建一个不包含键盘快捷方式但包含所有其他配置的配置文件,当该配置文件处于活动状态时,VS Code 将应用默认配置文件的键盘快捷方式。

在下面的创建新配置文件截图中,键盘快捷方式未选中,并显示了使用默认配置文件的消息。在此 VS Code 会话期间活动的任何键盘快捷方式都不会应用于新配置文件。

Create New Profile dropdown with keyboard shortcuts unchecked

您还可以通过使用从...复制下拉菜单,在从配置文件模板或现有配置文件复制时创建部分配置文件。

Create a profile by copying from a Project Template or existing profile

您还可以通过在编辑配置文件 UI 中编辑现有配置文件,使其使用默认配置文件的配置。

Edit Profile dropdown with Keyboard Shortcuts unchecked

导出部分配置文件时,您可以选择仅导出配置文件中自定义的配置,或同时包含默认配置文件的配置。

Profile view with Keyboard Shortcuts unchecked and Export button visible

将设置应用于所有配置文件

您现在可以通过在设置编辑器中选择将设置应用于所有配置文件选项,将某个设置应用于所有配置文件。

Apply Setting to all Profiles context menu item in the Settings editor

这将将该设置的值应用于所有配置文件。从此配置文件的任何更新都将应用于所有配置文件。您可以通过取消选中将设置应用于所有配置文件选项来撤销此同步。

将扩展应用于所有配置文件

您现在可以通过在扩展视图中选择将扩展应用于所有配置文件选项,将某个扩展包含在所有配置文件中。

Apply Extension to all Profiles context menu item in the Extensions view

这将使该扩展在所有配置文件中可用。您可以通过取消选中将扩展应用于所有配置文件选项来撤销此操作。

非默认配置文件上的设置 JSON 文件命令 ID 已调整

当用户处于非默认配置文件中时,首选项:打开用户设置 (JSON)(`workbench.action.openSettingsJson`)命令现在将打开特定于配置文件的设置 JSON 文件。要显示应用程序范围的设置,请改用首选项:打开应用程序设置 (JSON)(`workbench.action.openApplicationSettingsJson`)命令。

工作台

即将更新的发行说明

每当每月的稳定版更新准备好安装时,您现在可以通过活动栏底部的管理菜单(齿轮按钮)中的显示更新发行说明命令来预览发行说明。

编辑器

`markdown.editor.pasteUrlAsFormattedLink` 设置现在有一个新选项 `smart`。`smart` 粘贴功能可以检测您何时粘贴到可能不希望自动进行 Markdown 链接格式化的文本中。`smart` 粘贴忽略的一些情况包括在 Markdown 链接内粘贴、覆盖另一个 Markdown 链接以及在代码块内粘贴。

默认情况下,`pasteUrlAsFormattedLink` 功能当前处于关闭状态(`never`),但您可以将其设置为 `smart` 或 `always`(始终创建格式化的 URL 链接)。

异步标记化推出

1.76 更新中,我们在 Web Worker 上实现了编辑器文档的异步标记化,以提高渲染器进程的性能。自那时以来,我们修复了由罕见竞争条件引起的几个错误,并在此版本中,我们开始向稳定版用户推出此功能。

如果您不想等待,可以将 `editor.experimental.asyncTokenization` 设置为 `true` 以立即获得异步标记化。

Diff 编辑器

在此迭代中,我们继续对新的 diff 编辑器进行工作,并计划逐步向稳定版用户推出。您可以通过将 `"diffEditor.experimental.useVersion2": true` 设置来立即试用。新的 diff 编辑器包含以下描述的几个新功能和错误修复。

折叠未更改的区域

使用 `diffEditor.experimental.collapseUnchangedRegions` 在新的 diff 编辑器中启用隐藏未更改的区域。在审查具有大量未更改行的长 diff 时,此功能很有用。

隐藏行的块的边框可以拖动或单击以从底部或顶部显示文本。

A screenshot of the "Collapse Unchanged Regions" feature in the new diff editor

Diff 区域对齐

新的 diff 编辑器现在可以对齐 diff 区域内的文本,使得审查缩进已更改且行已插入的 diff 更加容易。

之前(未启用 diff 区域对齐和空格 diffing)

A side by side diff without diff region alignment

之后(启用 diff 区域对齐)

A side by side diff with diff region alignment

新的 diff 算法现已默认启用

我们已完成新 diff 算法的推出,该算法现在是 VS Code 中的默认设置。您可以在之前的发行说明中阅读有关算法改进的信息。

Diff 噪声抑制

在此更新中,我们在新的 diff 算法中添加了启发式方法,以减少匹配不相关单词的概率。

这是 diff 编辑器之前的样子(请注意 `this` 在两边是如何匹配的,即使匹配没有帮助)

Before using the new diff algorithm

这是现在具有启发式改进的外观(请注意,不相关的匹配减少了)

After using the new diff algorithm heuristics

切换侧边

使用新的 diff 编辑器的并排视图时,现在有一个新的命令Diff Editor: Switch Sides,允许您在两侧之间跳转。切换侧边时,光标位置和活动编辑器中的当前选择会映射到另一侧。

还有更多

请查看 1.80 发行说明,了解关于新 diff 编辑器中已更改内容的更详细描述!

终端

内联终端标签中的自定义悬停

当只有一个终端时显示的面板内联终端标签现在使用自定义悬停,以获得更一致的外观并支持嵌入式链接。

Hovering the inline terminal tab will show information about the terminal

源代码管理

根据社区反馈,现在支持使用 `rev-parse` Git 命令(版本 `2.31` 中添加的 `--path-format` 选项)的 Git 存储库,这些存储库在其路径中有符号链接。从这个版本开始,所有源代码管理功能(例如,源代码管理视图、存储库检测、已添加/已修改/已删除行编辑器装饰等)在打开此类存储库时都应该按预期工作。

调试

JavaScript 调试器

支持 Fast Node (Version) Manager

JavaScript 调试器现在在其运行时版本中支持 Fast Node Manager (fnm)。fnm 用户现在可以设置 `launch.json` 的 `runtimeVersion` 属性来选择 Node.js 版本。

Notebook

已关闭 Notebook 的富内容搜索

在之前的版本中,我们为打开的 Notebook 引入了富内容工作区搜索。现在有预览支持,也可以查看已关闭 Notebook 的富内容结果。

当您在搜索视图中搜索文本时,来自 Notebook 的结果预览应与您打开 Notebook 编辑器时的字符串外观匹配。请注意,这仅在 Notebook 关闭时显示输入的结果。要尝试此功能,请在设置中启用 `search.experimental.closedNotebookRichContentResults`。

大型流式输出的性能改进

我们对执行期间流式传输的大型单元格输出了性能改进。这减少了渲染活动量,但目前仅适用于可滚动单元格输出。

Notebook 粘滞滚动

此版本带来了 Notebook 编辑器的“粘滞滚动”的第一个迭代。“粘滞滚动”显示在 Notebook 编辑器顶部,显示当前可见的单元格或单元格输出的 Markdown 标题。选择粘滞滚动“行”会聚焦该单元格,使您能够快速导航 Notebook。此功能通过 `notebook.stickyScroll.enabled` 设置或视图:切换 Notebook 粘滞滚动命令启用。

Web 版 VS Code

始终加载内置扩展的最新版本

vscode.dev 现在始终加载内置扩展的最新版本。这意味着当您打开 vscode.dev 时,将不再看到“需要重新加载”的通知来将内置扩展更新到最新版本。

远程开发

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

亮点包括:

  • 从 VS Code 将 Remote Tunnels 安装为服务。
  • 简化了 @devcontainers/cli 的安装。
  • 在锁定文件中记录 Dev Container 功能依赖项。

您可以在 Remote Development 发行说明中了解新扩展功能和错误修复。

对扩展的贡献

GitHub Copilot

快速聊天 UX 改进

本迭代对快速聊天体验进行了改造。

与之前一样,您可以使用 ⇧⌥⌘L(Windows、Linux Ctrl+Shift+Alt+L 来切换此视图。具体改进包括:

  • 对话式聊天:快速聊天体验现在显示您的完整对话,同时仍然聚焦最后一个问题和答案。
  • 斜杠命令补全:当您键入 `/` 时,现在有斜杠命令的补全。

此外,还有一个实验性设置 `chat.experimental.defaultMode`,用于控制显示聊天内容的哪些部分。它有三个选项:

  • chatView - 在活动栏中显示聊天图标,在聊天视图中启动聊天(默认)。
  • quickQuestion - 在标题栏中显示聊天图标,以启动快速聊天。
  • both - 显示两个聊天图标,允许您打开任一聊天 UI。

我们想听听您对此设置以及总体快速聊天体验的看法,因此请随时 打开 issue 提供反馈。

斜杠命令改进

我们对面板、内联和快速聊天中的斜杠命令进行了以下可用性改进:

  1. 斜杠命令现在呈现为块,并且可以通过按一次退格键删除。
  2. 接受来自建议列表的斜杠命令(例如 `/clear` 和 `/help`)现在会执行该命令,从而无需在接受补全后显式提交聊天请求。
  3. `/createWorkspace` 面板聊天斜杠命令会在第一次在问题中使用后重新填充到聊天输入中,方便您对工作区提出后续问题。

以下录屏演示了所有三个改进。

迭代修复

在使用 `/fix` 命令时,您可以通过设置 `github.copilot.editor.iterativeFixing` 来启用迭代修复。当启用迭代修复时,如果第一次修复后,选区中仍有诊断错误,则修复将再次运行。此设置默认启用。

Notebook 生成改进

在生成 Notebook 时,有额外的步骤来提高生成代码的质量,并修复由语言扩展检测到的生成代码中的诊断。此功能默认禁用,但可以通过以下设置启用:

"github.copilot.notebook": {
  "iterativeFixing": true,
  "iterativeImproving": true
}

内联聊天

在使用内联聊天时,您现在可以通过设置 `inlineChat.showDiff` 来启用和禁用 diff 视图。您可以右键单击内联聊天以显示上下文菜单来更改此设置。

终端上下文

Copilot Chat 现在了解活动终端的缓冲区和选区。

Python

容错 pytest 发现

作为我们新测试架构推出的一部分,测试资源管理器面板现在支持容错 pytest 发现。当 pytest 在发现过程中抛出可以处理的错误时(例如,来自未知导入的错误),除了包含错误的文件的所有其他测试仍将被发现。此功能仅在新测试重写中可用,该重写仍处于实验阶段。重写目前对 100% 的 Insiders 用户和 25% 的稳定版用户有效,但很快将普遍采用。在此期间,您可以通过 `pythonTestAdapter` 设置选择加入或退出。

用于运行带参数文件的调试器配置

新的 Debugpy 扩展现在提供了带参数的 Python 文件 `launch.json` 配置,这在您想要为 Python 文件提供不同输入值而无需在每次运行时修改代码或调试器配置时非常有用。

要使用此配置,请确保您已安装 Debugpy 扩展。按 ⇧⌘D(Windows、Linux Ctrl+Shift+D 打开运行和调试视图,然后选择创建 launch.json 文件或齿轮图标以访问 `launch.json` 文件。选择Debugpy,然后从可用配置中选择Python: File with Arguments

现在,当您想调试(F5)需要命令行参数的 Python 文件时,会出现一个提示,允许您输入要传递给 Python 文件的所需参数。

输入参数后,按 Enter,调试器将启动,让您逐步调试代码。

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

Python 扩展 API 的 npm 包

Python 扩展现在提供了一个 npm 包,使其他扩展作者更容易访问和跟踪 Python 扩展 API 的更改。查看 @vscode/python-extension npm 模块以使用用户计算机上可用的 Python 环境。

Python 扩展的 Dev Container

现在有一个用于 Python 扩展的 Dev Container,它使用 Microsoft 官方 Node.js 镜像。使用这个 自定义 dev container,用户可以在 GitHub Codespace 中打开 Python 扩展仓库,并立即开始开发和测试 Python 扩展,无需安装。Python 版本 3.7、3.8、3.9、3.10 和 3.11 已预装,因此用户可以使用 pyenv 轻松切换 Python 版本。

Jupyter

连接到 Codespace 上的 Jupyter 服务器

github.dev 上处理 Jupyter Notebook 时,您现在可以通过内核选择器连接到运行在 GitHub Codespace 实例上的 Jupyter 服务器。

使用未提交的更改继续操作

您可以通过选择 Notebook 工具栏中的继续操作按钮切换到底层的 codespace,并且工作区中任何未提交的更改都将被带到 codespace。

GitHub 拉取请求和议题

GitHub Pull Requests and Issues 扩展取得了更多进展,它允许您处理、创建和管理拉取请求和问题。在此迭代中,我们专注于更新创建视图,使其更简洁、更有用。

创建视图的改进包括:

  • 该视图尝试检测 PR 的最佳可能基础分支,而不是始终使用默认分支。
  • 您可以从创建视图为您的 PR 添加审阅者、分配者、标签和里程碑。
  • 默认情况下,您上次的“创建选项”(例如,草稿或自动合并)将被记住。
  • 该视图的性能大大提高。
  • 您可以在发布分支之前查看 diff。
  • 发布分支后,您还可以查看提交(这即将为未发布的分支提供)。

GitHub Pull Request and Issues extension Create view

请查阅扩展的0.70.0 版本变更日志 changelog,了解其他亮点。

GitHub 身份验证

注销时撤销 GitHub OAuth 令牌

以前,当您在 VS Code 中注销 GitHub 帐户时,它只会从安全存储中删除 OAuth 令牌。令牌仍然有效,能够向 GitHub 的 API 发出请求。为了提高令牌管理的安全性,我们现在尝试在后端删除令牌,使令牌在注销后不再有效。

扩展创作

将 revealSetting 和 focusSearch 添加到 IOpenSettingsActionOptions

扩展现在可以将 `revealSetting` 对象和 `focusSearch` 布尔值传递给接受 `IOpenSettingsActionOptions` 参数的命令,例如 `workbench.action.openSettingsJson`。

例如,以下命令

vscode.commands.executeCommand('workbench.action.openSettingsJson', {
  revealSetting: { key: 'editor.renderWhitespace' }
});

打开用户设置 JSON 文件,然后显示 `editor.renderWhitespace` 设置(如果存在)。

新的 TestController.invalidateTestResults 方法

测试扩展可以调用新的 `TestController.invalidateTestResults` 方法来向用户表明一个或多个测试的任何结果可能不再适用。例如,扩展可能会执行类似以下操作:

onFileChange(uri => {
  // invalidate tests in a file when a file changes:
  testController.invalidateTestResults(getTestsInFile(uri));
});
onConfigurationChange(() => {
  // invalidate results for all tests:
  testController.invalidateTestResults();
});

Kerberos 身份验证用于网络代理

使用 `https` Node.js 模块的扩展现在可以使用需要 Kerberos 身份验证的网络代理。本地计算机需要配置 Kerberos,但扩展不需要执行任何操作即可使用此功能。

在自动选择的服务主体名称不起作用的情况下,用户可以通过 `http.proxyKerberosServicePrincipal` 设置提供一个。

Kerberos Service Principal setting

QuickPickItem 中的图标已最终确定

`QuickPickItem` 中图标的 API 已最终确定。您现在可以使用 `iconPath` 属性在 `QuickPickItem` 中显示图标。

A quick pick with GitHub avatars as the item icons

工程

通过名称重整缩小 VS Code

最近的一项工程工作将 VS Code 的装载 JavaScript 的大小减小了 20%。在 《通过名称混淆缩小 VS Code》博文中,您可以了解 VS Code 工程师 Matt BiernerJohannes Rieken 如何研究标识符名称混淆以优化代码大小,并通过 TypeScript 找到有效的解决方案。

更多的 pty host 改进

上个月对 pty host 的改进之后,已进行了以下改进:

  • 性能
    • pty host 现在仅在需要时启动,因此从不打开终端的用户将节省大约 50-100 MB。
    • 进一步并行化终端重新连接,加快终端初始化速度。
    • 终端输出消息现在被缓冲,减少了从 pty host 和托管终端的窗口之间传输的流量。
  • 诊断
    • 在跟踪日志级别下会记录每个进程之间的延迟统计信息。
    • 窗口 ID 将记录在终端输出通道的所有日志中。
    • Pty host RPC 日志记录现在会记录因异常而失败的响应。

值得注意的修复

  • 133542 连接到错误的终端
  • 168021 JavaScript 调试器中更好的对象补全
  • 184894 无法在终端中单击并拖动滚动条

感谢

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

问题跟踪

对我们问题跟踪的贡献

拉取请求

vscode 的贡献

vscode-extension-samples 的贡献

vscode-hexeditor 的贡献

  • @lorsanta
    • 修复:按下 Home 键时滚动到顶部 PR #448
    • 修复:切换标签组时更新选择计数。PR #449

vscode-js-debug 的贡献

vscode-pull-request-github 的贡献

vscode-vsce 的贡献

inno-updater 的贡献

language-server-protocol 的贡献

monaco-editor 的贡献

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