2023 年 7 月(版本 1.81)

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

下载:Windows:x64 Arm64 | Mac:通用 英特尔 芯片| Linux:deb rpm tarball Arm snap


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

如果您想在线阅读这些发行说明,请转至code.visualstudio.com上的更新

业内人士:想尽快尝试新功能吗?您可以下载每晚的预览体验成员版本,并在最新更新可用后立即尝试。

无障碍

无障碍视图改进

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

现在有用于通知、内联聊天响应、Jupyter 笔记本输出和工作台悬停的可访问视图。

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

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

面包屑符号信息

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

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

现在,使用 ( ⌘↓ ( Windows、 Linux Ctrl+向下) ) 和 ( ⌘↑ (Windows、Linux Ctrl+向上) )。

可访问的差异查看器

在 diff 编辑器中,Difference Review Pane被重命名为Accessible Diff Viewer可访问的 diff 查看器解决了 diff 编辑器的可访问性缺陷,可以使用F7或diff 编辑器的“更多操作”菜单中的“打开可访问的 Diff 查看器”命令打开。除了此重命名之外,我们还修复了一些错误并添加了一些新功能,例如能够启动“辅助功能帮助”对话框或从查看器跳转到修改后的编辑器。

型材

支持部分配置文件

您现在可以创建一个配置文件,在其中仅自定义配置的子集(设置、键盘快捷键、代码片段、任务和扩展)。例如,您可以创建一个包含除键盘快捷键之外的所有配置的配置文件,当此配置文件处于活动状态时,VS Code 会应用默认配置文件中的键盘快捷键。

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

未选中键盘快捷键的“创建新配置文件”下拉列表

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

通过从项目模板或现有配置文件复制来创建配置文件

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

未选中键盘快捷键的编辑配置文件下拉列表

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

配置文件视图,键盘快捷键未选中且导出按钮可见

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

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

将设置应用于设置编辑器中的所有配置文件上下文菜单项

这会将设置的值应用于所有配置文件。任何配置文件对此设置的任何更新都会应用于所有配置文件。您可以通过取消选中“将设置应用于所有配置文件”选项来恢复此同步。

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

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

将扩展应用到扩展视图中的所有配置文件上下文菜单项

这使得此扩展可在所有配置文件中使用。您可以通过取消选中“将扩展应用到所有配置文件”选项来恢复此状态。

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

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

工作台

即将发布的更新的发行说明

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

编辑

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

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

异步标记化推出

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

如果您不想等待,可以设置editor.experimental.asyncTokenizationtrue立即获取异步标记化。

差异编辑器

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

折叠未更改的区域

用于diffEditor.experimental.collapseUnchangedRegions在新的差异编辑器中隐藏未更改的区域。当检查具有大量未更改行的较​​大差异时,此功能非常有用。

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

新差异编辑器中“折叠未更改区域”功能的屏幕截图

差异区域对齐

新的差异编辑器现在可以对齐差异区域内的文本,从而可以更轻松地查看缩进已更改和已插入行的差异。

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

没有 diff 区域对齐的并排 diff

之后(具有差异区域对齐):

具有 diff 区域对齐的并排 diff

现在默认启用新的 diff 算法

我们已经完成了新 diff 算法的推出,该算法现在是 VS Code 中的默认算法。您可以在过去的发行说明中了解一些算法改进。

差动降噪

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

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

使用新的 diff 算法之前

这就是启发式改进后的样子(请注意,不相关的匹配较少):

使用新的 diff 启发式算法后

换边

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

还有更多

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

终端

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

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

将鼠标悬停在内联终端选项卡上将显示有关终端的信息

源代码控制

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

调试

JavaScript 调试器

支持快速节点(版本)管理器

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

笔记本电脑

闭合笔记本的丰富内容搜索

在之前的版本中,我们引入了针对打开笔记本的丰富内容工作区搜索。现在提供预览支持,还可以查看关闭笔记本的丰富内容结果。

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

改进了大型流输出的性能

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

笔记本粘性卷轴

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

VS Code 网页版

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

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

远程开发

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

亮点包括:

  • 从 VS Code 将远程隧道安装为服务。
  • 简化了 @devcontainers/cli 安装。
  • 在锁定文件中记录 Dev Containers 功能依赖项。

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

对扩展的贡献

GitHub 副驾驶

快速聊天用户体验改进

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

像以前一样,您可以使用⇧⌘I切换此视图(Windows Ctrl+Shift+I,Linux Ctrl+Shift+Alt+I。具体改进包括:

  • 对话式聊天:快速聊天体验现在可以显示您的完整对话,同时仍保留最后一个问题和答案。
  • 斜杠命令完成:现在,当您键入时,斜杠命令会完成/

此外,还有一个实验性设置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 文件或齿轮图标来访问该文件。选择Debugpy,然后从可用配置中选择Python:带参数的文件。launch.json

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

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

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

Python 扩展 API 的 npm 包

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

Python 扩展的 Dev Containers

现在有一个用于 Python 扩展的 Dev Containers ,其中包含 Microsoft 官方 Node.js 映像。通过这个自定义 Dev Containers ,用户可以在GitHub Codespace中打开Python 扩展存储库,并立即开始开发和测试 Python 扩展,无需安装。预安装了 Python 版本 3.7、3.8、3.9、3.10 和 3.11,因此用户可以使用pyenv轻松在 Python 版本之间切换。

朱皮特

连接到 Codespace 上的 Jupyter 服务器

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

继续进行未提交的更改

您可以通过选择笔记本工具栏中的“继续”按钮切换到底层代码空间,工作区中任何未提交的更改都会被带到代码空间。

GitHub 拉取请求和问题

GitHub Pull Requests and Issues扩展取得了更多进展,它允许您处理、创建和管理 Pull Requests 和问题。这次迭代,我们重点更新了“创建”视图,使其更干净、更有用。

创建视图的改进包括:

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

GitHub Pull Request 和 Issue 扩展创建视图

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

GitHub认证

注销时撤销 GitHub OAuth 令牌

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

扩展创作

RevealSetting 和 focusSearch 添加到 IOpenSettingsActionOptions

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

例如,以下命令

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 身份验证

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

如果自动选择的服务主体名称不起作用,用户可以提供以下设置http.proxyKerberosServicePrincipal

Kerberos 服务主体设置

QuickPickItem 中的图标最终确定

图标的 APIQuickPickItem已经最终确定。您现在可以使用该iconPath属性在 s 中显示图标QuickPickItem

使用 GitHub 头像作为项目图标的快速选择

工程

通过名称修改缩小 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

贡献vscode-js-debug

贡献vscode-pull-request-github

贡献vscode-vsce

贡献inno-updater

贡献language-server-protocol

贡献monaco-editor