May 2020 (version 1.46)

更新1.46.1 :此更新解决了这些问题 .

下载:Windows: 用户 系统 | Mac | Linux: snap deb rpm tarball


欢迎使用2020年5月发布的Visual Studio Code.

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

Accessibility

这个里程碑使我们再次收到社区的有益反馈,这使我们能够确定并解决许多可访问性问题 .

  • 状态栏现在支持键盘导航. 当焦点通过下一个焦点F6 )进入状态栏时,箭头导航在状态栏条目之间移动.
  • 为了使使用键盘开始和结束选择更加容易,有四个新命令:
    • 设置选择锚⌘K⌘B (Windows,Linux Ctrl + K Ctrl + B
    • 选择从锚点到光标⌘K⌘K (Windows,Linux Ctrl + K Ctrl + K
    • 取消选择锚转义
    • 转到选择锚
  • 活动栏条目现在具有tab角色,并设置了适当的aria-expanded状态.
  • 编辑器的Aria标签现在可以正确传达以下编辑器状态: pinnedpreviewreadonly .

Workbench

Flexible layout

经过多次迭代,我们宣布了使布局更灵活的进展. 在此版本中,该功能集已准备就绪,可以普遍使用. 以下是这些功能的概述.

在侧边栏和面板之间移动视图

也许您希望侧面板中的视图位于面板中,反之亦然. 为此,您现在可以将视图的标题或整个组的图标或标题拖到当前位置,然后将其移动到所需位置. 在键盘上,可以使用命令视图:移动视图workbench.action.moveView )和视图:移动聚焦视图workbench.action.moveFocusedView ).

下面是将"搜索"拖到"面板"和"问题"到侧边栏中的演示.

Moving Views Between Side Bar and Panel

将搜索拖到面板上,并将问题拖到活动栏中

Theme: GitHub Light

之前有一个用于将"搜索"视图从侧栏移动到面板的设置,现在该设置已过时,因为可以使用拖放功能.

分组视图

您可能还希望将来自不同扩展名的一些视图组合在一起,或者您觉得默认的内置视图组不适合您. 您既可以将视图移动到现有组中,也可以为一组选定的视图创建新组. 像以前一样,这在侧边栏和面板上都有效. 以下是几个示例.

Moving Timeline from Explorer to Source Control

将时间轴视图从资源管理器拖动到源代码管理

Side By Side Debug Console and Watch View

将"监视"视图从"运行"侧边栏拖到面板中的"调试控制台"旁边

Custom History Group

使用时间轴和GitLens在侧边栏和面板中创建自定义历史记录组

Theme: GitHub Light

重置视图位置

可以通过上下文菜单将视图和视图组重置为其默认位置. 从默认位置移动视图后,将出现一个条目" 重置位置"以将其移回其原位. 还有命令" 视图:重置焦点视图位置"workbench.action.resetFocusedViewLocation )和" 视图:重置视图位置"workbench.action.resetViewLocations ),用于将所有视图和组重置为默认位置.

对于扩展作者提供视图或查看容器

当视图在工作台上移动时,有时有时需要以不同的方式呈现视图,如果它们不在默认位置,则使用图标或其他上下文呈现. 在提供视图时,作者现在可以提供icon属性和contextualTitle . 如果未提供,则默认为它们所贡献的视图容器的图标和标题.

最后,扩展作者现在可以开始将视图容器直接贡献给panel ,而不是像Tree view扩展指南中概述的activitybar一样.

Pin tabs

现在,您可以从上下文菜单中固定标签,也可以使用新命令workbench.action.pinEditor (( K⇧Enter (Windows,Linux Ctrl + K Shift + Enter )固定标签.

Pin Tabs

Theme: GitHub Light

固定标签具有许多有用的功能,可帮助标记对您重要的文件:

  • 固定标签始终先出现在非固定标签之前.
  • 如果您打开了许多选项卡,它们不会滚动到视图之外.
  • 使用诸如Close Others之类的命令时,它们不会关闭 .
  • 即使您超过打开的编辑器数量的设置限制,它们也不会关闭.

您也可以将标签拖入和拖出以更改固定状态.

固定的选项卡在视觉上缩小为图标的大小(如果禁用了图标,则将显示文件名的第一个字母)以节省空间. 如果要查看带有固定选项卡的脏指示器,可以设置workbench.editor.highlightModifiedTabs: true .

注意:我们仍在考虑其他方式显示固定的标签. 如果您有意见,请随时在现有问题中分享您的想法,以显示辅助标签栏或进行设置以显示固定标签的更多背景信息 .

Search Editor

有几个新选项可用于配置如何创建搜索编辑器

  • search.searchEditor.defaultNumberOfContextLines配置默认情况下搜索编辑器显示的上下文行数.
  • search.searchEditor.reusePriorSearchConfiguration在创建新的Search Editor时重用上一个活动Search Editor的配置.
  • 支持在键绑定参数( 参数详细信息 )中传递Search Editor配置变量.

Explorer auto reveal focus without forcing a scroll

explorer.autoReveal设置有一个新选项focusNoScroll . 使用此选项时,资源管理器将在打开文件时自动选择文件,但不会滚动以在资源管理器视图中显示它们.

Smooth scrolling for lists and trees

启用workbench.list.smoothScrolling设置将使缺少平滑滚动的硬件(例如Windows上的离散鼠标滚轮)在列表和树中的滚动更加平滑.

Smooth scrolling

Sash size configuration

现在,您可以使用workbench.sash.size设置来配置视图/编辑器之间的拖动区域的反馈区域大小(以像素为单位). 如果您觉得很难使用鼠标调整视图大小,请将其设置为更大的值.

Screencast mode font size

新的screencastMode.fontSize设置使您可以配置屏幕广播模式中使用的字体大小(以像素为单位).

VS Code现在将允许直接打开指向工作空间中任何GitHub远程服务器的URL链接. 此外,如果您已使用GitHub登录,则将信任GitHub个人资料下页面的所有链接.

Editor

Cross file Undo for closed files

现在,即使在此期间文件已关闭,也可以跨文件撤消. 将重新打开已编辑的文件,并在所有受影响的文件中撤消跨文件操作,例如重命名符号.

Unusual line terminators

VS Code currently recognizes CR (Carriage Return), LF (Line Feed), and CRLF as line terminators. Some programming languages have different definitions for what constitutes a line terminator. This varies across languages, for example LS (Line Separator) and PS (Paragraph Separator) are line terminators in C# and JavaScript, but not in HTML, PHP, or Java. These line ending differences can cause problems when VS Code communicates with a language server, since various concepts are communicated between VS Code and the language server using (line;char) coordinates. If there are different definitions of a line terminator, it can result in different mappings of lines and locations in the file.

当打开文件时,VS Code现在将检查打开的文件中是否存在LS或PS,并提示并请求允许删除这些字符. 这些不寻常的行终止符在实践中很少见,很可能是通过复制粘贴偶然插入源代码中的.

Integrated Terminal

上个月的集成终端链接预览已取代了旧的实现. 新的链接实现现在可以:

  • 通过使用编辑器的链接检测,改进了web和file://链接检测.
  • 文件夹链接支持,可以在资源管理器中打开文件夹或打开新的VS Code窗口.
  • 针对不同链接类型的不同链接操作,回退到搜索工作空间的"单词"链接(基于terminal.integrated.wordSeparators设置).
  • 与编辑器类似的链接突出显示和悬停体验.

Terminal with various links

Theme: Topaz (Dim)

Tasks

随着最近任务性能的提高, "运行构建任务"将不再总是要求扩展程序来执行其任务. 如果您在文件夹的tasks.json配置了默认构建任务,则"运行构建任务"将仅尝试解析该任务,而不是在运行默认构建任务之前从所有扩展中查找所有任务.

Source Control

Open in Terminal

现在,您可以从"源代码管理"视图中的上下文菜单在终端中打开存储库.

Open in terminal from Source Control view

Add remote from GitHub

现在,您可以使用Git:Add Remote ...命令将GitHub存储库添加为本地存储库的远程存储.

Use Add Remote Command

Generate .gitignore when publishing to GitHub

现在可以在将工作区发布到GitHub时生成.gitignore文件. 将工作空间发布到GitHub时,系统会提示您选择要包含在存储库中的文件,而那些未包含的文件将被添加到.gitignore文件中.

Select which files to include in the repository

Input field font family

现在,您可以使用" Scm:输入字体系列"设置来自定义"源代码管理"输入字段中使用的字体系列 . 该设置支持以下值:

  • default -Workbench用户界面字体系列.
  • editor -在" 编辑器:字体系列"设置中指定的字体系列 .
  • font family name -在输入字段中使用的字体系列名称(例如, Cascadia Code ).

Abort in progress rebase

现在,您可以使用Git:Abort Rebase命令中止正在进行的变基操作.

Debugging

Automatic debug configurations improvements

这个里程碑使我们改善了自动调试配置的体验:

  • 上一个里程碑是,我们引入了一项功能,以便扩展作者可以分析当前项目并自动提供调试配置. 这些调试配置是动态创建的,因此不会显示在launch.json配置文件中. 只要它们开箱即用就很好,但是有时您可能需要修改配置,例如添加其他参数. 现在有一个选项可以将自动调试配置保存到launch.json ,以打开它进行编辑. 为此,请在" 调试:选择并开始调试快速选择"中使用自动调试配置末尾的齿轮按钮:

    Selecting Edit automatic debug configuration in launch

  • 现在可以从"运行和调试"开始视图显示所有自动调试配置.

    Automatic debug configs in start view

  • 现在,"调试"下拉列表会记住以前选择的自动调试配置.

Step Into Targets

使用许多嵌套函数调用来调试语句可能会很痛苦,因为您可能必须逐步执行您并不真正感兴趣的函数.为改进此方案,调试适配器协议支持"直接进入目标"功能,该功能可直接显示UI进入您感兴趣的功能.

在这个里程碑中,VS Code已开始使用此功能. 当调试停止在一条语句上时,上下文菜单将显示一个新的操作Step Into Targets . 此操作将显示当前堆栈帧上可用的所有目标(通常是功能)的列表. 选择其中之一将进入该目标.

请注意,每个堆栈帧都可以有自己的一组目标. 因此," 进入目标"操作的结果取决于"呼叫堆栈"视图中当前选择的帧.

Step into targets in context menu

目前,只有Mock Debug扩展具有(伪造) Step Into Target支持,但不久之后其他调试扩展也将随之而来-例如Julia调试器.

Languages

TypeScript 3.9

VS Code现在包括TypeScript 3.9.4. TS的这一重大更新带来了一些新的工具功能,性能改进以及许多错误修复. 您可以在TypeScript博客上阅读有关TS 3.9的更多信息.

CommonJS auto imports

如果VS Code检测到您使用的是CommonJS样式的JavaScript模块,则自动导入现在将使用require而不是import .

Auto imports using 'require' in a JS file

Refactorings preserve newlines

JavaScript和TypeScript的重构,例如Extract to methodMove to new file ,现在尝试保留重构源代码的原始格式. 这包括选择中出现的所有换行符:

The 'extract method' refactoring preserving newlines

Add all missing imports source action

VS Code长期以来一直支持一种快速修复,该修复将所有缺少的导入添加到JavaScript或TypeScript文件中. 在此迭代中,我们引入了一个新的" 添加所有缺少的导入源"操作,使您可以从文件中的任何位置触发此操作.

Adding imports using a source action

这还允许您为添加所有缺少的导入设置键盘绑定:

{
  "key": "ctrl+shift+i",
  "command": "editor.action.sourceAction",
  "args": {
    "kind": "source.addMissingImports",
    "apply": "first"
  }
}

甚至启用"保存时添加所有缺少的导入 ":

"editor.codeActionsOnSave": [
    "source.addMissingImports"
]

JS/TS Go to Symbol in workspace includes all opened projects

By default, workspace symbol search for JavaScript and TypeScript now searches all opened jsconfig and tsconfig projects. It previously only included search results from the project the focused file belonged to.

这种行为是由控制typescript.workspaceSymbols.scope设置和要求TS 3.9+. 要还原为以前的行为并仅搜索当前项目,请设置"typescript.workspaceSymbols.scope": "currentProject"

Add missing import Quick Fixes can now be marked preferred

The 添加缺少的导入 Quick Fix for JavaScript and TypeScript can now be marked as the preferred fix for an error. This lets you add the missing import with a single keypress using ⌥⌘. (Windows,Linux Shift + Alt +..

请注意,如果只有一个有效的导入,则添加缺少的导入将仅被标记为首选修补程序. 如果项目中有多个潜在的导入,则仍需要使用正常的"代码操作"菜单来选择要使用的导入. 另外,要启用在JavaScript中添加缺少的导入快速修复功能,您必须启用类型检查 .

JSON offline mode

新设置json.schemaDownload.enable使您可以控制是否允许JSON扩展从httphttps获取JSON模式.

当前编辑器想要使用无法下载的架构时,状态栏中会出现一个警告三角形. 然后将限制基于架构的功能,例如验证,代码完成和悬停.

JSON warning triangle

Browser support

Debugging stopped indicator in tab title

在浏览器中调试扩展程序时,已调试扩展程序将显示在新的浏览器选项卡中,该选项卡可停用(隐藏)调试器选项卡. 当调试对象由于某种原因(例如,遇到断点)而停止时,我们将无法激活调试器选项卡(因为浏览器没有为此提供API). 这使得几乎不可能发现已调试的扩展已停止.

为了缓解此问题,我们现在更新选项卡标题以包括一个红色圆圈指示器(类似于断点). 激活调试器选项卡后,红点即被删除.

Debuggee stopped indicator in web view

Running VS Code from the Integrated Terminal

当使用在浏览器中运行的VS Code打开集成终端时,可以键入code以访问所有在浏览器中都可以使用的有用命令.

Terminal Remote

在此迭代中,我们扩展了对许多选项的支持:

  • --goto在特定行上打开文件
  • --diff比较两个文件
  • --wait让程序等待文件关闭
  • --add将文件夹添加到当前工作空间

In Codespaces (public preview in Visual Studio Codespaces, private beta on GitHub), for example, this enables you to use the browser-based VS Code as an editor for Git:

VS Code Git Editor in Browser

Theme: GitHub Light

File/folder upload

VS Code允许您将文件拖放到File Explorer中以上传它们. 在此迭代中,我们改进了此功能,以允许您删除文件夹以上传它们,包括所有子文件夹和文件. 由于这可能是一项长期运行的操作,因此您会在状态栏中看到进度报告,并且可以根据需要取消该操作.

Drag files into File Explorer

Accounts management

在以前的版本中,我们在设置同步功能的预览旁边引入了新帐户管理UI的预览. 现在,默认情况下将显示此用户界面. 使用新提议的身份验证提供程序API的扩展程序可以在此处显示登录请求,您可以查看您的帐户并管理扩展程序访问. 目前使用此API的扩展数量有限,一旦API稳定,我们将努力提高采用率.

Preview features

预览功能尚未准备发布,但足以使用. 我们欢迎您在开发过程中提早提供反馈.

Settings Sync

最近几个月,我们一直在努力支持跨计算机同步VS Code首选项,并且此功能可在Insiders版本中预览.

在这个里程碑中,我们增强了对管理和诊断设置同步的支持.

同步机器视图

我们添加了" 同步计算机"视图,以显示同步VS Code首选项的计算机列表. 根据您使用的VS Code的类型(Insiders或Stable)和平台提供了默认名称,但是您始终可以使用视图中机器条目上可用的编辑操作来更新名称.

Synced Machines view

主题:具有定制功能的GitHub Sharp

您可以使用"命令面板"中的"首选项同步:显示同步数据"命令打开此视图.

同步数据视图

我们向"同步数据"视图添加了以下增强功能.

  • 现在,您可以看到正在从中同步数据的机器.
  • 您可以使用视图中数据条目上可用的"还原"操作还原到特定状态.
  • 您可以使用视图标题中" 更多操作... )"按钮下的" 重置同步数据"操作来重置云上的数据 .

Synced Data view

主题:具有定制功能的GitHub Sharp

现在,通过检查您是否要与其他计算机上的数据同步并允许您采取适当的操作,我们在打开同步时会提供更多帮助.

  • 本地替换 -用来自云的同步数据替换当前计算机上的数据.
  • 合并 -将您的数据与云中同步的数据合并到当前计算机上.
  • 显示同步数据 -打开"同步数据"视图以查看来自云的同步数据.

Replace or Merge pop-up

New JavaScript debugger

本月,我们继续在新的JavaScript调试器上取得进展. 自5月中旬以来,它已成为Insiders上的默认调试器,并且在此版本中包含(但默认情况下未启用)VS Code Stable. 您可以通过启用debug.javascript.usePreview设置,将其与现有的启动配置一起使用.

本月的进展主要集中在完善和稳定现有功能上:

  • 浏览器调试的多选项卡支持:现在,您可以在运行浏览器或Web视图时附加到多个选项卡. 默认情况下,js-debug附加到与urlFilter匹配的所有选项卡. 附加到浏览器时,您可以在启动配置中设置"targetSelection": "pick" ,以连接到单个选项卡,就像上一个调试器一样.
  • 改进的选项卡消除歧义:调试会话名称更准确地消除了多个选项卡的歧义. 此外,我们在"调用堆栈"视图中的调试会话的上下文菜单中添加了" 焦点标签"操作,可用于确保您在查看正确的页面.
  • 自动扩展吸气剂的选项:与Chrome的行为相匹配,默认情况下,在变量视图或调试控制台中显示时,不评估属性吸气剂. 现在,您可以通过设置debug.javascript.autoExpandGetters选项来配置此行为.
  • Webpack捆绑软件类型的性能改进:使用eval源映射构建的某些类型的webpack捆绑软件在js-debug下运行缓慢. 他们不再这样做.

TS 4.0 nightly build support

VS Code 1.46包括对TypeScript 4.0夜间构建的预览支持. 夜间版本包含对我们正在积极研究的一些新工具功能的支持,例如更灵活的重构选择 .

您可以通过安装TypeScript Nightly扩展来尝试使用TypeScript 4.0每夜构建. 请分享反馈,如果您遇到TypeScript 4.0的任何错误,请告知我们.

Contributions to extensions

Notebooks

快速概述

笔记本扩展,例如GitHub Issue Notebooks ,现在支持快速大纲. 按kb('workbench.action.gotoSymbol') ,或使用" 在编辑器中转到符号"命令,然后预览当前笔记本的所有Markdown和代码单元.

Notebook quick outline preview list

Theme: GitHub Theme

错误和符号导航

我们改进了F8和" 查找所有参考"的工作方式. 所有代码导航手势都应该像在笔记本之外一样自然. 例如,"问题"视图现在将显示由笔记本分组的所有单元的所有错误,不再显示按单元的错误:

Problems panel with errors grouped by notebook

Theme: GitHub Theme

连接/拆分单元格

我们引入了两组命令,可用于快速连接单元或将单元拆分为较小的片段:

Running Join and Split Notebook cells commands

Theme: GitHub Dark Theme

保留笔记本

固定的或脏的Notebook编辑器现在可以在工作区中持久保存,因此,如果将Notebook移动到后台或移动到另一个编辑器组,用户将不会丢失Notebook中的工作状态.

Persisted Notebook

Theme: GitHub Dark Theme

统一撤消/重做堆栈

现在可以在同一"撤消/重做"堆栈中跟踪用户操纵笔记本单元或修改笔记本单元内容的操作.

Show tracking of Unified Undo/Redo stack

Theme: GitHub Dark Theme

GitHub Pull Requests and Issues

继续在GitHub Pull Requests and Issues扩展上进行工作,该扩展允许您处理,创建和管理Pull Request和Issues . 此版本的一些更新包括:

  • 改进了问题悬停标签.
  • 现在,问题和用户建议仅在注释和纯文本中触发.
  • 新的问题编辑器使您可以设置受让人和标签.

要了解所有新功能和更新,您可以查看扩展的0.17.0版本的完整变更日志 .

Remote Development

远程开发扩展继续进行工作,该扩展使您可以将容器,远程计算机或Windows Linux子系统 (WSL)用作功能全面的开发环境.

1.46中的新功能包括:

  • 远程-容器:支持GPG转发.
  • 远程-容器:支持检查Docker卷.
  • 远程-容器:新的devcontainer.json命令属性.

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

Hex Editor

最终,自定义编辑器API最终实现了对二进制编辑器的支持,因此,我们开发了十六进制编辑器扩展,以提供本机十六进制编辑体验.

Hex Editor

此扩展程序仍在开发中,目前仅支持以十六进制形式打开和导航文件. 我们将继续致力于导航体验,然后继续进行支持编辑. 您可以尝试扩展,并针对vscode-hexeditor存储库提供反馈或文件问题.

Extension authoring

File path casing

我们修复了一些错误,这些错误涉及VS Code如何在不区分大小写的文件系统上处理路径和URI. 在此发行版之前,具有不同大小写的路径将不会打开同一文档,而是分开的,断开连接的文档. 这种行为经常引起混乱,有时甚至会导致数据丢失.

但是,在修复这些错误时, openTextDocument函数的行为已更改. 现在,该函数可以返回带有URI的文档,该URI的大小写与传递的URI不同.这意味着扩展应使用TextDocument#uri作为真相的来源,而不是其要求使用的URI.

下面的示例说明了新的行为:

// case-insensitive file system

const uriA = vscode.Uri.file('/foo/bar.code');
const docA = await vscode.workspace.openTextDocument(uriA);

const uriB = vscode.Uri.file('/foo/BAR.code');
const docB = await vscode.workspace.openTextDocument(uriB);

assert.ok(docA === docB); // same document
assert.ok(docB.uri.toString() === uriA.toString()); // uriA is used, NOT uriB
assert.ok(docB.uri.toString() !== uriB.toString());

New Debug Console theme colors

调试控制台视图有新的样式:

  • debugConsole.infoForeground :调试控制台中信息消息的前景色
  • debugConsole.warningForeground :调试控制台中警告消息的前景色
  • debugConsole.errorForeground :调试控制台中错误消息的前景色
  • debugConsole.sourceForeground :调试控制台中源文件名的前景色
  • debugConsoleInputIcon.foreground :调试控制台输入标记图标的前景色

New input theme colors

我们还为输入提供了新的颜色主题选项. 您可以通过inputOption.activeForeground设置活动输​​入选项的inputOption.activeForeground . 它们出现在"搜索"视图和"查找"窗口小部件(编辑器,终端,调试控制台)中.

Input option foreground color

Theme: GitHub Dark Theme

New codicon icons

我们已将以下新图标添加到我们的codicon库中:

  • server-process
  • server-environment
  • record
  • pass
  • stop-circle
  • play-circle

New available icons

Theme: GitHub Dark Theme

Providers use generic types

现在,我们的vscode.d.ts使所有两个阶段的提供程序(具有单独的"提供"和"解决"方法的提供程序)成为通用的. 目的是使"提供"调用的结果更清楚地传递回"解决"调用.

例如,这是DocumentLinkProvider的新通用定义:

export interface DocumentLinkProvider<T = DocumentLink> {
  provideDocumentLinks(
    document: TextDocument,
    token: CancellationToken
  ): ProviderResult<T[]>;

  resolveDocumentLink?(link: T, token: CancellationToken): ProviderResult<T>;
}

所有提供程序都具有默认的通用参数,因此此更改不会对您现有的扩展名造成任何错误. 如果您以前在实现"解决"时使用了强制类型转换或类型检查,请考虑将代码更新为使用通用提供程序:

class MyDocLinkProvider implements DocumentLinkProvider<MyDocumentLink> {

  provideDocumentLinks(document: TextDocument, token: CancellationToken): MyDocumentLink[] { ... }

  resolveDocumentLink(link: MyDocumentLink, token: CancellationToken): MyDocumentLink { ... }
}

Writing theme-specific CSS in webviews

Webview的body元素具有一个名为vscode-theme-name的新数据属性,用于存储当前活动主题的全名. 这使您可以在Web视图中编写特定于主题的CSS:

body[data-vscode-theme-name="One Dark Pro"] {
    background: hotpink;
}

请记住,鉴于可用于VS Code的主题数量,您仅应在特殊情况下编写特定于主题的CSS. 普通的Web视图应该使用.vscode-light.vscode-dark类名称以及VS Code CSS变量来编写可适应用户.vscode-dark主题的CSS.

Custom Binary Editors

我们已经完成了自定义二进制编辑器的API. 使用自定义编辑器API,扩展程序可以创建基于Webview的自定义编辑器,这些编辑器可以替换VS Code的默认文本编辑器,也可以由用户切换到该编辑器. 这可用于直接在VS Code中预览资产文件,例如图像或3D模型,或用于为特定文件类型构建更专业的编辑界面. 使用新的二进制自定义编辑器API,您现在还可以为非基于文本的文件格式构建读/写编辑器.

A custom editor for binary files

定制编辑器扩展指南更加详细地介绍了API. 另外,请查看定制编辑器扩展示例 ,其中包括针对文本和二进制文件格式的定制编辑器示例.

Relaxed resolveCompletionItem

CompletionItemProvider#resolveCompletionItem函数使提供程序可以通过更多数据延迟填充补全 . 此"惰性"数据必须是可选的,并且不得更改补全的插入行为. 扩展仍然可以填写additionalTextEdits如果其他编辑已经插入完成之后抵达,编辑仍将尝试应用它们. 请注意,这仅适用于其他编辑,不适用于主编辑( insertText ),一旦提供该主编辑就不得更改.

onStartupFinished activation event

现在,我们有一个新的激活事件,类似于已经存在的*激活事件. 如果希望在VS Code启动后不久立即激活扩展,则应使用新的onStartupFinished激活事件,但不要将其作为启动的一部分.

Environment variable collection

ExtensionContext.EnvironmentVariableCollection API现在稳定,并且允许扩展对终端环境做出贡献.

const collection = context.environmentVariableCollection;
const separator = process.platform === 'win32' ? ';' : ':';
collection.prepend('PATH', `/foo${separator}`);
collection.replace('JAVA_HOME', '/bar');

这些集合是特定于扩展程序和工作区的,并且VS Code处理如何处理多个扩展程序之间的冲突. 它们会在重新加载窗口时保持不变,因此在加载窗口后立即创建的终端不会在扩展主机启动时阻塞,而是使用最新的已知版本. 这些持久化的集合通过处置集合或在卸载扩展时被删除.

当集合发生变化时,终端上会出现一个指示符. 该指示器是显示任何活动更改还是仅显示"过时"终端,由terminal.integrated.environmentChangesIndicator设置定义. 内置的Git扩展现在也使用此API,以使VS Code成为身份验证提供程序.

Debug Adapter Protocol

New instruction breakpoints

有一个新的"指令"断点类型,这使得可以在内存地址处中断一条指令. 内存地址在符号形成任选可以从指定的evaluatevariablesstackTrace ,并gotoTargets请求. 相应的客户端功能supportsInstructionBreakpoints指示调试适配器是否支持指令断点.

Support for "stepping granularity"

已将新的可选granularity参数添加到步进请求nextstepInstepOutstepBack以控制请求是否执行"语句","行"或"指令". 相应的客户端功能supportsInstructionBreakpoints指示调试适配器是否支持该功能.

Proposed extension APIs

每个里程碑都随附了新提议的API,扩展作者可以尝试一下. 一如既往,我们希望您的反馈意见. 您必须尝试以下提议的API:

  • 您必须使用Insiders,因为建议的API经常更改.
  • You must have this line in the package.json file of your extension: "enableProposedApi": true.
  • 将最新版本的vscode.proposed.d.ts文件复制到项目的源位置.

请注意,您无法发布使用建议的API的扩展. 在下一发行版中可能会有重大更改,我们永远也不想破坏现有的扩展.

Git extension API

内置的Git扩展提供了供扩展使用的API . 现有的API公开了一种获取Repository log结果的方法. 现在,更新后的API将使logpath约束.

export interface LogOptions {
  readonly maxEntries?: number;
  readonly path?: string;
}
export interface Repository {
  log(options?: LogOptions): Promise<Commit[]>;
}

还有现在一个Git扩展API来getBranches根据BranchQuery

export interface BranchQuery {
  readonly remote?: boolean;
  readonly contains?: string;
}
export interface Repository {
  getBranches(query: BranchQuery): Promise<Ref[]>;
}

AccessibilityInformation

我们已经向TreeItemStatusBarItemTimelineItem元素添加了AccessibilityInformation ,以支持屏幕阅读器. AccessibilityInformation包含一个label和一个role . 屏幕阅读器将读取label ,并且role描述元素的可访问性特征.

Engineering

Windows ARM64 Insiders

Insiders下载页面上提供了适用于Windows的用于ARM 64位Windows的新的正式Insider构建.

这些版本可与Microsoft Surface Pro X配合使用,因此请尝试一下,让我们知道您的想法.

Windows ARM64

--crash-reporter-directory argument for diagnosing issues

新的命令行参数--crash-reporter-directory允许您传递要在其中保存崩溃报告的本地文件夹. 这甚至适用于扩展主机中的崩溃,并且在VS Code崩溃且您要报告问题时都可以使用.

Preload Scripts

我们已在VS Code中添加了Electron preload脚本,以将某些Electron API暴露给窗口. 这是朝着完全沙盒化窗口迈出的第一步. 问题概述了问题#92164 .

Extension samples now use ESLint

我们所有的扩展示例都已更新,可以使用ESLint进行替换,而不是现在不推荐使用的TSLint. 如果您的扩展仍在使用TSLint,则可以查看《 TSLint到ESLint迁移》指南以及我们新近更新的扩展示例,以了解如何迁移到ESLint.

GitHub Triage Extension

我们为基于铬的浏览器创建了一个扩展,以通过提供受让人,标签,里程碑和用于触发分类GitHub动作的各种特殊注释的单个可模糊过滤的菜单,帮助我们在GitHub上进行分类. 我们已经在GitHub上开源了代码.

Screenshot of Extension

Documentation and extensions

Visual Studio Code at Build

VS Code团队在Microsoft Build 2020会议上进行了介绍,您可以在Build博客文章中的VS Code中找到VS Code会话和在线讲座的概述.

VS Code团队成员的几场演讲:

Azure extensions

有几个新的扩展,可以直接在VS Code中使用和部署Azure资产.

Azure Databases extension

New commands

Key Command 命令ID
⌘K⇧Enter (Windows,Linux Ctrl + K Shift + Enter 引脚编辑器 workbench.action.pinEditor
⌘K⇧Enter (Windows,Linux Ctrl + K Shift + Enter 取消固定编辑器 workbench.action.unpinEditor

Notable fixes

  • 10144: Use system-ui as font on Linux
  • 63068 :macOS扩展坞图标很小
  • 69163: Reveal Active File in Side Bar is throwing an exception
  • 95367 :针对无效的frameId发出了DAP"评估"请求
  • 95856 :"转到行"应包含" filename.extension:行号"格式
  • 96713 :从调用堆栈操作视图停止会话始终会进入活动会话
  • 96914 :当轮廓可见时,键入会很
  • 96987 :Orca无法在断点视图中读取行号
  • 97444 :从调试监视复制长值会导致粘贴部分值
  • 97471 :调试悬停太窄,水平滚动无用
  • 97731: VS code freezes when typing and scrolling
  • 96643 :在onDid(Start | End)Task回调中,任务(和TaskExecutions)不是===

Thank you

最后但同样重要的是,非常感谢本月为VS Code做出贡献的以下人员:

对我们的问题跟踪的贡献:

Contributions to vscode:

language-server-protocol贡献:

vscode-generator-code贡献:

vscode-vsce贡献:

debug-adapter-protocol贡献:

vscode-js-debug贡献:

localization贡献:

在过去的一年中,我们一直在认真听取您的反馈意见,并决定是时候提供一个更可靠和交互式的平台,您可以在其中为VS Code本地化开发做出贡献. 考虑到这一点,我们在4月的第一周正式停用了Microsoft本地化社区平台(MLCP),目的是在用于开源本地化项目的替代平台上继续执行Microsoft社区本地化计划.

在接下来的几周内,请继续关注我们的Wiki页面上有关新社区平台的公告. 您也可以访问FAQ页面以获取有关此平台转换的答案.