现已发布!阅读有关 11 月份的新功能和修复的信息。

2021 年 11 月(版本 1.63)

更新 1.63.1:此更新解决了这些安全问题

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

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


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

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

观看亮点 VS Code 团队发布派对上此版本的新功能。您可以在我们的 YouTube 频道上找到活动录像

Insiders:想尽快试用新功能吗?您可以下载每晚的 Insiders 版本,并尽快试用最新的更新。

工作台

安装前预览主题

您现在可以在安装之前预览 Marketplace 上可用的主题。从颜色主题下拉列表中(⌘K ⌘T (Windows, Linux Ctrl+K Ctrl+T)),选择 浏览其他颜色主题 以列出 Marketplace 主题。当您导航下拉列表时,VS Code UI 将预览颜色主题。

Enter 键安装主题条目。

配置问题导航顺序

您现在可以定义 转到下一个问题⌥F8 (Windows, Linux Alt+F8))和 转到上一个问题⇧⌥F8 (Windows, Linux Shift+Alt+F8))导航的顺序。在以前的版本中,导航顺序基于严重性,首先转到错误,然后是警告,然后是其余的。新的 问题:排序顺序 (problems.sortOrder) 设置允许您按 severityposition 导航问题。当使用 "problems.sortOrder": "position" 时,将先显示第 5 行的警告,然后再显示第 13 行的错误,依此类推。

多个特定于语言的编辑器设置

您现在可以一次为多种语言配置特定于语言的编辑器设置。以下示例显示了如何在您的 settings.json 文件中一起自定义 javascripttypescript 语言的设置

"[javascript][typescript]": {
  "editor.maxTokenizationLineLength": 2500
}

自动 2x2 编辑器网格

只有使用 视图:网格编辑器布局 (2x2) 命令才能实现真正的 2x2 网格编辑器布局。现在,您可以通过手动拆分编辑器直到达到 2x2 网格来获得相同的布局,并且网格将自动锁定到真正的 2x2 布局。

列表中更好的 Esc 处理

在列表和树上按 Escape 键现在会将选择缩小到单个元素,然后再清除它。

Web 上启用了查找

当 VS Code 在浏览器中运行时(例如下面的 github.dev),现在在 Web 视图内部支持查找控件

Find widget on github.dev

由于当前浏览器 API 的限制,查找在 Web 上的行为与在桌面上的行为略有不同。例如,在 Web 上,VS Code 只能高亮显示当前的查找结果。在桌面上,所有结果都在当前文件中高亮显示。

屏幕录制模式显示命令名称

您现在可以选择在屏幕录制模式下通过键盘快捷键触发命令时显示命令名称。使用 屏幕录制模式:键盘快捷键格式 (screencastMode.keyboardShortcutsFormat) 设置来配置此行为。

Screencast mode with command names along with keystrokes

预发布扩展

VS Code 现在支持扩展的预发布版本,因此您可以选择安装它们并试用扩展的最新前沿功能。VS Code 在扩展的 安装 下拉菜单中显示额外的 安装预发布版本 选项,用于安装预发布版本。

Pre-Release install dropdown

主题:GitHub Light Theme

安装后,指示器会清楚地表明您是否正在使用扩展的预发布版本

Pre-Release version indication

主题:GitHub Light Theme

如果存在您已安装的扩展的预发布版本,您可以轻松切换到它

Switch to Pre-Release version button

主题:GitHub Light Theme

更新了查找操作

搜索视图中的查找操作现在使用与编辑器中的查找操作相同的样式

源代码管理

在快速差异中忽略修剪空格

您现在可以使用 scm.diffDecorationsIgnoreTrimWhitespace 设置来配置左侧装订线中显示的 SCM 快速差异功能以忽略修剪空格。

笔记本

调整笔记本中的字体大小

新的 notebook.markup.fontSize 设置允许您控制笔记本 Markdown 内容的字体大小。此设置的默认值为当前编辑器字体大小的 120%。

Markdown 单元格中的语法高亮显示

VS Code 现在支持 Markdown 单元格围栏代码块的语法高亮显示

A fenced code block in a notebook with syntax highlighting

笔记本中的 Markdown 现在可以链接到当前工作区中的其他文件

/ 开头的链接相对于工作区根目录解析。以 ./ 开头或仅以文件名开头的链接相对于当前笔记本解析。

此外,包含 httphttps 的 Markdown 文本现在会自动转换为链接

A link automatically created from Markdown text

这与 JupyterLab 等其他笔记本渲染器的行为相匹配。

笔记本工具栏标签的动态可见性

笔记本工具栏可以通过将 notebook.globalToolbarShowLabel 设置为 dynamic 来决定操作的标签是否应基于编辑器组的宽度可见。它将首先隐藏最右侧操作组的标签,然后隐藏左侧的标签。如果当所有标签都被隐藏时编辑器组仍然太窄,则操作将被移动到溢出菜单中。

notebook.globalToolbarShowLabel 的其他值现在为 alwaysnever

编辑器

Unicode 高亮显示

默认情况下,源代码中所有不常见的不可见字符现在都会高亮显示

Unicode Highlighting Example: Invisible character is highlighted with hover explanation

此外,也可以高亮显示可以与 ASCII 字符混淆的字符

Unicode Highlighting Example: Confusing character is highlighted with hover explanation

您可以阅读 “The Invisible JavaScript Backdoor” 博客文章剑桥大学的这篇文章,了解如何在 Unicode 欺骗攻击中使用不可见或易混淆的 Unicode 字符。

请注意,此功能不会检测所有可能的 Unicode 欺骗攻击,因为这取决于您的字体和区域设置。此外,对歧义字符的检测是启发式的。为了安全起见,应使用 VS Code 的工作区信任受限模式来查看源代码,因为 所有 非 ASCII 字符都会在不受信任的工作区中高亮显示。

可以将设置 editor.unicodeHighlight.invisibleCharacterseditor.unicodeHighlight.ambiguousCharacterseditor.unicodeHighlight.nonBasicASCII 设置为 false 以禁用相应的功能。

可以使用以下设置将各个字符排除在高亮显示之外,以及排除注释或文本中的字符

  • editor.unicodeHighlight.allowedCharacters - 不高亮显示的特定字符列表。
  • editor.unicodeHighlight.includeComments - 启用高亮显示注释中的字符。

此外,默认情况下不会高亮显示 Markdown 文档。

多个悬停提供程序

当一个文档有多个悬停提供程序时,悬停将在其中一个提供程序返回结果后立即显示,并随着其余提供程序的结果的到来而更新

之前 之后

任务

automationProfile 设置

旧的设置 terminal.integrated.automationShell.* 已被弃用,并添加了新的 terminal.integrated.automationProfile.* 设置。这允许在指定用于任务的终端的属性(包括 shell、图标、颜色和 shell 参数)方面有更大的自由度。

gulpfile.ts 支持

内置的 gulp 扩展现在支持从 gulpfile.ts 文件中检测任务。

NPM 脚本视图改进

NPM 脚本视图显示有关脚本的更多详细信息。

NPM Scripts view with script details

还有一个新的设置 npm.scriptExplorerExclude,它允许您指定要从 NPM 脚本视图中排除的脚本。

语言

TypeScript 4.5

VS Code 现在附带 TypeScript 4.5。此更新带来了一些新的语言功能,以及工具改进和错误修复。

你可以在 TypeScript 博客上阅读更多关于 TypeScript 4.5 的信息。

方法签名补全

方法签名补全允许你快速重写方法和实现接口方法。使用此功能,当你在类主体内部时,方法(例如来自超类的方法)的建议在接受时会插入方法的整个签名。

如果你正在编写 TypeScript,接受建议还会为签名中引用的类型添加所有必要的导入。

此功能需要在工作区中使用 TypeScript 4.5,可以使用 typescript.suggest.classMemberSnippets.enabledjavascript.suggest.classMemberSnippets.enabled 来启用/禁用。

JSX 属性补全

在 JavaScript 和 TypeScript 中完成 JSX 属性时,VS Code 现在会自动插入属性值。

可以使用 javascript.preferences.jsxAttributeCompletionStyletypescript.preferences.jsxAttributeCompletionStyle 来配置这些补全的行为。

可能的设置值有

  • auto - 根据属性的类型推断属性样式。字符串使用 attr="",而其他类型使用 attr={}
  • braces - 始终使用大括号。
  • None - 仅补全属性名称。

移除旧版本 TS 的语义高亮

此更新移除了在工作区中使用 TypeScript 4.1 或更旧版本时的语义高亮支持。

TypeScript 4.2 添加了对语义高亮的本机支持。在较旧版本中,语义高亮是作为 VS Code 提供的 TypeScript 语言插件实现的。移除该插件可以减少要维护和交付的代码量。

Markdown 预览自定义编辑器

你现在可以使用 重新打开方式 命令将 Markdown 文件显示为 Markdown 预览而不是文本。

Markdown:打开预览 命令不同,重新打开方式 不会打开新的编辑器选项卡,而是更改已打开的编辑器选项卡的显示方式。再次使用 重新打开方式 将文件切换回默认文本视图。

此外,你现在可以使用 workbench.editorAssociations 设置配置 VS Code,以自动将任何 Markdown 文件作为预览打开。

"workbench.editorAssociations": {
  "*.md": "vscode.markdown.preview.editor"
}

Markdown 预览增量更新

内置的 Markdown 预览现在在你键入时会更智能地更新自己。预览不再为每次更新替换整个 Markdown 预览文档,而是使用 DOM diffing 来仅替换预览文档中已更改的元素。这减少了键入时有时会发生的抖动。

JSON 语言指示器

在 JSON 文件中编辑时,现在有一个语言指示器 {},用于显示内容是否已根据一个或多个 JSON 模式进行了验证。将鼠标悬停在指示器上会显示验证状态以及打开模式的链接。

JSON language selector

JSON 模式缓存

来自模式存储 (json.schemastore.org) 的 JSON 模式现在缓存在本地。这节省了网络带宽,并有助于离线工作。

Emmet 删除标签命令改进

当标签在删除之前位于其自己的行上时,Emmet:删除标签 命令现在会删除包含标签的行,以及适用的多余空行。当要删除的标签之间存在空行时,它现在也会正确地重新缩进剩余的行。

Web 版 VS Code

Azure Repos

在这个里程碑中,我们与 Azure DevOps 工程团队合作,在 Azure Repos 的 文件 中心添加了一个新的键盘快捷键。在 文件 中心浏览存储库时,你可以按 .https://vscode.dev 中打开该存储库。

我们还为你的 Azure Repos 存储库添加了一个新的入口点。你现在可以使用远程选择器中 打开远程存储库... 菜单项下的新 从 Azure Repos 打开存储库... 菜单项,从 https://vscode.dev 内连接到你的 Azure Repos 存储库。

此外,你现在可以通过在 URL 前面加上 https://vscode.dev,在 vscode.dev 中使用旧的 Azure DevOps URL 格式(例如 https://<org>.visualstudio.com)打开 Azure Repos 存储库。

改进的远程菜单

远程菜单中现在显示三个额外的命令

  • 关闭远程工作区 - 将工作区更改为空工作区。
  • 下载 Visual Studio Code - 转到 https://vscode.js.cn/download
  • 转到存储库 - 在源代码控制主机网站上打开存储库,例如 GitHub 存储库的 https://github.com

扩展的贡献

Java

Java 扩展包现在具有内置的欢迎体验,可帮助你在 VS Code 中配置和了解 Java。演练涵盖了安装 Java 运行时和有用的框架、打开和调试项目以及直接在 VS Code 内运行测试。

Extension Pack for Java walkthrough

你还可以查看 https://vscode.js.cn/docs/java 上的 Java 教程和用户指南,以帮助你入门。

Jupyter

性能改进

对 Jupyter 内核(特别是 Python)的启动进行了一些性能改进。之前打开过笔记本的用户在启动内核时会看到 2 倍的加速。重新启动 Python 内核也应该更快。

有关为提高性能所做更改的更多详细信息,你可以查看以下问题

  • 支持预热内核以改善笔记本的启动体验。( #7903 )
  • 更快地激活 Python 环境,例如 Conda。( #8342 )
  • 启动 jupyter 时避免启动默认内核。( #8185 )
  • 当我们之前找到 IPyKernel 时,避免搜索它。( #8196 )
  • 当启动内核不需要 Jupyter 运行时时,避免不必要地搜索 Jupyter 包。( #8350, #8352 )

改进了内核故障处理

添加了一条诊断消息以及一个快速修复,以警告在安装 Python 包时使用 !pip install。快速修复将帮助用户选择正确的命令 %pip install

当内核在执行过程中启动或停止失败时,已经进行了多项改进,以提供更好、更有意义的错误消息。错误现在显示在单元格输出中,同时提供了有关如何解决问题的说明。这确保用户知道问题并可以解决它,以防他们错过了 VS Code 右下方显示的错误。

Python

对不受信任和虚拟工作区的有限支持

Python 扩展现在对不受信任的工作区(请参阅 工作区信任)或虚拟文件系统(例如,如果打开了远程 GitHub 存储库)提供有限的支持。在这些情况下,仅提供部分 IntelliSense,并且该扩展的其他功能不可用。

  • 悬停、相同文件补全以及内置(如 print)的补全可用,但该扩展仅限于处理你当前打开的文件。
  • 对于不受信任的工作区,仅支持 Pylance 语言服务器。
  • 对于虚拟工作区,仅支持 Jedi 和 Pylance。

状态栏中的语言项已更新,以指示这些情况

Limited support for Python in an untrusted workspace

模块重命名重构

你现在可以使用 Python 和 Pylance 扩展更轻松地重命名模块。重命名 Python 模块后,系统会提示你选择是否要更改代码中的所有导入和引用。如果你不确定,你可以先预览更改的外观,然后再做出决定。一旦你确信,你可以选择 应用重构放弃重构 以不应用建议的更改。

远程开发

正在继续开发 远程开发扩展,该扩展允许你使用容器、远程计算机或 适用于 Linux 的 Windows 子系统 (WSL) 作为功能齐全的开发环境。

1.63 中的功能亮点包括

  • 在 SSH 服务器上工作时,你现在可以使用 在容器中重新打开 命令在容器中打开文件夹。
  • 改进的转发端口安全性避免了不安全的端口。
  • 可配置的 WSL 连接方法允许你使用 wsl.exe 或套接字连接与服务器通信。
  • 高级容器配置视频涵盖了如何更改项目的默认位置提高 Windows 上的性能

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

GitHub Pull Requests 和 Issues

正在继续开发 GitHub Pull Requests 和 Issues 扩展,该扩展允许你处理、创建和管理拉取请求和问题。查看扩展的 0.34.0 版本变更日志,以了解亮点。

扩展创作

更新的 API 提案结构

我们已经更改了 API 提案的管理方式。之前,有一个包含所有提案的单个文件 vscode.proposed.d.ts。此文件已增长,并且很难确定扩展正在使用哪些提案,以及某个提案是否已在稳定的 API 中。现在,每个提案都有一个文件。

例如

每个提案都有一个唯一的名称,并且想要使用提出的 API 的扩展需要在其 package.json 中列出这些名称。package.json 中的 enableProposedApi 属性被新的 enabledApiProposals 替换,后者是提案名称的字符串数组,并且具有 IntelliSense 和验证支持。

IntelliSense when authoring the enabledApiProposals property

更新后的 API 提案流程应如下所示

  1. 找到你想尝试的提案,并将其名称添加到 package.json#enabledApiProposals
  2. 使用最新的 vscode-dts 并运行 vscode-dts dev。它会将相应的 d.ts 文件下载到你的工作区。
  3. 你现在可以针对该提案进行编程。

详细的迁移指南和示例迁移可以在 问题 #136964 中找到。另请注意,关于提出的 API 用法的限制没有改变。使用提出的 API 的扩展程序不能发布,也不能按原样使用。

快速选择 API 改进

在此迭代中,我们将完成 VS Code 中 QuickPick 的几个 API。

QuickPickItem 内联按钮

提供丰富的输入体验是我们的扩展 API 的目标,而利用 VS Code 快速选择的熟悉度可以实现强大而简单的 UI 流程。其中一项新增功能是,扩展程序现在可以向单个 QuickPickItem 添加按钮。

QuickPickItem buttons

单击按钮会触发 QuickPick 对象上存在的 onDidTriggerItemButton 事件。我们期待看到您如何在扩展程序中使用这些按钮。

更新项目时保持滚动位置的功能

除了能够向 QuickPickItem 添加按钮之外,您可能还希望在更新项目时保持滚动位置。这对于想要以下操作的扩展程序来说是一个常见的用例:

  • 实现“从列表中删除此项目”(例如,Ctrl/Cmd + P x QuickPickItemButton)。
  • 以某种方式实现“切换此项目”(例如“插入代码片段”命令)。
  • 在快速选择中异步加载项目。

window.createQuickPick() 返回的 QuickPick 对象上的 keepScrollPosition 属性允许您控制快速选择中的滚动位置 (cursorTop) 是否移动回列表顶部。

身份验证 API 改进

在此迭代中,我们将完成 VS Code 中几个与身份验证相关的 API。

强制创建新会话

有时,当您使用 authentication.getSession() 获取会话时,它可能对某些资源有效,但对其他资源无效,并且通过再次执行登录流程,可以解决这种情况。

一个例子是 GitHub 单点登录的安全断言标记语言 (SAML) 支持。默认情况下,为您生成的具有 repo 作用域的令牌将能够访问您自己的个人存储库。但是,如果您在启用了 GitHub 单点登录的组织中,则必须明确授予会话访问该组织中的存储库的能力。

在此示例中,GitHub 身份验证提供程序将不知道为你要访问的内容正确进行 SAML 的令牌与未正确进行 SAML 的令牌之间的区别,因此为了纠正这种行为,您现在可以强制创建新会话。

AuthenticationGetSessionOptions 现在具有 forceNewSession 属性,该属性允许您要求用户再次登录。如果将其设置为 true,用户将看到

Forcing sign in

如果您想向用户显示更具描述性的消息,您还可以指定一个带有 detail 字符串的对象。

如果扩展程序有一个会话,则以静默方式检索会话

我们看到的一个常见模式是,某些扩展程序在激活时会检查它们是否有可用的身份验证会话。如果有,它们将使用它来预加载数据并在稍后提前执行其他任务以加快性能。这样做的缺点是,如果用户尚未授予该扩展程序访问身份验证会话的权限,则会在帐户菜单上显示一个徽章,并在菜单中添加一个项目,要求用户登录。

在某些情况下,这很好,但在其他情况下,这是不希望的,并且会使用户的屏幕变得混乱。为了帮助解决此问题,AuthenticationGetSessionOptions 上有一个名为 silent 的新属性,该属性允许您请求会话,而不会显示扩展程序请求它的任何指示。这样,如果扩展程序有能力获得会话,它可以执行它想执行的操作,但如果没有,它不会打扰用户。

注意:仅当扩展程序过去已被授予访问会话的权限(换句话说,它是一个“受信任的扩展程序”)时,此 API 才会返回经过身份验证的会话。绝不会向扩展程序提供用户未同意的会话。

设置编辑器改进

有序设置

现在可以使用 order 字段对单个设置进行排序。有序设置始终位于同一类别中的无序设置之前,并且排序是相对的。

无分组类别支持

设置也可以在主扩展程序标题下分组,而不是在特定类别下分组。为此,请将其中一个类别的类别标题设置为与扩展程序显示名称相同。

请注意,在下面的示例中,配置 > 语言:显示大小 设置直接位于 配置示例 标题下。

Settings appearing directly under the extension header

支持数字和整数对象

设置编辑器现在支持具有非空数字/整数值的对象。

An object setting in the Settings editor with number/integer values

executeCommand 的新类型签名

在以前版本的 VS Code 中,vscode.commands.executeCommand 的类型始终返回可能为未定义的值的承诺

export function executeCommand<T>(command: string, ...rest: any[]): Thenable<T | undefined>;

但是,并非所有命令都可以返回 undefined。例如,返回项目数组的命令通常返回空数组,而不是在没有结果时返回 undefined。在这些情况下,您必须使用丑陋的强制转换或添加不必要的检查才能编写类型正确的代码。

为了解决这个问题,我们更新了 executeCommand 的类型,使其更加明确

export function executeCommand<T = unknown>(command: string, ...rest: any[]): Thenable<T>;

这意味着如果命令可以返回 undefined,则必须显式传入 | undefined 作为类型参数的一部分

vscode.commands.executeCommand<vscode.CallHierarchyItem | undefined>('vscode.prepareCallHierarchy', ...);

此更改仅影响 executeCommand 的类型,而不会更改此函数的行为。

为 exactOptionalPropertyTypes 更新 vscode.d.ts

我们已更新 vscode.d.ts 中的类型,以更好地支持 TypeScript 的 exactOptionalPropertyTypes 严格选项。这项工作包括

  • 明确哪些可选属性可以分配 undefined
  • 在如何使用 ?| undefined 方面更加一致。

如果您在扩展程序中使用 exactOptionalPropertyTypes,请告知我们您在 vscode.d.ts 类型方面遇到的任何问题。

来自 URI 的 HTML 自定义数据

自定义数据 允许用户和扩展程序使用新的 HTML 标签和属性扩展 HTML 语言支持。

在此版本中,HTML 自定义数据贡献还接受文档 URI。您可以使用它通过来自 TextDocumentContentProvider 的文档在运行时提供自定义数据。

配置默认值替代

现在,您可以通过 package.json 中的 configurationDefaults 贡献点覆盖其他已注册配置的默认值。例如,以下代码片段将 files.autoSave 设置的默认行为覆盖为在焦点更改时自动保存文件。

"configurationDefaults": {
      "files.autoSave": "onFocusChange"
}

注意: 无法覆盖范围为 applicationmachine 的配置。

替换输出通道中的内容

在此里程碑中,OutputChannel 对象上的新 replace API 可以替换输出通道中的内容。

/**
 * Replaces all output from the channel with the given value.
 *
 * @param value A string, falsy values will not be printed.
 */
replace(value: string): void;

workspaceContains 的超时

当将 workspaceContains: 激活事件与 glob 模式一起使用时,VS Code 会在工作区中启动文件名搜索,查找与提供的 glob 模式匹配的文件名。一旦找到匹配的文件名,扩展程序就会被激活。如果在 7 秒内未找到匹配的文件名,VS Code 现在将取消搜索,并且扩展程序将不会被激活。

发布预发布扩展程序

VS Code 现在支持扩展程序作者通过传递 --pre-release 标志,通过 vsce 发布其扩展程序的预发布版本。这意味着您可以向选择安装预发布版本的用户提供最新的功能,并在正式发布扩展程序之前获得早期反馈。

vsce publish --pre-release

VS Code Marketplace 仅支持扩展程序版本的 major.minor.patch,并且尚不支持 semver 预发布标签。因此,我们建议扩展程序将 major.EVEN_NUMBER.patch 用于发布版本,将 major.ODD_NUMBER.patch 用于预发布版本。例如:0.2.* 用于发布,0.3.* 用于预发布。VS Code 会自动将扩展程序更新到可用的最高版本,因此即使某个用户选择了预发布版本,一旦发布了更高版本的扩展程序,该用户也将被更新到已发布版本。

有关预发布扩展程序的更多信息,请参阅预发布扩展程序主题。

语言服务器协议

已发布新版本的 语言服务器协议 以及相应的 npm 模块。除了 各种小改进之外,新版本还包含内联值的建议实现。

调试适配器协议

输出事件的新重要类别

调试适配器协议的 Output 事件用于将调试对象的 stdout 和 stderr 流以及来自调试器的信息消息发送到调试控制台。对于用户来说,这个消息流可能很大,并且关键的事情可能会被忽略。为此,向 Output 事件添加了一个新的类别 important,调试适配器可以使用该类别来显示需要突出显示并且不会被用户忽略的关键消息。important 类别是客户端在高度可见的 UI 中显示重要信息的提示,例如作为弹出通知。由于此类别是提示,因此客户端可能会忽略该提示并假定 default 类别 (console)。

执行控制请求的澄清和改进

以前,调试适配器协议指定所有“执行控制”请求(continuenextstepInstepOutstepBackreverseContinue)都在单个线程上运行,但实现可以选择忽略线程参数并在所有线程上运行。由于这种模糊的“单线程”语义实际上没有用,因此调试适配器通常会实现更有用的东西

  • “step”请求,用于单步执行当前线程,同时允许其他线程通过恢复它们自由运行。
  • “continue”请求,用于恢复所有线程。

由于当前规范对于执行控制请求不切实际,因此我们已更改所有执行控制请求(continuenextstepInstepOutstepBackreverseContinue)的规范,使其与通常实现的内容相匹配。

此外,一些调试适配器需要一种“替代语义”,其中 stepcontinue 仅在当前线程上运行,但使所有其他线程保持暂停状态。对于这种“替代行为”,所有执行控制请求都添加了一个新的可选 singleThread 属性。调试适配器必须使用相应的新功能 supportsSingleThreadExecutionRequests 来向客户端指示执行控制请求支持 singleThread 属性。

建议的扩展 API

每个里程碑都带有新的提议 API,扩展程序作者可以试用它们。与往常一样,我们需要您的反馈。以下是试用提议 API 的步骤

  1. 找到要试用的提议,并将其名称添加到 package.json#enabledApiProposals
  2. 使用最新的 vscode-dts 并运行 vscode-dts dev。它会将相应的 d.ts 文件下载到你的工作区。
  3. 你现在可以针对该提案进行编程。

您不能发布使用提议 API 的扩展程序。下一个版本中可能会有重大更改,我们绝不希望破坏现有扩展程序。

QuickPickItem 分隔符

在此迭代中,我们将引入扩展程序通过提议 API (vscode.proposed.quickPickSeparators.d.ts) 向快速选择添加分隔符(也称为“类别”)的功能。这对于对项目进行分组或在项目之间留出一些空间非常有用

Quick Pick separators

要向现有快速选择添加分隔符,您可以将新的 QuickPickItem 添加到现有项目列表中,但指定 QuickPickItem 上的 kind 属性并将其设置为 QuickPickItemKind.Separator

在上面的示例中,您将以下对象添加到项目列表中

{
    label: 'APIs',
    kind: QuickPickItemKind.Separator
}

如果您未指定 kind 属性,或者将其设置为 QuickPickItemKind.Default,则该项目将被视为普通的 QuickPickItem

您可以在 问题 #74967 中提供有关此 API 的反馈。

值得注意的修复

  • 5989 无法使用 openssh 在远程 Windows 计算机上运行任何任务
  • 45629 Mac 上 Google 日语输入法 (IME) - 建议与文本重叠
  • 131345 默认设置中带有 \n 的弃用警告破坏了 json 格式
  • 133521 当 nvm 已经安装时,仍然要求安装
  • 133623 如果焦点线程不再存在,调试工具栏不会更新
  • 134254 无法输入韩语。字符分裂或丢失
  • 134429 Zlib 错误:无效的距离回溯太远
  • 135838 当存在另一个文件名更长的文件时,我无法保存文件
  • 136684 调用堆栈项没有打开具有正确内容的标签页
  • 137012 Emmet 在 VS Code 1.62.2 (Universal) 的 js/jsx 文件中不起作用
  • 138153 性能:_removePropertiesWithPossibleUserInfo 占据加载渲染器成本的约 10%
  • 138302 性能:仅在扩展注册后更新编辑器配置
  • 138517 vscode.dev 无法在私有存储库中切换分支

感谢

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

Web 扩展

感谢扩展作者们启用以 Web 扩展 形式运行代码的扩展程序(以下列表为 11 月 2 日至 12 月 6 日期间的扩展)

问题跟踪

对我们问题跟踪的贡献

拉取请求

vscode 的贡献

vscode-codicons 的贡献

vscode-css-languageservice 的贡献

vscode-eslint 的贡献

vscode-extension-samples 的贡献

vscode-html-languageservice 的贡献

vscode-json-languageservice 的贡献

vscode-languageserver-node 的贡献

vscode-pull-request-github 的贡献

vscode-vsce 的贡献

language-server-protocol 的贡献

monaco-editor 的贡献