– 代理会话日,2月19日

2023年2月 (版本 1.76)

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

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

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


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

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

内测版:想尽快尝试新功能?您可以下载每晚的内测版构建,并尽快尝试最新的更新。

辅助功能

终端命令失败音频提示

当带有 shell 集成的终端中命令以非零代码退出时,视力正常的用户可以快速查看命令装饰以了解发生了故障。为了向使用屏幕阅读器的用户传达故障,VS Code 现在播放 audioCues.terminalCommandFailed 音频提示。

您可以通过滚动浏览 帮助:列出音频提示 下拉菜单来收听可用的音频提示声音。

List Audio Cues dropdown with Terminal Command Failed cue selected

改进的错误音频提示响应

audioCues.lineHasError 音频提示现在在字符导航期间播放,以便屏幕阅读器用户更好地了解编辑器中错误的位置。

终端可访问缓冲区改进

上一个迭代中,我们引入了终端可访问缓冲区,它通过 终端:聚焦可访问缓冲区 命令为屏幕阅读器用户提供访问终端内容的权限。

在此迭代中,我们通过添加选择和链接支持、使其只读以及使用 shell 集成信息来限制输出仅显示重要的终端内容(运行的命令、如果有的话,退出代码以及输出)来改进了可访问缓冲区。我们计划在下一次迭代中添加此功能的配置。

上下文特定的 Tab 焦点模式

切换 Tab 键移动焦点 命令对于确定工作区或编辑器/终端是否接收 Tab 键输入很有用。

新的 editor.tabFocusMode 设置允许用户设置默认行为。当值为 true 时,工作区将接收 Tab 键输入,而不是编辑器或终端。

Windows 上的屏幕阅读器 shell 集成支持

由于 PowerShell 在这种情况下存在问题,之前检测到屏幕阅读器时会禁用 shell 集成。我们已经确定这在大多数情况下不再是一个问题,因此已启用它。

终端可访问帮助添加

与屏幕阅读器社区的讨论产生了对 终端辅助功能帮助 对话框 () 的补充,例如提及 创建新终端(带有配置)首选项:打开辅助功能设置 命令。

配置文件

配置,发布到稳定版 上一个里程碑,让您可以根据当前的工作流程和项目快速切换 VS Code 配置。您可以保存一组自定义设置,例如设置、扩展和键绑定,在您的机器之间同步它们,并轻松地与同事共享它们。

配置徽章

VS Code 现在通过在 管理 活动栏图标上显示配置名称的前两个字母来指示当前的自定义配置。

Two profile badges showing the first two letters of the profiles

主题可以通过配置这两个新的主题颜色来自定义配置徽章背景和前景颜色

  • profileBadge.background
  • profileBadge.foreground

切换配置

您现在可以使用命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 中的 配置:切换配置 命令快速切换配置,该命令会显示一个下拉列表,其中列出了您可用的配置。

Switch Profile command dropdown listing available profiles

远程工作区中的配置

您现在可以在 远程开发 工作区中创建和自定义包含 远程扩展 的配置,并在它们之间切换。

下面,两种不同的配置(“文档编写”和“代码”)在两个 远程 - SSH 实例中处于活动状态。

Profiles active in two Remote - SSH instances

配置文档

请查看新的 Visual Studio Code 中的配置 主题,如果您想了解有关配置以及何时使用它们的更多信息。本文详细介绍了如何创建、修改、共享和重用配置。

工作台

可移动的资源管理器视图

VS Code 中的大多数视图和视图容器都可以移动,除了少数内置视图。在此版本中,资源管理器视图容器 (⇧⌘E (Windows, Linux Ctrl+Shift+E)) 现在可以移动,可以放置在辅助侧边栏或底部面板中,以进一步自定义工作区。

下面,文件资源管理器视图已移动到面板区域。

File Explorer view moved to the panel area

如果您想将所有视图重置为默认布局,可以从命令面板运行 视图:重置视图位置

固定宽度居中布局

视图:切换居中布局 命令 (workbench.action.toggleCenteredLayout) 现在具有固定宽度布局选项。此选项使用新的 workbench.editor.centeredLayoutFixedWidth 设置启用。启用后且居中布局处于活动状态时,编辑器将居中并在窗口和面板调整大小期间尝试保持其宽度。

多个快速差异

随着提出的 多个快速差异 API 的引入,多个扩展可以提供快速差异。当文件中有多个快速差异时,您现在将看到一个下拉菜单以选择要查看的差异基础。

Multiple quick diffs and diff base dropdown

评论

注释 视图具有一个新的 全部展开 命令,与现有的 全部折叠 命令一起使用。未解决的注释的图标现在与 注释 视图中使用的图标相同。

配置默认日志级别

您现在可以通过 开发人员:设置日志级别... 命令配置 VS Code 或扩展的默认日志级别。这在重启之间保留,并在机器之间同步。

Default log level dropdown with several extensions listed

选择扩展会显示与默认日志级别相同的日志级别下拉菜单。

扩展编辑器中已验证的发布者域名

扩展编辑器现在在已验证指示器旁边显示已验证的发布者域名。下面,显示了 prettier.io 域名在已验证徽章的右侧。

Prettier extension in the extension editor displaying verified publisher domain prettier.io

编辑器

JSONC 文档排序

现在可以按键对 JSONC(带有注释的 JSON 文档)文件进行排序。要使用此功能,请从命令面板中选择 JSON:排序文档

用于匹配和颜色化的独立括号对

在此迭代中,我们更改了配置了 editor.language.bracketseditor.language.colorizedBracketPairs 时的行为。之前,设置 editor.language.colorizedBracketPairs 会覆盖 editor.language.brackets 的括号匹配(因为两者都使用相同的 括号对树)。现在,两种设置的并集用于括号匹配,但仅配置在 editor.language.colorizedBracketPairs 中的括号才会被颜色化。

源代码管理

Git 提交语法高亮显示

VS Code 采用了一种新的 Git 语法,它为 Git 提交消息文件提供语法高亮显示。新的语法对英语以外的语言具有更好的支持。

Git 和 GitHub 文档

无论您是刚开始使用源代码控制还是经验丰富的 Git 用户,您都可以在我们的文档的 源代码控制 部分了解有关 VS Code 的 Git 集成的更多信息。文章包括:

Notebook

内核选择器默认模式:最近使用 (MRU)

内核选择器现在默认显示最近使用的 (MRU) 内核。 这是与之前的行为不同的变化,之前的行为是显示所有可用的内核。 您仍然可以通过辅助选择器 选择另一个内核... 查看所有内核,当您安装了最新的 JupyterPython 扩展时,内核将按其来源分组(例如:Jupyter 内核、Python 环境等)。

Notebook kernel picker with MRU list and using the Select Another Kernel option

笔记本渲染器性能诊断

运行笔记本单元格时,某些笔记本输出渲染器可能需要很长时间才能渲染。 为了帮助识别这些渲染器,我们已在笔记本单元格状态栏的悬停提示中添加了诊断信息。 此视图显示每个渲染器执行所花费的时间以及总执行时间。 此外,悬停提示中的链接将打开问题报告器,并预先填充渲染器的名称和执行时间,以便您在发现渲染器执行时间过长时可以轻松提交问题。

Image showing the cell Status bar hover with renderer execution times

内置错误渲染器现在支持指向文件和行号的链接。 这允许您单击错误消息中的文件路径并在编辑器中打开该文件。

Jupyter 扩展的错误渲染器已被弃用,转而使用内置错误渲染器。

Notebook built-in error renderer

语言

需要链接到另一个 Markdown 文档中的标题,但记不住或不想输入完整的路径? 尝试使用工作区标题补全! 只需在 Markdown 链接中键入 ##,即可查看当前工作区中所有 Markdown 标题的列表。

Suggestions for all Markdown headers in the current workspace

选择其中一个补全项即可插入指向该标题的完整链接,即使它位于另一个文件中。

Adding a link to the selected header in another file

您可以使用 Markdown > 建议 > 路径:包含工作区标题补全 设置 (markdown.suggest.paths.includeWorkspaceHeaderCompletions) 配置是否/何时显示工作区标题补全。

有效的设置值是

  • onDoubleHash(默认值)- 仅在键入 ## 后显示工作区标题补全。
  • onSingleOrDoubleHash - 在键入 ### 后显示工作区标题补全。
  • never - 从不显示工作区标题补全。

请记住,查找当前工作区中的所有标题可能代价高昂,因此首次请求时可能会有轻微延迟,尤其是在具有大量 Markdown 文件的工作区中。

新的 markdown.preferredMdPathExtensionStyle 设置配置 VS Code 是否更喜欢在链接到 Markdown 文件时使用文件扩展名。 此首选项用于语言工具,例如 路径补全链接重命名

有效的设置值是

  • auto - 尝试保留文件扩展名的现有样式。
  • includeExtension - 在链接中包含尾随 .md
  • removeExtension - 从链接中删除尾随 .md

远程开发

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

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

远程菜单

在此里程碑中,我们对可通过单击状态栏左下角的远程指示器访问的远程菜单进行了多项可用性改进。

  1. 现在有一个默认的键盘快捷键来打开远程菜单:⌥⌘O (Windows, Linux Ctrl+Alt+O)

  2. 我们减少了远程扩展对远程菜单的贡献,以便一目了然地查看所有连接到远程窗口的操作。

    • 打开远程窗口的基本操作现在始终在远程菜单中可用,因此即使您已经在远程窗口中,也可以发现连接到另一个远程的操作。
    • 大多数用于配置或开始使用远程的操作已从远程菜单移动到命令面板,以节省远程菜单的空间。
  3. 远程菜单中的 安装其他远程扩展 选项现在指向一个精选的远程开发扩展列表,如果所有此类扩展都已安装,则该选项将从远程菜单中隐藏。

远程仓库

在此里程碑中,我们介绍了 远程仓库 扩展中的 浏览和编辑远程仓库而无需克隆 教程,以帮助您搜索、编辑和创建在 GitHub 和 Azure Repos 中的快速提交,而无需本地克隆。

您还可以查看 远程仓库教程 以帮助您入门。

Web 版 VS Code

在此里程碑中,我们为托管在 GitHub 和 Azure Repos 仓库的 Git LFS 跟踪文件添加了实验性的只读支持,在 vscode.dev 上。

在下面的简短视频中,存储在 vscode-docs 仓库中的 Git LFS 上的图像在滚动 vscode.dev 上的 Markdown 预览时可见。

当您查看 GitHub 或 Azure Repos 仓库中的文件时,基于您的 .gitattributes 配置,我们会检测该文件是否由 LFS 跟踪,是否需要从 GitHub 或 Azure Repos 的 LFS 服务器获取。

您还可以使用 GitHub RepositoriesAzure Repos 扩展与 VS Code Desktop 浏览包含 Git LFS 跟踪文件的仓库,而无需克隆。

可以使用以下设置禁用此行为

  • "githubRepositories.experimental.lfs.read.enabled": false
  • "azureRepos.experimental.lfs.read.enabled": false

VS Code 尚未支持提交 Git LFS 跟踪的文件,并且 github.dev 不支持 Git LFS 读取支持。

扩展

改进的扩展搜索相关性

我们改进了 扩展视图市场 画廊中扩展搜索结果的相关性。 结果现在应该更合适,尤其是在进行多词查询时。

之前 之后
Search results for "mono debugger" showing Java debugger extension as the top result Search results for "mono debugger" showing Mono debug extension as the top result

对扩展的贡献

Jupyter

IPyWidgets

Jupyter 扩展现在支持 IPyWidgets 的版本 8。 依赖于 IPyWidgets 7.* 的 Python Widgets 将继续工作,因为同时支持版本 7.*8.*

交互式窗口内核选择

自动选择 交互式窗口 的内核已被修改,以更好地与新的内核选择器 UI 配合使用。 当前活动解释器将被使用,除非在工作区中之前为交互式窗口选择了另一个内核,在这种情况下,将使用先前选择的内核。

Python

改进了对 pytest 的 IntelliSense 支持

Pylance 扩展现在具有强大的功能,可以帮助您在编写清晰、简洁且易于理解的 pytest 测试时更高效、更有效地工作。

  • 对 pytest fixture 和参数化参数的支持,包括补全、转到定义查找所有引用重命名符号 (F2)。
  • 通过内联提示(通过 "python.analysis.inlayHints.pytestParameters" 设置启用)和通过代码操作,支持 pytest 参数的类型注释。
  • 基于装饰器提供的参数值,对参数化 pytest 参数进行类型推断。

下面的简短视频重点介绍了这些新的 pytest 功能

GitHub 拉取请求和议题

GitHub 拉取请求和问题扩展取得了更多进展,该扩展允许您处理、创建和管理拉取请求和问题。亮点包括

  • PR 描述和评论中的永久链接渲染。
  • 从描述页面重新请求评审。
  • 已签出的 PR 中文件的快速差异。

查看 扩展 0.60.0 的 changelog 以查看其他亮点。

预览功能

全局搜索现在支持显示来自笔记本的结果,就像在笔记本编辑器中显示的一样。 启用 search.experimental.notebookSearch 以尝试此功能,并告诉我们您遇到的任何错误! 目前,这仅支持搜索单元格输入和单元格中的 Markdown 源代码。

主题:Community Material Theme(在 vscode.dev 上的预览)

异步标记化

此版本提供了实验性的异步标记化功能。 此功能允许编辑器在单独的 Web Worker 中标记化文档,这可以提高编辑器在文档较大时的响应速度。

目前,异步标记化默认情况下处于禁用状态,但可以通过将 editor.experimental.asyncTokenization 设置为 true 来启用。

TypeScript 5.0 支持

此更新包含对即将发布的 TypeScript 5.0 版本的支持。 请参阅 TypeScript 5.0 Beta 博客文章TypeScript 5.0 迭代计划 以获取有关 TypeScript 团队当前正在进行的工作的更多详细信息。 一些编辑器工具亮点

  • 新的 switchcase 补全可以帮助您更快地填写 switch 语句的两个部分。
  • github.devvscode.dev 上启用项目范围的 IntelliSense 的工作。

要开始使用 TypeScript 5.0 nightly 构建,请安装 TypeScript Nightly 扩展或安装最新的 VS Code 1.76+ Insiders 构建

扩展创作

在此迭代中,我们引入了对 InputBox 提示和验证消息中链接的支持。 在这些字符串中,您现在可以使用以下语法创建链接

[link text](link target)

链接目标可以是 URL 或命令 ID。 当用户单击链接时,链接目标将在浏览器中打开或作为命令执行,具体取决于情况。

示例

const result = await vscode.window.showInputBox({
  prompt:
    'Please enter a valid email address [more info](https://aka.ms/vscode-email-validation)',
  validateInput: text => {
    if (text.indexOf('@') === -1) {
      return 'Please enter a valid email address, [more info](https://aka.ms/vscode-email-validation)';
    }
    return undefined;
  }
});

这将产生以下提示

Prompt contains a link that is underlined

以及以下验证消息

Validation message contains a link that is underlined

主题:熊猫主题(在 vscode.dev 上预览)

此行为适用于 showInputBoxcreateInputBox API。

* 激活事件的信息诊断

当扩展使用 *(星号)激活事件时,它会在 VS Code 启动过程中被激活。 这可能会延迟 VS Code 的启动。 为了帮助扩展作者了解使用 * 激活事件的影响,我们添加了一个信息诊断,该诊断在扩展使用 * 激活事件时显示。 该诊断显示在“问题”视图中,并且在扩展编辑器中也可见。

Diagnostic for * activation event

有关 * (星号) 激活的更多信息,您可以阅读 激活事件 文档。

关于 when 子句上下文解析的即将到来的变更

When 子句 用于扩展清单文件 (package.json),允许扩展有选择地启用和禁用贡献,例如命令和 UI 元素(例如,菜单或视图)。下一个 VS Code 版本计划包含一个用于 when 子句的新解析器。新的解析器提供更多功能和正确性,但它也强制执行更严格的 when 子句规则,并可能导致现有 when 子句出现一些破坏。请查看 issue #175540 以了解有关破坏和新功能的更多信息。我们还鼓励您订阅该 issue 以获取有关新解析器的更新,包括新功能、破坏和迁移指南。

即将到来的 Electron 更新可能需要对本机模块进行强制性更改

我们计划在下一个稳定版本中更新到 Electron 22。由于启用了 V8 内存笼,这会对利用本机模块的扩展产生影响:指向外部(“堆外”)内存的 ArrayBuffers 不再允许。这意味着依赖于 V8 中此功能的本机模块需要进行重构,才能继续在 VS Code 1.77 及更高版本中工作。

请遵循 Electron 博客文章 中的建议,了解如何使您的本机模块与未来版本的 VS Code 兼容。

语言服务器协议

新版本的 语言服务器协议 (LSP) 客户端 (8.1.0) 和服务器 (8.1.0) npm 包已发布。这些是错误修复版本(主要是为了解决在使用全文文档同步时请求顺序出现问题),并且包含针对 JSON-RPC 库的自定义消息处理的 API 添加。

提议的 API

每个里程碑都会带来新的提议 API,扩展作者可以尝试这些 API。一如既往,我们希望得到您的反馈。以下是尝试提议 API 的步骤

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

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

OpenDialogOptions allowUIResources

当扩展知道它们正在远程扩展主机中运行时,可以使用 allowUIResources 使 显示本地 按钮在打开文件对话框中显示。使用 allowUIResources 的扩展应始终检查返回的 URI 的方案。

QuickPickItems 的工具提示

在此迭代中,我们引入了一个新的提议的 API,用于 QuickPickItemtooltip 属性。此属性允许您为 Quick Pick 中的每个项目指定工具提示。当用户将鼠标悬停在项目上时,将显示工具提示,或者可以使用 Ctrl+Space 进行切换。

示例

await vscode.window.showQuickPick(
  [
    {
      label: 'label',
      tooltip: 'tooltip'
    },
    {
      label: 'label2',
      tooltip: new vscode.MarkdownString('tooltip2 [link](https://github.com)')
    }
  ],
  {
    placeHolder: 'placeholder'
  }
);

这将产生以下 Quick Pick

主题:熊猫主题(在 vscode.dev 上预览)

显然,这是一个不需要工具提示的简单示例。当您想要提供可能包含多行或指向其他资源的较长描述时,工具提示很有用。

我们认为此属性是 Quick Pick API 的一个很好的补充,并期待您的反馈。

工程

更多 Electron UtilityProcess 采用

作为我们 进程沙盒之旅 的一部分,我们希望确保我们的应用程序中没有启用 Node.js 的浏览器窗口。在这个里程碑中,我们开始将我们剩余的最后一个进程从隐藏的 Node.js 浏览器窗口转换为 Electron UtilityProcess。作为这项工作的一部分,文件监视器进程也必须移到它自己的 UtilityProcess 中。

一个新的设置 window.experimental.sharedProcessUseUtilityProcess 启用了 UtilityProcess 的使用,我们计划在下一个版本中使其成为默认设置。

macOS 10.11 和 10.12 支持已结束

如我们在 1.75 版本说明 中提到的那样,1.76 是支持 macOS 10.11 (OS X El Capitan) 和 10.12 (macOS Sierra) 的最后一个版本。请参阅我们的 FAQ 以获取更多信息。

值得注意的修复

  • 168939 在重新加载和视图移动时持久化徽章隐藏状态。
  • 164397 macOS RTL 中布局控件位置错误。

感谢

最后但同样重要的是,向 VS Code 的贡献者们致以衷心的感谢

问题跟踪

对我们问题跟踪的贡献

拉取请求

vscode 的贡献

vscode-pull-request-github 的贡献

vscode-vsce 的贡献

monaco-editor 的贡献

© . This site is unofficial and not affiliated with Microsoft.