现已推出!阅读 10 月份的新功能和修复。

2022 年 8 月(版本 1.71)

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

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

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


欢迎使用 Visual Studio Code 的 2022 年 8 月版本。8 月份是 VS Code 上许多工程师休假的时候,但这个版本中仍然有很多更新,我们希望您会喜欢。

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

内部人员:想要尽早尝试新功能?您可以下载夜间构建的 内部人员 版本,并在新功能可用时立即尝试。

工作台

合并编辑器改进

从包含冲突的文件中打开合并编辑器

包含冲突的文件现在会自动显示一个在合并编辑器中打开按钮,用于在文本编辑器和合并编辑器之间切换。

打开合并编辑器时文件未修改

VS Code 在合并编辑器中打开结果文件时不再修改它(冲突区域已被替换为基线)。相反,冲突标记保留在文件中,但在结果视图中处于隐藏状态。可以使用复选框将冲突标记替换为任一侧、两侧的组合,或者通过取消选中它们将其替换为基线。

恢复旧的冲突装饰器

旧的内联冲突装饰器不再禁用,因此合并编辑器和内联体验可以一起使用。当合并编辑器打开时,您可以在编辑器工具栏中单击一次,即可获得之前的体验。

通过单击源代码管理视图中文件名旁边的相同图标,您也可以完全跳过合并编辑器。

但是,您可以随时在新的和旧的体验之间切换,甚至可以并行使用它们。

复选框改进

我们现在确保冲突的复选框始终可见,即使冲突大于视窗。使用颜色来强调未处理冲突的复选框。

差异算法改进

我们开始探索替代的差异算法,以提高冲突的质量。可以使用以下设置启用新的实验性差异算法。

"mergeEditor.diffAlgorithm": "experimental",

此新算法尚未针对性能进行优化,但在许多边缘情况下改进了合并编辑器体验。

展望未来

在这个版本中,我们重点关注合并编辑器中最重要的 UX 问题,并修复了许多错误。如果您仍然对新的合并编辑器感到困惑,我们很乐意听到您的反馈!请在我们的存储库中创建新问题,分享屏幕截图和您的合并编辑器状态(使用将合并编辑器状态复制为 JSON命令)。我们非常感谢迄今为止收到的所有反馈,更多反馈将帮助我们为每个人提供出色的合并编辑器体验。

我们未来的工作将重点关注独立的基线视图冲突缩减、差异算法改进,以及其他改进

FFmpeg 编解码器支持

作为 VS Code 一部分提供的FFmpeg 共享库以前只支持FLAC编解码器。在此版本中,库已更新以支持以下编解码器和容器列表。这将允许从笔记本播放更多音频和视频文件,或者通过将音频和视频嵌入到 Webview 中的扩展来播放。

  • Vorbis
  • Flac
  • H.264
  • VP8
  • WAV
  • MP3
  • Ogg

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

资源管理器重命名选择改进

在对文件启动重命名操作后,按F2键将循环遍历文件名、整个选择和文件扩展名,以允许更灵活的键盘操作。

圆角按钮

我们更新了所有按钮,使其具有轻微的圆角,以更好地匹配我们的设计美学。

An example of a button with rounded corners

主题:Material Theme Palenight 高对比度

Windows 上的窗口控件叠加

在 1.68 版本中,VS Code 采用了来自 Electron 的窗口控件叠加 功能支持,该支持位于一个实验性标志后面,默认情况下处于关闭状态。我们已解决围绕此功能影响 VS Code 的剩余问题,使我们能够默认情况下为 Windows 上的所有用户启用它。

窗口控件叠加功能使 Windows 11 上的 VS Code 用户可以选择快照布局 将 VS Code 放置在他们的桌面上。

Windows Snap Layouts control in the right of the VS Code title bar

树视图扩展模式

设置工作台 > 树:扩展模式workbench.tree.expandMode),用于控制树节点是单击一次还是双击一次展开,现在将受到扩展贡献的树视图的尊重。

编辑器

粘性滚动

粘性滚动显示视窗顶部当前的范围。此功能不再是实验性的,可以通过editor.stickyScroll.enabled设置启用。进一步的改进是

  • 可以使用编辑器 > 粘性滚动:最大行数editor.stickyScroll.maxLineCount)设置来设置显示的最大行数。默认最大值为 5 行。
  • 您可以在粘性滚动中使用Ctrl/Cmd + Click导航到定义。

新的代码操作控件

我们彻底改造了代码操作控件。现在不再是简单的代码操作菜单,而是一个自定义控件,使您更容易找到所需的代码操作。

The new Code Action control showing Quick Fixes and refactorings

新的控件还允许 VS Code 显示更多信息。例如,您现在可以将鼠标悬停在禁用的代码操作上,了解它们为何被禁用。

Hovering over a disabled Code Action to understand why it is disabled

您还可以通过修改以下命令的键绑定来自定义用于在代码操作列表中导航的键盘快捷键。

  • selectNextCodeAction
  • selectPrevCodeAction
  • acceptSelectedCodeAction

展望未来,新的代码操作 UI 为进一步的 UX 改进提供了坚实的基础。如果您有任何建议,请务必告知我们!

配置建议匹配

有一个新的设置来配置 IntelliSense 筛选。默认情况下,第一个字符必须匹配单词开头,例如c必须匹配consoleWebContext,但不会匹配descriptioneditor.suggest.matchOnWordStartOnly设置会更改此行为。禁用后,筛选会考虑任何匹配项 - 这会导致更多结果,但筛选仍然会根据匹配质量进行。

在下面的简短视频中,您可以看到当matchOnWordStartOnly被禁用时,'dir' 的建议包含更多项目,例如 'mkdir' 和 'makedirs'。

源代码管理

提交操作按钮改进

用户可以通过git.postCommitCommand设置全局控制在成功提交操作后执行的辅助操作(例如,pullsync)。在本里程碑中,我们添加了一个新的设置git.rememberPostCommitCommand,可以启用它来记住每个存储库最后执行的辅助操作。

终端

Shell 集成改进

本版本对 Shell 集成进行了以下改进

  • Fish Shell 集成仅作为实验性手动安装提供。有关如何安装它的信息,请参阅Shell 集成文档
  • Windows Shell 集成的 Git Bash 仅作为实验性手动安装提供。有关详细信息,请参阅手动安装部分
  • 支持常见的替代当前工作目录序列:OSC 6 ; scheme://<cwd> STOSC 1337 ; CurrentDir=<cwd> STOSC 9 ; 9 ; <cwd> ST
  • 更好地处理各种 Shell 集成边缘情况

平滑滚动

终端现在支持平滑滚动,这将使滚动动画持续一小段时间,帮助您在滚动后查看您的位置,类似于编辑器和列表。要启用平滑滚动,请设置

"terminal.integrated.smoothScrolling": true

下划线样式和颜色

现在支持下划线样式和颜色,使用最初由 Kitty 终端开创的转义序列。对于支持的程序,这些新的下划线应该自动亮起来,前提是它们将这些序列发送到 VS Code 终端。

The terminal can now display straight, double, curly, dotted, and dashed underlines in any color

此更改中包括在启用 GPU 加速时改进的下划线渲染,这避免了带有长下降字母的字形和下划线重叠

An example showing that characters with descenders such as 'g' and 'p' no longer overlap with underlines

由于ConPTY 中的一个未解决问题,目前在 Windows 上不支持下划线样式和颜色。

渲染改进

对终端渲染进行了多项改进

  • 修复了一个长期存在的错误,该错误有时会导致工作台放大或缩小时出现模糊!

    Text is now more crisp as canvas is no longer stretched, which caused anti-aliasing to look poorly

  • 启用最小对比度比并且文本亮度需要翻转以确保满足对比度比时,文本的色调现在将保留。

    Bold yellow text on red in some themes will now display as dark yellow instead dark grey

  • 新的主题键terminal.inactiveSelectionBackground可用,无论终端是否处于焦点状态,都可以显示不同的选中背景颜色,以便更好地与编辑器保持一致。

    Most themes now dim the selection background color when not focused

  • 自定义 Powerline 字形渲染已改进边缘裁剪。这在半圆字符上最为明显,这些字符现在应该是一条平滑的曲线。

    Powerline glyphs are no longer cut off on the edges

任务

窗口重新加载时重新连接

现在,监视任务在窗口重新加载时会重新连接,从而在 VS Code 更新或扩展状态更改时实现无缝工作。任务重新连接默认启用,但可以通过task.reconnection设置禁用。

调试

launch.json 中的suppressMultipleSessionWarning选项

当您尝试使用启动配置启动调试,但该配置已经有一个活动的调试会话时,VS Code 将在启动第二个实例之前显示一个警告对话框。这很容易意外发生,通常不是您的本意。但是,如果在您的工作流程中运行多个相同配置的实例,您现在可以通过将"suppressMultipleSessionWarning": true添加到您的launch.json配置文件来禁用此警告。

注释

过滤

注释视图有一个新的过滤器,您可以在其中按注释文本和已解决/未解决状态进行过滤。

编辑器装饰

注释编辑器边距装饰现在使用 codicons 并且有新的样式。

语言

TypeScript 4.8

VS Code 现在附带 TypeScript 4.8.2。此重大更新为类型检查和推断带来了语言改进。在工具方面,您还应该看到一些不错的性能改进和错误修复!

查看TypeScript 4.8 公告以了解有关此更新的更多信息。

TypeScript 直播

如果您错过了 VS Code直播关于 TypeScript 的内容,请查看与Matt Pocock的两个最近的会议。

VS Code livestreams page

对扩展的贡献

Jupyter

笔记本图像粘贴

Jupyter 扩展现在允许用户将屏幕截图或图像文件粘贴到笔记本中的 Markdown 单元格中。目前仅支持image/png MIME 类型。要使用此功能,请添加/启用以下设置

"ipynb.experimental.pasteImages.enabled": true
"editor.experimental.pasteActions.enabled": true

使用 Pylance 改进 Jupyter 笔记本的 IntelliSense

使用 Python 内核的 Jupyter 笔记本的 IntelliSense 支持现在在使用Pylance时有了很大的改进,这要归功于语言服务器协议中的更新以包括笔记本支持。

您不仅会在笔记本文件中编写 Python 代码时获得改进的自动完成选项,而且还能够使用重构功能(例如提取变量、提取方法和重命名符号)以及自动导入和语义突出显示。

主题:Horizon Extended(在vscode.dev上预览)

实时预览

实时预览扩展现在正式支持多根工作区!虽然用户以前可以在技术上在多根工作区中使用实时预览,但现在有一个更清晰的实现来支持它。

实时预览扩展现在为您的多根工作区中的每个根启动一个新服务器;因此,与项目根目录相关的链接(以/开头的链接)在预览多根工作区时将正常工作。

主题:GitHub Dark Dimmed(在vscode.dev上预览)

您可以通过将鼠标悬停在实时预览的状态栏指示器(位于右下角)上,查看扩展打开的服务器。在下图中,每个工作区都启动了一个服务器(在端口 3000 和 3002 上),并且为一个未来自任何打开工作区的文件生成了另一个服务器(在端口 3004 上)。

Live Preview multi-root ports displayed from the Status bar indicator

安装实时预览扩展,今天就试试吧!📡✨🔎

GitHub Pull 请求和问题

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

  • Pull 请求的通知。
  • 可以直接从 Pull 请求概述中解决/取消解决审阅评论。

查看扩展的 0.50.0 版本的变更日志以查看其他亮点。

远程开发

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

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

预览功能

厌倦了在移动或重命名文件时意外破坏 Markdown 中的链接或图像?试试新的markdown.experimental.updateLinksOnFileMove.enabled设置!

启用此新的实验性设置后,VS Code 将在 VS Code 资源管理器中移动或重命名文件时自动更新 Markdown 中的链接和图像

可以使用markdown.experimental.updateLinksOnFileMove.enabled设置启用此新行为。您可以使用markdown.experimental.updateLinksOnFileMove.externalFileGlobs控制受影响的文件类型。

尝试一下这个新功能,并确保分享您的反馈。

设置配置文件

我们过去几个月一直在努力在 VS Code 中支持设置配置文件,这是社区最受欢迎的要求之一。此功能可通过workbench.experimental.settingsProfiles.enabled设置进行预览。尝试一下,并通过在vscode 存储库中创建问题或在问题 #116740中发表评论来提供您的反馈。

命令行界面

在本里程碑中,我们添加了对设置配置文件的命令行界面 (CLI) 支持。您现在可以使用--profile参数传递配置文件的名称,并使用该配置文件打开文件夹或工作区。以下命令行使用“Web 开发”配置文件打开web-sample文件夹

code ~/projects/web-sample --profile "Web Development"

如果指定的配置文件不存在,则会创建一个具有给定名称的新空配置文件。

临时设置配置文件

现在还支持临时设置配置文件,该配置文件可以创建并临时与文件夹或工作区关联。临时配置文件将在不再与任何文件夹或工作区关联后自动删除。

在下面的简短视频中,当用户打开一个文件夹并选择设置配置文件:创建临时设置配置文件命令时,将创建一个新的“Temp 1”配置文件,并且该配置文件在配置文件列表中可见。关闭文件夹后,“Temp 1”配置文件将被删除。

您也可以使用--profile-temp开关从 CLI 创建一个临时设置配置文件并将其与文件夹或工作区关联。以下命令行使用一个临时配置文件打开try-out-sample文件夹,该配置文件在关闭文件夹后会被删除

code ~/projects/try-out-sample --profile-temp

在跨开发环境移动时随身携带您的更改

当您浏览 GitHub 或 Azure Repos 存储库(例如https://vscode.dev/github/microsoft/vscode)时,您可以使用继续工作命令来选择一个不同的开发环境与您的存储库一起使用。

以前,如果您在虚拟工作区中有待处理的编辑,则需要将它们推送到 GitHub 或 Azure Repos 才能在其他地方查看它们。在本里程碑中,我们已将编辑会话集成到继续工作功能中,以便您的未提交更改会自动与您一起移动到目标开发环境,例如 GitHub Codespace。

在下面的视频中,用户使用 VS Code for the Web 时对 TypeScript 文件所做的更改在创建并切换到新的 GitHub Codespace 中工作时应用。

要试用此功能,请在您的设置中将 "workbench.experimental.editSessions.enabled": true 设置为真,启用 设置同步,并在 VS Code for the Web 或桌面中运行 编辑会话:登录 命令。

当您使用 VS Code for the Web 时,您的未提交更改将在您使用 继续工作 时随您一起移动

  • GitHub Codespaces 中的新云托管环境
  • GitHub 存储库的新本地克隆
  • 具有相同虚拟 GitHub 存储库的本地 VS Code 实例

当您使用桌面 VS Code 以及 远程存储库 扩展时,您的未提交更改将在您使用 继续工作 时随您一起移动

  • GitHub Codespaces 中的云托管环境(可通过 GitHub Codespaces 扩展获得)
  • GitHub 存储库的新本地克隆
  • 容器卷中 GitHub 存储库的新克隆(可通过 开发容器 扩展获得)
  • https://vscode.dev
  • 包含存储库克隆的现有本地文件夹

扩展开发

TerminalExitStatus.reason

扩展作者现在可以通过新的 TerminalExitReason API 更好地了解终端退出的原因。

export enum TerminalExitReason {
  Unknown = 0,
  Shutdown = 1,
  Process = 2,
  User = 3,
  Extension = 4
}

枚举设置 enumItemLabels 文档

设置编辑器中的枚举设置支持 enumItemLabels 键,这允许扩展作者指定在与 enum 值对应的下拉列表中显示的值。

Example of enumItemLabels with a mock setting. The select box displays the label value, and the dropdown options display both the label value and the enum value, though the enum values are rendered less prominently.

主题:浅粉色(在 vscode.dev 上预览)

新的 activeWebviewPanelId 上下文键

新的 activeWebviewPanelId 上下文键 跟踪当前聚焦的 Webview 面板的 viewType。您可以在 when 子句中使用它,以便在您的 Webview 聚焦时启用命令或菜单项。

"when": "activeWebviewPanelId == 'markdown.preview'"

Web 上的 TypeScript 服务器插件

TypeScript 语言服务插件 现在支持 Web。这适用于使用 typescriptServerPlugins 贡献点由扩展贡献的插件。

要开始使用,您必须首先告诉 TypeScript 您的插件已启用 Web,方法是在 package.json 中添加 browser 入口点,除了 main 之外。

"main": "out/main.js",
"browser": "out/main.browser.js"

browser 入口点必须是一个 JavaScript 模块,它导出一个激活插件的默认函数。

export default function init(modules: { typescript: typeof import("typescript/lib/tsserverlibrary") }) {
  ...
};

请记住,在 Web 上,您的插件将在正常的 Web 工作者环境中运行,因此您 **不能** 使用 Node.js API,例如 fs

禁用的树项

其启用子句解析为假的命令的树项将显示为禁用。

Markdown 语言服务器

VS Code 中的 Markdown 支持已重新实现为一个功能齐全的 语言服务器。您可以阅读有关 Matt Bierner 的旅程,在他的 Markdown 语言服务器博客文章 中,他描述了为 Markdown 文件添加编程语言功能,例如 查找所有引用重命名符号 和损坏链接检测。

即将对“view/title”菜单上下文进行的更改

在 8 月,我们尝试为贡献给树视图 view/title 菜单的命令传递视图树的焦点和选择。在此版本中,我们恢复了更改,因为它导致了一些扩展出现问题。我们希望恢复更改并在 9 月发布它。如果此更新会破坏您的扩展,或者您认为此行为不可取,请在 问题 #42903 中留言。

调试适配器协议

对“startDebugging”请求的提案

如今,VS Code 支持多个并发调试会话,但 调试适配器协议 (DAP) 仅涵盖单个会话。这意味着以编程方式创建新的调试会话不是 DAP 的一部分,只能在 DAP 或调试适配器之外进行,通常在包含调试适配器的调试扩展中进行。这样做的结果是,多会话功能(例如调试子进程)对于仅重用调试适配器而不重用 VS Code 特定调试扩展的非 VS Code DAP 客户端来说并不容易实现。

为了改善这种情况,我们计划在 DAP 中添加一个新的反向请求,以从调试适配器内部创建一个新的调试会话。经过几轮讨论后,我们准备了一个关于 startDebugging 反向请求的 提案。如果您是调试扩展或 DAP 客户端作者,并且对这种 DAP 协议添加感兴趣,我们希望收到您的反馈。

工程

Electron 19 更新

在这个里程碑中,我们完成了将 Electron 19 打包到 VS Code 桌面中的探索,我们要感谢所有参与 Insiders 上的自托管的人员。此更新附带 Chromium 102.0.5005.167 和 Node.js 16.14.2

Windows 7 支持已结束

Microsoft 于 2020 年 1 月 停止支持 Windows 7。但是,Electron 通过修补 libuv 库继续支持 Windows 7。随着 Electron 19 更新,libuv 修补程序 不再有效,我们建议用户更新到更新的 Windows 版本以使用 VS Code 桌面版本。VS Code 将不再为 Windows 7 提供产品更新和安全修复。您可以在 support.microsoft.com 上详细了解升级 Windows 的信息。

值得注意的修复

  • 115768 Windows:不同显示器上的不同缩放级别无法在正确位置恢复窗口
  • 133444 将设置选项卡拖动到另一个编辑器组会清除搜索查询
  • 140305 跨越多个屏幕扩展的主窗口在重新打开时无法恢复位置
  • 146683 打开时的窗口布局样式错误
  • 148492 为工作区文件使用平台无关路径
  • 154963 修复了扩展演练中的 codicon 支持
  • 155341 如果数据写入延迟,则将数据管道输送到 VS Code 会失败
  • 156075 [Emmet] 每个语言的“在 Tab 上触发扩展”
  • 156385 运行最近的命令显示已解析的别名 - ls--color=auto 附加到执行的命令

感谢

最后但并非最不重要的一点,我们要对 VS Code 的贡献者表示衷心的 感谢

问题跟踪

对我们的问题跟踪的贡献

拉取请求

vscode 的贡献

vscode-extension-samples 的贡献

devcontainers/cli 的贡献