🚀 在 VS Code 中

2022年4月 (版本 1.67)

更新 1.67.1:此更新解决了此安全问题

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

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


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

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

观看发布派对: 收听 VS Code 团队讨论一些新功能。您可以在我们的 YouTube 频道上找到活动录像

亮点简短介绍: 如果您只有 60 秒的时间,请查看 4 月 VS Code 版本亮点视频,快速了解新功能。

Insiders: 想要尽快试用新功能?您可以下载每晚构建的 Insiders 版本,并在最新更新可用时立即试用。

工作台

资源管理器文件嵌套

资源管理器现在支持根据文件名嵌套相关文件。有几个设置可以控制此行为

  • explorer.fileNesting.enabled - 控制是否全局启用文件嵌套。它可以全局设置,也可以为特定工作区设置。
  • explorer.fileNesting.expand - 控制默认情况下是否展开嵌套文件。
  • explorer.fileNesting.patterns - 控制文件如何嵌套。默认配置为 TypeScript 和 JavaScript 项目提供嵌套智能,但我们鼓励您修改此配置以适应您自己的项目结构。一些示例

默认配置

.js and .min.js files nested under .ts file, tsconfig.test.json nested under tsconfig.json, package-lock.json nested under package.json

当文件与目录名称匹配时,嵌套在 index.ts 下 ("index.ts": "${dirname}.ts")

in directory named SomeFolder, SomeFolder.ts is nested under index.ts

嵌套与不同文件同名但添加了段的文件 ("*": "${basename}.*.${extname}")

file1.test.myext is nested under file1.myext, file2.spec.other is nested under file2.other

主题:GitHub Light High Contrast

文件嵌套已通过实验性设置提供多个迭代版本。现在的行为基本不变,文件操作除外。实验性设置 explorer.experimental.fileNesting.operateAsGroup 已被删除,取而代之的是在折叠时将嵌套视为一组,但在其他情况下视为单个实体。这意味着,如果您想复制、剪切、拖动或删除整个嵌套文件堆栈,您可以折叠嵌套,然后将其作为一个实体进行操作。当嵌套元素展开时,选择将像往常一样工作。

设置编辑器搜索过滤器按钮

设置编辑器搜索控件现在在右侧包含一个漏斗按钮。单击该按钮会显示一个过滤器列表,您可以将这些过滤器应用于搜索查询,以便过滤掉结果。

主题:Light Pink

设置编辑器语言过滤器指示器

设置编辑器语言过滤器现在更改范围文本,以更清楚地显示应用语言过滤器时作用于哪种语言。上面的短视频显示了应用于过滤设置的 Markdown 语言过滤器 (@lang:markdown)。

作为参考,当应用语言过滤器时,修改设置的值将仅修改该语言的设置值。特定于语言的设置settings.json 中由语言标识符限定范围

  "[markdown]": {
      "editor.wordBasedSuggestions": "off"
  }

重构后保存文件

重构(如重命名)通常会修改多个文件,并使它们处于未保存更改(脏)状态。外部开发工具通常需要保存这些文件。为了简化此工作流程,有一个新的设置 files.refactoring.autoSave,默认为 true,用于控制是否应自动保存作为重构一部分的文件。

在编辑器限制中排除脏编辑器

一个新的设置 workbench.editor.limit.excludeDirty 控制打开编辑器的最大数量是否应排除脏编辑器,以便计入配置的限制。默认情况下,此设置处于禁用状态 (false)。

将“未提交的更改”带回时间线

上个月我们引入本地历史记录功能时,我们从 Git 时间线提供程序中删除了未提交的更改条目,因为它感觉有点多余。但是,一些用户在此时间线条目中看到了真正的价值,现在您可以通过相应地配置新的 git.timeline.showUncommitted 设置将其带回。

打开失败时的新编辑器占位符

当编辑器打开失败时,VS Code 不再显示通知并显示先前打开的编辑器。相反,会显示带有错误消息的通用占位符,在某些情况下,还会显示用于解决错误的操作。

语言状态改进

语言状态项现在显示格式化程序冲突 - 当为一种语言安装了多个格式化程序,但没有一个配置为默认格式化程序时,就会发生这种情况。此外,当语言状态项包含严重状态时,它会更加突出。

此外,当您的文档疑似与当前设置的语言不同时,语言状态项现在将显示切换语言的提示。这仅适用于未命名的编辑器和笔记本单元格,可以使用 workbench.editor.languageDetectionHints 设置进行配置。下面在 Handy Dandy Notebook 中演示了这一点,它支持以各种不同的语言执行单元格。

主题:GitHub Light High Contrast

显示无效或不兼容的扩展

扩展视图现在在已安装扩展列表中显示带有错误状态的无效或不兼容的扩展。例如,如果您的 VS Code 版本是 1.67.0-insider,并且您安装了一个需要 VS Code 版本 1.68.0 的扩展,那么它将在列表中显示为不兼容的错误状态。

Incompatible extension details shown in the Extensions view item hover

退出前确认

可以配置新的设置 window.confirmBeforeClose,以在退出应用程序之前显示确认对话框。

您可以选择 keyboardOnly 以在使用快捷键时弹出确认对话框,或者选择 always,即使使用鼠标退出也是如此。

注意:此设置并非全新,并且在 VS Code for Web 中已存在一段时间。

comments.openView 默认值

comments.openView 的旧默认值是 file,这会导致每次打开包含注释的文件时都打开“注释”视图。为了使“注释”视图不那么嘈杂,新的默认值是 firstFile,这只会导致在会话期间第一次打开包含注释的文件时才打开“注释”视图。

多行注释

在幕后,自注释 UX 最终确定以来,VS Code 一直支持多行注释,但多行注释从未在 UI 中显示。您现在可以查看和留下多行注释。

在新窗口中处理 URI

每当 VS Code URI 包含查询参数 windowId=_blank 时,VS Code 将在新窗口中处理它。示例:vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git&windowId=_blank

编辑器

默认启用括号对颜色化

鉴于在 1.60 版本中引入的新括号对颜色化功能获得了积极反馈,我们默认启用了括号对颜色化。

Side by side comparison with bracket pair colorization on and off

可以通过将 "editor.bracketPairColorization.enabled" 设置为 false 来禁用括号对颜色化。

也可以仅针对特定语言禁用括号对颜色化

"[typescript]": {
  "editor.bracketPairColorization.enabled": false,
},

TextMate 语法可以将标记标记为不平衡

以前,TextMate 语法无法将某些括号标记为不平衡,例如 shell 脚本的 case 语句中的右括号

Old behavior where unbalanced brackets not detected

为了使括号对匹配和颜色化更加健壮,TextMate 语法贡献现在可以表示某些标记中的括号不应匹配。在扩展的 package.jsoncontributes 部分中,提供的语法可以使用属性 balancedBracketScopes(默认为 ["*"])和 unbalancedBracketScopes(默认为 [])来包含或排除用于括号匹配的范围。

"grammars": [{
    "language": "shellscript",
    "scopeName": "source.shell",
    "path": "./syntaxes/shell-unix-bash.tmLanguage.json",
    "balancedBracketScopes": [ "*" ],
    "unbalancedBracketScopes": [ "meta.scope.case-pattern.shell" ]
}],

使用此功能,shell 脚本的语法现在可以指示 case 语句中的 ) 不应匹配

New behavior correctly skipping a bracket that isn't matched

新的括号匹配算法

括号匹配现在使用与括号颜色化相同的 数据结构。这既提高了准确性,又提高了性能。

旧的括号匹配行为(请注意,颜色和高亮装饰不匹配)

Old behavior with incorrect bracket matching

新的括号匹配行为

New behavior with correct bracket matching

括号引导线改进

水平括号引导线现在正确支持换行。此外,仅跨越一行的括号对会获得自己的水平括号引导线。

Horizontal bracket guides displayed for wrapped lines

水平括号引导线默认情况下处于禁用状态,可以使用 "editor.guides.bracketPairsHorizontal": true 启用。

在此版本中,"editor.guides.highlightActiveIndentation" 现在接受值 "always"。如果设置为 always,即使已经存在活动的括号对,也会突出显示缩进引导线。

切换内嵌提示

内嵌提示是在源代码中直接显示附加信息的好方法。但是,有时您只想查看实际的源代码。为了支持快速隐藏内嵌提示,editor.inlayHints.enabled 设置已更改:除了 onoff 之外,还有值 onUnlessPressedoffUnlessPressedon/offUnlessPressed 值在按下并按住 Ctrl+Alt 时隐藏或显示内嵌提示。

编辑器 › 内嵌提示:已启用

  • on - 启用内嵌提示。
  • off - 禁用内嵌提示。
  • onUnlessPressed - 显示内嵌提示,并通过 Ctrl+Alt 隐藏。
  • offUnlessPressed - 隐藏内嵌提示,并通过 Ctrl+Alt 显示。

改进的内联建议

上个月,我们添加了使用 👻 幽灵文本(淡色)进行快速建议的功能。提醒:您需要为 editor.quickSuggestions 设置使用 inline。我们在此领域做了一些改进工作,特别是现在支持触发字符和 TypeScript“使用参数完成函数”。

要禁用在键入触发字符(如 .)时的 IntelliSense,请设置 "editor.suggestOnTriggerCharacters": false。要启用 TypeScript 函数调用完成,请使用 "typescript.suggest.completeFunctionCalls": true

将文本拖放到编辑器中

您现在可以将其他应用程序中的文本拖放到文本编辑器中。例如,在 macOS 上,这允许您将表情符号面板中的表情符号拖放到文本编辑器中

拖动时,虚线光标会显示文本将插入的位置。

终端

查找结果计数

在终端中搜索时,结果计数和当前选定的匹配索引现在显示在“查找”控件中。

Text is searched for in the terminal and the Find control is labeled match 12 of 14 to indicate that match 12 is currently selected

源代码管理

源代码管理存储库视图

在此里程碑中,我们引入了一个新的设置 scm.repositories.sortOrder,用于控制源代码管理存储库视图中显示的存储库的默认排序顺序。存储库可以按发现顺序、名称和完整路径排序。可以使用源代码管理存储库视图的 ... 视图和更多操作菜单以及源代码管理视图的 ... > 视图和排序 > 存储库菜单来更改排序顺序。

下面的短视频显示 SCM > 存储库:排序顺序 设置默认为 discovery time,即选择存储库的时间,您也可以在源代码管理视图中更改排序顺序。

编辑器装饰改进

上一个里程碑,我们通过为修改的行装饰器采用模式,改进了添加/修改行的编辑器装饰器的可访问性。在此里程碑中,我们添加了一个新的设置 scm.diffDecorationsGutterPattern,允许用户切换编辑器装饰器的模式。

该设置默认为修改的行装饰器使用模式,但不为添加的行使用模式

"scm.diffDecorationsGutterPattern": {
    "added": false,
    "modified": true
}

性能改进

git.untrackedChanges 设置设置为 hidden 的用户在使用大型存储库时将体验到更好的性能。这是通过在调用 git status 时传递 -uno 参数来实现的。

扩展的远程源提供程序 API

Git 扩展 API 现在允许注册或显示远程源提供程序的扩展提供有关远程源的更丰富的信息。

远程源提供程序现在可以为单个远程源设置描述和图标。此外,提供程序可以选择指定最近的远程源。这些远程源显示在选择器的顶层,以便于访问,如果提供了时间戳,则按时间戳排序。

扩展的 API 已被内置的 GitHub 扩展以及 GitHub RepositoriesAzure Repos 扩展在 github.devvscode.dev 中采用。

使用 SSH 从 GitHub 克隆

新的设置 github.gitProtocol 允许您更改从 GitHub 克隆存储库时的默认协议。该值默认为 https,但可以更改为 ssh

调试

自动展开延迟变量

几个月前,我们添加了单击按钮以展开调试器“变量”视图中的“延迟”变量的支持。有一个新的设置 debug.autoExpandLazyVariables,可以自动展开延迟变量,而无需单击。

延迟变量的新按钮

我们将文本链接按钮更新为带有“眼睛”codicon 的真实按钮。“眼睛”codicon 也已更新,使其看起来更像眼睛。

A button to expand a lazy variable

Shift+单击以禁用断点

您现在可以 Shift+单击 断点(或条件断点或日志点)以禁用它,并重新启用它。

语言

您现在可以通过将 VS Code 资源管理器中的文件拖放到 Markdown 编辑器中来快速创建 Markdown 链接。在将文件拖到 Markdown 编辑器上时按住 Shift 键,将其拖放到编辑器中,并创建指向它的链接

如果该文件看起来像图像,VS Code 将自动插入 Markdown 图像。否则,将添加普通的 Markdown 链接。

当从其他应用程序拖动某些类型的文件时,这也有效,例如从 Web 浏览器拖放图像

您可以通过设置 "markdown.editor.drop.enabled": false 来禁用此拖放行为。

Markdown:查找所有对标题的引用

VS Code 现在支持在 Markdown 文件中为标题运行查找所有引用。这使您可以查看给定标题在当前工作区中使用的所有位置,包括从其他 Markdown 文件到它的链接。

要开始使用,请将光标放在标题本身或指向标题的链接的片段部分(例如,[链接文本](#_some-header)[链接文本](/path/to/file#some-header) 中的 #some-header)上,然后运行查找所有引用

Finding all references to a Markdown header

这将显示“引用”视图中的所有引用。如果您喜欢不同的视图,也可以使用查看引用转到引用命令。

VS Code 还支持查找当前文件中所有对 参考链接的引用。这适用于

  • [一些文本][ref] 中的 ref 上。
  • 在简写链接 [ref] 中的 ref 上。
  • 在链接定义 [ref]: http://example.com 中的 ref 上。

Finding all places a Markdown link reference is used

Markdown:查找所有对文件的引用

您现在还可以查找当前工作区中所有对给定 Markdown 文件的引用。同样,这包括跨文件的链接。

可以通过以下几种方式触发此操作

  • 要查找对当前 Markdown 文件的引用,请使用Markdown:查找文件引用命令。
  • 要在资源管理器中查找对 Markdown 文件的引用,请右键单击该文件并运行查找文件引用命令。
  • 在指向 Markdown 文件的链接的文件部分(例如 [文本](/link/to/file.md))上运行查找所有引用

这将列出引用给定文件的所有位置,包括对该文件中标题的引用。

Markdown:查找所有对 URL 的引用

最后,我们还支持查找当前工作区中使用给定 URL 的所有位置。

Finding all places where a URL is used in Markdown files

Markdown:重命名标题

是否曾经更改 Markdown 文件中的标题,却意识到您也意外地破坏了所有指向它的链接?这就是我们新的 Markdown 重命名支持可以提供帮助的地方。

要开始使用,请将光标放在标题上,然后按 F2 键开始重命名。输入标题的新文本,然后按 Enter 键接受。这将更新当前标题,并更新当前工作区中所有已知的指向它的链接。

您可以对标题本身或指向标题的链接的标题组件触发重命名。例如,[链接文本](#_some-header)[链接文本](/path/to/file#some-header) 中的 some-header

您还可以在 Markdown 中重命名参考链接。这将更新当前 Markdown 文件中的所有参考链接

Renaming a Markdown link reference using F2

Markdown:重命名文件

为了完善我们新的 Markdown 重命名支持,您现在可以在 Markdown 链接中的文件路径上使用 F2 键,既可以重命名磁盘上的文件,又可以更新所有指向它的 Markdown 引用

Renaming a file by pressing F2 on the file path in a link

目前,仅支持在文本编辑器中对指向文件的链接使用 F2 键重命名文件。在即将到来的迭代中,我们还计划在资源管理器中触发重命名时支持更新链接。

JSON

新的设置 json.validate.enable 允许您关闭 JSON 验证。

VS Code for the Web

打开远程存储库选择器

当您使用打开远程存储库选择器时,VS Code for the Web 现在尊重 window.openFoldersInNewWindow 设置。这使选择器行为与 VS Code 的其他版本保持一致,并替换了在新窗口中打开快速选择项目按钮。

扩展贡献

Java

内嵌提示

Java 扩展包中包含的 Java 语言服务现在支持内嵌提示,以显示方法签名的参数名称。

Java 参数名称内嵌提示有三种模式

  • literals - 仅对文字参数启用参数名称提示(默认)。
  • all - 对文字和非文字参数启用参数名称提示。
  • none - 禁用参数名称提示。

延迟变量解析

Java 调试器扩展现在支持“延迟”变量。此功能允许您延迟昂贵变量的操作,直到您显式展开调试器 UI 以查看其值。

Jupyter

Jupyter PowerToys 扩展

我们很高兴地宣布 Jupyter PowerToys 扩展,该扩展提供了用于处理 Jupyter 笔记本的实验性功能。在其第一个版本中,我们原型化了以下功能

  • 内核管理面板
  • 上下文帮助
  • 执行分组

我们希望您能试用这些功能,并告诉我们您的想法,以便我们有一天可以将它们完善为受支持的功能!

有关更多信息,请参阅 vscode-jupyter-powertoys 存储库中的 README。

Web 扩展

Jupyter 扩展现在可以作为 Web 扩展安装,以便与 vscode.dev 一起使用。当前功能有限,仅支持在不需要 https 的 Jupyter 服务器上运行的笔记本(.ipynb 文件)。

如果您想尝试该功能,请从本地计算机启动 Jupyter,方法是

jupyter --no-browser --NotebookApp.allow_origin_pat=https://.*\.vscode-cdn\.net

并使用命令Jupyter:指定 Jupyter 服务器以进行连接连接到它。

在即将发布的版本中,我们将在浏览器中运行时启用更多功能,包括

  • 基于“https”的服务器
  • IntelliSense
  • 数据查看
  • 变量查看
  • 交互式窗口
  • IPyWidgets
  • 绘图查看
  • 导出

Jupyter 内核处理

对 Jupyter 内核处理进行了一些更新

  • 为了更清楚地表明内核何时崩溃,扩展现在在单元格输出中显示此信息。
  • 当在执行期间检测到某些已知错误时,单元格输出中现在有故障排除指南。
  • 解决内核执行问题可能是一个棘手且耗时的过程。我们整理了 wiki 上的故障排除部分,我们希望可以帮助您更快地找到解决方案。我们的 GitHub Discussions 论坛 也可以成为获得帮助的绝佳资源。

Python

更改语言服务器时无需重新加载

Python 扩展现在支持更新 python.languageServer 设置的值,并自动重启语言服务器,而无需重新加载 VS Code。

Black 格式化程序扩展

现在有一个 Black Formatter 扩展,它使用 black 格式化程序为 Python 提供格式化支持。该扩展的预发布版本可供安装。

使用 isort 组织导入

新的 isort 扩展,它使用 isort 库提供导入组织。预发布版本的扩展可用。

远程开发

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

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

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues 扩展的工作仍在继续,该扩展允许您处理、创建和管理拉取请求和问题。此版本的亮点包括

  • 多行注释
  • 在树中显示提交更改

查看扩展的 0.42.0 版本的更改日志,以查看其他亮点。

预览功能

设置配置文件

在此里程碑中,我们引入了设置配置文件,它是您的设置、扩展和 UI 自定义的集合。如果您自定义了 VS Code,您现在可以将您的自定义导出到设置配置文件 (mysetup.code-profile) 文件,并将其保存到您的计算机并与他人共享。

以下短视频显示了从 VS Code 导出设置配置文件

您还可以导入设置配置文件以恢复您的自定义设置。

下面显示了将设置配置文件导入到 VS Code 中

您可以将您的设置配置文件托管在云中,例如将其保存为公共 GitHub gist,并与他人共享 URL。可以通过提供 URL 导入设置配置文件。

注意: 目前,设置配置文件中仅包含以下 UI 自定义。将来会添加更多。

  • 状态栏项目可见性
  • 活动栏、底部面板和侧边栏项目可见性和顺序
  • 视图可见性、位置和顺序

TypeScript 4.7 支持

此更新包括对即将发布的 TypeScript 4.7 版本的支持。请参阅 TypeScript 4.7 迭代计划,详细了解 TypeScript 团队当前正在进行的工作。一些亮点

  • 使用新的转到源定义命令直接跳转到库函数的 JavaScript 实现。您可以在 TypeScript issue #49003 中了解有关此功能的更多信息并分享反馈。
  • 用于将方法完成为对象成员的代码片段。
  • 组感知组织导入.

要开始使用 TypeScript 4.7 每晚构建版本,请安装 TypeScript Nightly 扩展。

扩展创作

Tab API

我们已经完成了选项卡 API 的只读端(也支持关闭选项卡),标志着我们最受投票的问题之一 microsoft/vscode#15178 的完成。这公开了诸如有多少组、打开了哪些选项卡、哪些选项卡处于活动状态、选项卡代表的编辑器类型等等信息!有关更多信息,请参见 vscode.d.ts 文件,API 的入口点是 window.tabGroups

笔记本更改和保存事件

我们完成了两个与笔记本相关的事件

  • vscode.workspace.onDidSaveNotebookDocument - 每当笔记本被保存时触发的事件。
  • vscode.workspace.onDidChangeNotebookDocument - 每当笔记本被更改时触发的事件。这包括结构更改(例如添加或删除单元格)以及单元格更改(例如更改输出或元数据)。

支持非递归工作区文件监视器

在之前的里程碑中,我们宣布 createFileSystemWatcher API 可以用于监视磁盘上的任何文件夹,只要该文件夹不在打开的工作区内。现在我们放宽了这个限制,允许在任何地方使用非递归文件监视器,即使在打开的工作区内也可以。非递归监视器的优势在于,已配置的排除设置 (files.watcherExclude) 不适用,因此您可以确保文件监视器只会针对您订阅的路径发出事件。

我们正在努力为扩展提供具有自定义排除规则的完整递归监视器支持,敬请期待更多信息!

用户体验指南

扩展作者的 用户体验指南 已重新制作,拥有了自己的目录,您可以在其中找到使用各种 VS Code 用户界面元素的最佳实践。具体主题讨论了在为您的扩展创建 UI 以使其无缝集成到 VS Code 中时,推荐的“应该做”和“不应该做”事项。

Command Palette UX Guidelines on code.visualstudio.com

运行扩展测试

以前,VS Code 会在测试运行完成后立即退出扩展主机进程。现在,当运行扩展测试时,VS Code 将首先完成常规的 deactivate 流程,然后再退出。这允许生成进程的扩展更好地进行自我清理。

将文件拖放到自定义树中

基于最近完成的树拖放 API,我们现在基本支持使用 text/uri-list MIME 类型将操作系统中的文件拖放到扩展树视图中。

调试器扩展创作

支持 supportSuspendDebuggee 和 supportTerminateDebuggee 的 UI

disconnect 请求有两个额外的选项,使客户端能够控制断开连接时调试对象会发生什么情况

  • suspendDebuggee 指示调试对象在断开连接后是否应保持挂起状态。
  • terminateDebuggee 指示调试对象在调试器断开连接时是否应终止。

调试适配器可以使用功能 supportSuspendDebuggeesupportTerminateDebuggee 来表示它支持这些选项。当支持这些选项时,调试工具栏中的停止按钮旁边会出现一个下拉列表,其中包含额外的断开连接命令。

例如,在“launch”类型的调试会话中,对于同时支持这两个功能的调试适配器,默认工具栏按钮将是普通的停止按钮,但下拉列表将包括断开连接 (terminateDebuggee: false) 和断开连接并暂停 (terminateDebuggee: false, suspendDebuggee: true)。

A dropdown with extra disconnection commands

语言服务器协议

对 Notebook 和拉取诊断的支持已从建议状态移出,准备发布 3.17 版本。相应客户端和服务器库的新版本已发布到 npm。

建议的 API

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

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

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

拖放到编辑器中

建议的 文本编辑器拖放 API 允许扩展处理拖放到文本编辑器中的操作。这些拖放事件可能来自 VS Code 内部(例如,将文件从 VS Code 的资源管理器拖到文本编辑器中),也可能是通过将操作系统中的文件拖放到 VS Code 中生成的。

在此迭代中,我们将此 API 切换为基于提供程序的模型。我们还创建了一个 新的扩展示例,演示了如何使用此 API。

视图上的徽章

用于向视图添加徽章的新提案现已可供试用。与 VS Code 核心提供的视图上的徽章工作方式类似,扩展可以使用此 API 提案向视图添加数字徽章。

工程

用于 Electron 冒烟测试的 Playwright

长期以来,我们一直使用 Playwright 进行基于 Web 的冒烟测试。但是,我们基于 Electron 的冒烟测试仍然依赖于我们自己的自定义解决方案。借助 Playwright 中的 Electron 支持,我们能够重用我们的大部分基于 Web 的冒烟测试代码,并将其用于我们的 Electron 冒烟测试。我们很高兴现在可以使用 Trace Viewer 来事后诊断失败的冒烟测试。

扩展的新本地化管道

VS Code 支持多种 显示语言,您可以通过安装语言包来启用它们。这些非常适合本地化 VS Code 本身和 VS Code 的内置扩展。在此迭代中,我们开始了团队拥有的非内置扩展本地化的标准化工作。您将在 GitHub RepositoriesAzure Repos 扩展中看到这项工作的成果,因为它们的通用依赖扩展 Remote Repositories 是第一个加入此计划的扩展。

在下一个迭代中,我们将继续这项标准化工作,并让更多扩展加入。 Python 扩展目前正在进行中,GitHub Repositories 和 Azure Repos 将很快跟进。我们希望达到一个目标,即团队拥有的每个扩展都已本地化,并且未来创建的任何新扩展都能够轻松加入,以便非英语母语的用户可以在 VS Code 中获得出色的体验。

文档

VS Code 中的 Rust

有一个新的 VS Code 中的 Rust 主题,描述了 VS Code 中使用 rust-analyzer 扩展对 Rust 编程语言 的支持。 rust-analyzer 扩展包括丰富的语言功能,例如代码完成、代码检查、重构、调试等等。

rust-analyzer extension for Visual Studio Code details pane

值得注意的修复

  • 114844 允许从崩溃对话框中跳过从先前会话还原编辑器
  • 127936 允许在启动时为文件设置特定于语言的 files.encoding 设置
  • 138461 React 文件中一对 [ ] 内的 Emmet 自动完成功能错误
  • 139392 清除最近项目确认
  • 139950 当断点被命中时,插入符号(光标)应移动到该行
  • 145265 Windows 上的终端使用 cmd /C,这会损坏传递的参数
  • 146406 终端中的 Powerline 符号颜色错误
  • 146977 在 macOS 上的 Info.plist 中声明文件夹支持
  • 147104 无法完成登录到 GitHub

感谢

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

Web 扩展

扩展作者启用作为 Web 扩展 运行代码的扩展(以下列表介于 2022 年 3 月 28 日至 2022 年 5 月 1 日之间)

问题跟踪

对我们的问题跟踪的贡献

拉取请求

vscode 的贡献

vscode-css-languageservice 的贡献

vscode-generator-code 的贡献

vscode-js-debug 的贡献

vscode-pull-request-github 的贡献

debug-adapter-protocol 的贡献

language-server-protocol 的贡献

monaco-editor 的贡献