在 VS Code 中试试

2023 年 7 月 (版本 1.81)

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

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


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

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

内测版 (Insiders): 想尽快尝试新功能?您可以下载每晚发布的 内测版 (Insiders) 构建版本,并在最新更新发布后立即试用。

辅助功能

可访问视图改进

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

现在,通知、内联聊天响应、Jupyter 笔记本输出和工作台悬停都支持可访问视图。

当提供可访问视图的元素获得焦点时,ARIA 标签中会提供提示。此提示可以通过 accessibility.verbosity 设置针对每个功能禁用。

有**在可访问视图中显示下一个** (⌥] (Windows、Linux Alt+])) 和**在可访问视图中显示上一个** (⌥[ (Windows、Linux Alt+[)) 命令,以便在聊天面板和通知列表中轻松导航元素。

面包屑符号信息

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

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

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

可访问差异查看器

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

配置文件

支持部分配置文件

您现在可以创建一个配置文件,其中仅自定义部分配置(设置、键盘快捷方式、代码片段、任务和扩展)。例如,您可以创建一个包含除键盘快捷方式之外所有配置的配置文件,当此配置文件处于活动状态时,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 设置现在有了一个新选项 smartsmart 粘贴功能可以检测您何时粘贴到可能不需要自动 Markdown 链接格式化的文本中。smart 粘贴忽略的一些情况包括粘贴到 Markdown 链接内、覆盖另一个 Markdown 链接以及在代码块内粘贴。

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

异步分词推出

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

如果您不想等待,可以将 editor.experimental.asyncTokenization 设置为 true,立即获得异步分词功能。

差异编辑器

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

折叠未更改区域

使用 diffEditor.experimental.collapseUnchangedRegions 可以在新的差异编辑器中隐藏未更改的区域。此功能在审查包含大量未更改行的大型差异时非常有用。

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

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

差异区域对齐

新的差异编辑器现在会在差异区域内对齐文本,这使得审查缩进已更改和行已插入的差异变得更加容易。

之前(未启用差异区域对齐和空白差异)

A side by side diff without diff region alignment

之后(启用差异区域对齐)

A side by side diff with diff region alignment

新的差异算法现已默认启用

我们已完成新差异算法的推出,该算法现在是 VS Code 中的默认算法。您可以在过去的发行说明中阅读有关算法改进的一些内容。

差异降噪

在此次更新中,我们为新的差异算法添加了启发式方法,以减少匹配不相关单词的可能性。

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

Before using the new diff algorithm

这是应用启发式改进后的样子(请注意不相关的匹配项更少)

After using the new diff algorithm heuristics

切换侧边

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

更多内容

查看1.80 发行说明,了解新差异编辑器中更详细的更改说明!

终端

内联终端选项卡中的自定义悬停

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

Hovering the inline terminal tab will show information about the terminal

源代码管理

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

调试

JavaScript 调试器

支持 Fast Node (Version) Manager

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

笔记本

已关闭笔记本的富文本搜索

在之前的版本中,我们为打开的笔记本引入了富文本工作区搜索。现在有预览支持,可以为已关闭的笔记本显示富文本结果。

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

提高大型流式输出的性能

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

笔记本粘性滚动

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

VS Code 网页版

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

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

远程开发

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

亮点包括

  • 从 VS Code 安装远程隧道作为服务。
  • 简化 @devcontainers/cli 安装。
  • 在锁定文件中记录开发容器功能依赖项。

您可以在远程开发发行说明中了解新的扩展功能和错误修复。

对扩展的贡献

GitHub Copilot

快速聊天用户体验改进

本次迭代中,快速聊天体验已得到改进。

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

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

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

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

我们希望了解您对此设置和快速聊天体验的总体看法,因此请随时通过问题提供反馈。

斜杠命令改进

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

  1. 斜杠命令现在以块的形式呈现,并且可以通过一次退格键删除。
  2. 从建议列表中接受斜杠命令(例如 /clear/help)现在会立即执行命令,无需在接受补全后显式提交聊天请求。
  3. /createWorkspace 面板聊天斜杠命令在首次在问题中使用后会重新填充到聊天输入中,从而可以轻松询问有关工作区的后续问题。

以下录制演示了所有三项改进

迭代修复

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

笔记本生成改进

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

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

内联聊天

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

终端上下文

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:带参数的文件**。

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

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

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

Python 扩展 API 的 npm 包

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

Python 扩展的开发容器

现在,Python 扩展有一个使用 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 笔记本时,您现在可以通过内核选择器连接到在 GitHub Codespace 实例上运行的 Jupyter 服务器。

继续处理未提交的更改

您可以通过选择笔记本工具栏中的**继续处理**按钮切换到基础 codespace,并且工作区中任何未提交的更改都将带到 codespace。

GitHub 拉取请求和问题

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

**创建**视图的改进包括

  • 该视图会尝试检测您的 PR 的最佳基础分支,而不是始终使用默认分支。
  • 您可以从**创建**视图向您的 PR 添加评审者、受让人、标签和里程碑。
  • 默认情况下,会记住您上次的“创建选项”(例如,草稿或自动合并)。
  • 视图性能显著提高。
  • 您可以在发布分支之前查看差异。
  • 一旦分支发布,您还可以查看提交(未发布分支即将推出此功能)。

GitHub Pull Request and Issues extension Create view

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

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 主机改进

上个月对 pty 主机的改进的基础上,我们又进行了以下改进

  • 性能
    • pty 主机现在只在需要时启动,因此从不打开终端的用户将节省大约 50-100 MB 内存。
    • 进一步并行化终端重新连接,加快终端初始化时间。
    • 终端输出消息现在已缓冲,减少了从 pty 主机到承载终端的窗口之间的流量。
  • 诊断
    • 在跟踪日志级别下,会记录每个进程之间的延迟统计信息。
    • 窗口 ID 已记录到**终端**输出通道中的所有日志。
    • pty 主机 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 的贡献