2021 年 11 月(版本 1.63)

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

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

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


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

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

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

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

工作台

安装前预览主题

您现在可以在安装之前预览 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) 设置让您可以按问题 或 来导航severity问题position。使用时"problems.sortOrder": "position",第 5 行的警告将在第 13 行的错误之前显示,依此类推。

多语言特定编辑器设置

您现在可以同时为多种语言配置特定于语言的编辑器设置。以下示例显示如何在文件中一起自定义javascript和语言的设置:typescriptsettings.json

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

自动 2x2 编辑器网格

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

列表中更好的转义处理

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

在网络上启用查找

当 VS Code 在浏览器中运行时,Web 视图中现在支持 Find 控件(以下示例中的 github.dev):

在 github.dev 上查找小部件

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

截屏模式显示命令名称

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

带有命令名称和按键的截屏模式

预发布扩展

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

预发布安装下拉列表

主题:GitHub 浅色主题

安装后,一个指示器会清楚地表明您是否使用扩展的预发行版本:

预发布版本指示

主题:GitHub 浅色主题

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

切换到预发布版本按钮

主题:GitHub 浅色主题

更新了查找操作

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

在搜索视图和编辑器中查找操作

源代码控制

忽略快速差异中的修剪空白

现在,您可以使用该设置配置左侧装订线中显示的 SCM 快速比较功能以忽略修剪空白scm.diffDecorationsIgnoreTrimWhitespace

笔记本电脑

调整笔记本中的字体大小

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

Markdown 单元格中的语法突出显示

VS Code 现在支持Markdown 单元格内受隔离代码块的语法突出显示:

笔记本中带有语法突出显示的围栏代码块

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

Jupyter 笔记本中的文件链接

起始链接/是相对于工作空间根解析的。以文件名开头./或仅以文件名开头的链接将相对于当前笔记本进行解析。

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

根据 Markdown 文本自动创建的链接

这与其他笔记本渲染器(例如 JupyterLab)的行为相匹配。

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

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

动态显示和隐藏笔记本工具栏标签

的其他值notebook.globalToolbarShowLabel是 nowalwaysnever

编辑

统一码高亮

现在默认情况下会突出显示源代码中所有不常见的不可见字符:

Unicode 突出显示示例:通过悬停解释突出显示不可见字符

此外,可能与 ASCII 字符混淆的字符也被突出显示:

Unicode 突出显示示例:通过悬停解释突出显示令人困惑的字符

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

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

可以将设置editor.unicodeHighlight.invisibleCharacterseditor.unicodeHighlight.ambiguousCharacters、 或editor.unicodeHighlight.nonBasicASCII设置false为禁用相应功能。

可以使用以下设置排除单个字符以及注释或文本中的字符突出显示:

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

另外,Markdown 文档默认不会高亮显示。

多个悬停提供程序

当文档有多个悬停提供程序时,一旦其中一个提供程序返回结果,悬停就会显示,并且它将随着其余提供程序结果的出现而更新:

Hovers are rendered at the end 悬停是增量渲染的

任务

自动化配置文件设置

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

gulpfile.ts 支持

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

NPM 脚本视图改进

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

包含脚本详细信息的 NPM 脚本视图

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

语言

TypeScript 4.5

VS Code 现在随 TypeScript 4.5 一起提供。此更新带来了许多新的语言功能,以及工具改进和错误修复。

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

方法签名完成

方法签名完成让您可以快速重写方法并实现接口方法。借助此功能,当您位于类主体内部时,方法建议(例如来自超类的方法建议)在接受时插入方法的完整签名:

在 TypeScript 中完成方法签名

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

此功能需要工作区中的 TypeScript 4.5,并且可以使用typescript.suggest.classMemberSnippets.enabled和启用/禁用javascript.suggest.classMemberSnippets.enabled

JSX 属性完成

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

完成 JSX 属性值

javascript.preferences.jsxAttributeCompletionStyle可以使用和配置这些完成的行为typescript.preferences.jsxAttributeCompletionStyle

可能的设置值为:

  • auto- 根据属性类型推断属性样式。字符串使用attr="",而其他类型使用attr={}.
  • braces- 始终使用牙套。
  • None- 只需填写属性名称即可。

删除旧 TS 版本的语义突出显示

此更新删除了在工作区中使用 TypeScript 4.1 或更早版本时对语义突出显示的支持。

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

Markdown 预览自定义编辑器

现在,您可以使用“重新打开方式”命令使 Markdown 文件显示为 Markdown 预览而不是文本:

将编辑器选项卡切换到 Markdown 预览

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

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

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

Markdown 预览增量更新

内置的 Markdown 预览现在可以在您键入时更智能地自行更新。预览现在使用 DOM diffing 仅替换预览文档中已更改的元素,而不是为每次更新替换整个 Markdown 预览文档。这可以减少打字时有时会出现的抖动。

JSON语言指示器

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

JSON 语言选择器

JSON 模式缓存

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

Emmet 删除标签命令改进

现在,当标签在删除之前位于其自己的行上时, Emmet :删除标签命令现在会删除带有该标签的行以及多余的空行(如果适用)。当要删除的标签之间有空行时,它现在还会正确地重新缩进剩余的行。

Emmet Remove Tag 演示删除周围的 div 元素

VS Code 网页版

Azure 存储库

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

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

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

改进的远程菜单

远程菜单中现在出现三个附加命令:

对扩展的贡献

Java

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

Java 扩展包演练

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

朱皮特

性能改进

Jupyter 内核的启动进行了许多性能改进,特别是Python. 以前打开过笔记本的用户在启动内核时会看到 2 倍的加速。重新启动Python内核也应该更快。

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

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

处理内核故障的改进

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

在 Jupyter 中进行 Pip 安装

已进行多项改进,以便在内核在执行期间无法启动或停止时提供更好、更有意义的错误消息。现在,错误会显示在单元格输出中,并附有有关如何解决问题的说明。这可以确保用户了解该问题并可以修复它,以防他们错过 VS Code 右下角显示的错误。

Jupyter 中更好的内核错误

Python

对不受信任的虚拟工作空间的支持有限

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

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

状态栏中的语言项已更新以指示以下情况:

在不受信任的工作空间中对 Python 的支持有限

模块重命名重构

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

使用 Pylance 重命名模块

远程开发

远程开发扩展的工作仍在继续,它允许您使用容器、远程计算机或Windows Subsystem for Linux (WSL) 作为全功能的开发环境。

1.63 中的功能亮点包括:

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

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

GitHub 拉取请求和问题

GitHub Pull Requests and Issues扩展的工作仍在继续,它允许您处理、创建和管理 Pull Requests 和问题。查看扩展0.34.0版本的变更日志以查看亮点。

扩展创作

更新了 API 提案结构

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

例如:

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

创作enabledApiProposals属性时的IntelliSense

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 流程。一项补充是扩展现在可以向单个QuickPickItems 添加按钮。

QuickPickItem 按钮

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

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

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

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

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

身份验证 API 改进

在本次迭代中,我们最终确定了与 VS Code 中的身份验证相关的几个 API。

强制创建新会话

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

GitHub Single Sign On 的安全断言标记语言 (SAML) 支持就是一个例子。默认情况下,为您生成的具有范围的令牌repo将能够访问您自己的个人存储库。但是,如果您所在的组织打开了 GitHub 的单点登录,则必须显式授予会话访问该组织中的存储库的能力。

在此示例中,GitHub 身份验证提供商不会知道针对您尝试访问的内容是否经过正确 SAML 处理的令牌之间的区别,因此为了纠正该行为,您现在可以强制创建新会话。

AuthenticationGetSessionOptions现在有一个forceNewSession属性可以让您要求用户再次登录。如果将此设置为true,用户将看到:

强制登录

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

如果扩展有会话,则静默检索会话

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

这对于某些情况来说很好,但在其他情况下这是不可取的,并且会让用户的屏幕变得混乱。AuthenticationGetSessionOptions为了帮助解决此问题, Called上有一个新属性silent,它允许您请求会话,而不会显示扩展程序请求会话的任何指示。这样,如果扩展能够获得会话,它就可以做它想做的事,但如果没有,它也不会困扰用户。

注意:如果扩展程序过去已被授予访问会话的权限(换句话说,它是“受信任的扩展程序”),则此 API 将仅返回经过身份验证的会话。扩展程序永远不会获得用户不同意的会话。

设置编辑器改进

有序设置

现在可以通过现场订购单独的设置order。在同一类别中,有序设置始终位于无序设置之前,并且顺序是相对的。

未分组的类别支持

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

请注意,在下面的示例中,Conf > Language: Show Size设置位于Configuration Sample标题的正下方。

设置直接出现在扩展标题下方

支持数字和整数对象

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

设置编辑器中具有数字/整数值的对象设置

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,不会改变该函数的行为。

更新 vscode.d.ts 以获得精确的可选属性类型

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

  • 阐明可以分配哪些可选属性undefined
  • ?我们使用vs 的方式更加一致| undefined

如果您使用exactOptionalPropertyTypes扩展程序,如果您遇到任何打字问题,请告诉我们vscode.d.ts

来自 URI 的 HTML 自定义数据

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

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

配置默认值覆盖

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

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

注意:application带有或范围的配置machine不能被覆盖。

替换输出通道中的内容

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

/**
 * 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:带有 glob 模式的激活事件时,VS Code 在工作区中启动文件名搜索,查找与提供的 glob 模式匹配的文件名。一旦找到匹配的文件名,扩展名就会被激活。如果 7 秒内没有找到匹配的文件名,VS Code 现在将取消搜索,并且扩展将不会被激活。

发布预发布扩展

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

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 流以及来自调试器的信息消息发送到调试控制台。用户需要处理的消息流可能会很多,并且关键的事情可能会被忽视。因此,事件important中添加了一个新类别Output,调试适配器可以使用该类别来显示需要突出且不会被用户忽视的关键消息。类别important是客户端在高度可见的 UI 中显示重要信息的提示,例如作为弹出通知。由于此类别是一个提示,因此客户端可能会忽略该提示并采用default类别 ( console)。

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

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

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

continue由于当前规范对于执行控制请求不切实际,因此我们更改了所有执行控制请求( 、nextstepInstepOutstepBack、 )的规范,reverseContinue以便它与通常实现的规范相匹配。

此外,某些调试适配器需要“替代语义”,其中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。这对于对项目进行分组或在项目之间留有一点空间非常有用:

快速选择分离器

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

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

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

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

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

值得注意的修复

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

谢谢

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

网络扩展

启用将代码作为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