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

2023 年 6 月(版本 1.80)

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

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

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


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

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

内部人员:想尽快尝试新功能?您可以下载夜间 内部人员 构建并尽快尝试最新更新。

辅助功能

辅助功能视图

新的命令打开辅助功能视图 (⌥F2(Windows Alt+F2,Linux Shift+Alt+F2) 允许屏幕阅读器用户逐个字符、逐行检查内容。在将光标悬停在悬停或聊天面板响应上时调用此命令。

辅助功能帮助改进

新的命令打开辅助功能帮助 (⌥F1(Windows Alt+F1,Linux Shift+Alt+F1) 将根据当前上下文打开一个帮助菜单。它目前适用于编辑器、终端、笔记本、聊天面板和内联聊天功能。

禁用辅助功能帮助菜单提示,并从帮助菜单中打开其他文档(如果有)。

笔记本的辅助功能帮助

为笔记本添加了一个新的辅助功能帮助菜单,以提供有关编辑器布局以及导航和与笔记本交互的信息。

聊天音频提示

现在,GitHub Copilot 聊天体验提供了音频提示,可以通过 audioCues.chatRequestSentaudioCues.chatResponsePendingaudioCues.chatResponseReceived 启用这些提示。

聊天辅助功能改进

聊天响应会在收到时立即提供给屏幕阅读器,并且内联和聊天面板辅助功能帮助菜单包含有关预期内容以及如何与每个功能交互的更多详细信息。

设置编辑器 alt 文本改进

设置编辑器(可以通过首选项:打开设置(UI)命令访问)现在在使用屏幕阅读器导航时信息量更少。尤其是,设置作用域切换器会宣布作用域的实际名称,而不是文件路径,并且设置描述 alt 文本已清理,不再包含原始 Markdown 格式化。

Navigating through the Settings editor with NVDA on Windows

工作台

预览视频的自动播放和循环

您现在可以为内置视频文件预览启用视频自动播放和循环。相关设置是

  • mediaPreview.video.autoPlay — 启用视频自动播放。自动播放的视频会自动静音。
  • mediaPreview.video.loop — 启用视频循环。

默认情况下,这些设置处于关闭状态。

编辑器处于只读状态时的更多帮助

随着 VS Code 上个里程碑中引入的只读模式,编辑器可以由于工作区配置而处于只读状态。

在这个里程碑中,我们在您尝试在只读编辑器中键入时增强了编辑器中的通知消息,并在某些情况下提供了一个链接来更改 files.readonly 设置。

默认文件对话框位置

新的设置 files.dialog.defaultPath 可以配置文件对话框(例如打开或保存文件或文件夹时)打开时应显示的默认位置。此默认值仅用作在没有其他已知位置时的后备,例如在空的 VS Code 窗口中。

禁用双击选项卡时最大化编辑器组

新的设置 workbench.editor.doubleClickTabToToggleEditorGroupSizes 禁用双击该组的选项卡时,将编辑器组的大小从最大化切换到还原。

控制固定宽度选项卡的最小宽度

新的设置 workbench.editor.tabSizingFixedMinWidth 控制 workbench.editor.tabSizing 设置为 fixed 时选项卡的最小大小。固定选项卡宽度在1.79 版发行说明中进行了更详细的说明。

编辑器组拆分调整大小已更改为“自动”

workbench.editor.splitSizing 设置的称为 auto 的新值是新的默认值。在此模式下,仅当没有编辑器组调整大小的情况下,拆分编辑器组才会将可用大小均匀地分配给所有编辑器组。否则,拆分编辑器组的空间将被分成两半,并放置在新编辑器组中。

此更改的目的是在拆分时不破坏您已创建的布局,但仍保留先前将大小均匀分配的其他默认行为。

搜索 .gitignore 排除行为

search.useIgnoreFiles 设置为 true 时,无论工作区是否已初始化为 Git 存储库,都会尊重工作区的 .gitignore

注释的最大高度

设置 comments.maxHeight 允许您禁用注释上的最大高度限制,例如,使用 GitHub 拉取请求和问题 扩展时,针对拉取请求显示的那些注释。

排查 VS Code 中的问题

命令面板中有一个新的命令帮助:排查问题,以帮助您排查 VS Code 中的问题。启动的工作流使用特殊的排查配置文件 和 VS Code 的扩展二分法 功能,帮助您识别问题的原因。扩展二分法将在您指示问题是否重现时,以二进制搜索方式启用和禁用已安装的扩展。这将缩小导致问题的扩展,并帮助您在报告问题时提供正确的信息。

禁用 Chromium 沙箱

如果您有必须以提升的权限启动 VS Code 桌面应用程序的场景,例如,您在 Linux 上使用 sudo 启动 VS Code,或在 Windows 上以管理员身份启动 VS Code,则需要使用 --no-sandbox --disable-gpu-sandbox 命令行选项启动 VS Code,才能使应用程序正常运行。

根据 问题 #184687 中的反馈,现在有两个新的设置,让您在需要禁用 Chromium 沙箱时更容易进行操作

  1. 新的命令行选项 --disable-chromium-sandbox,用于禁用应用程序中所有进程的 Chromium 沙箱。此新选项可用于替换 --no-sandbox --disable-gpu-sandbox。此选项适用于将来版本中运行时可能添加的任何新的进程沙箱。

  2. 要持续禁用所有启动的 Chromium 沙箱,请执行以下操作

    • 打开命令面板 (⇧⌘P(Windows,Linux Ctrl+Shift+P)。
    • 运行首选项:配置运行时参数命令。
    • 此命令将打开一个 argv.json 文件,用于配置运行时参数。您可能在那里看到一些默认参数。
    • 添加 "disable-chromium-sandbox": true
    • 重新启动 VS Code。

注意:除非您遇到问题,否则不要使用此设置!

编辑器

扩展选择时跳过子词

扩展选择缩小选择命令现在可以配置为跳过子词。这是通过 editor.smartSelect.selectSubwords 设置完成的。默认情况下,会选择子词,但现在可以禁用此功能。

  • true -> Co|deEditor 选择 [Code]Editor,然后选择 [CodeEditor]
  • false -> 代码编辑器选择[CodeEditor]

当您使用多个光标频繁地在异构词上进行扩展和收缩选择时,此设置非常有用。

改进的 JSX/TSX 中 CSS 模块的 Emmet 支持

Emmet 支持 JSX/TSX 文件的新缩写集。在 JSX 或 TSX 文件中键入..test,然后展开缩写,将添加行<div styleName={styles.test}></div>

可以使用emmet.syntaxProfiles设置配置属性名称和值前缀。通过以下方式配置emmet.syntaxProfiles设置

"emmet.syntaxProfiles": {
    "jsx": {
        "markup.attributes": {
            "class*": "className",
        },
        "markup.valuePrefix": {
            "class*": "myStyles"
        }
    }
}

然后在 JSX 或 TSX 文件中展开缩写..test,您将获得缩写<div className={myStyles.test}></div>

可调整大小的内容悬停

现在可以调整内容悬停控件的大小。您可以将鼠标悬停在控件边框上,然后拖动滑块以更改悬停的大小。

终端

图像支持

终端中的图像(在上次发布中预览)现在默认启用。终端中的图像通常通过将图像像素数据编码为文本来工作,该文本通过特殊的转义序列写入终端。当前支持的协议是 sixel由 iTerm 开创的内联图像协议

要手动测试图像,您可以从 libsixel 存储库 下载并cat一个.six示例文件

Running cat with a sixel file will print an image

或使用 imgcat python 包imgcat 脚本 以及 .png、.gif 或 .jpg 文件

Running imgcat with a png file will print the image

可以通过设置以下内容来禁用此功能

"terminal.integrated.enableImages": false

现在支持新的链接格式,包括需要向上扫描才能找到文件的链接以及具有范围(行到行或字符到字符)的链接。

  • @@ git 范围链接

    Links from git in the style '@@ - + @@' are now detected

  • OCAML 的 Dune 风格范围链接

    Links in the style 'File "src/cli.js", lines 15-19' are now detected
    Links in the style 'File "src/cli.js", line 15, characters 8-34' are now detected
    Links in the style 'File "src/cli.js", lines 15-19, characters 8-34' are now detected

  • ESLint 风格的多行链接

    Links from ESLint that prefix a result with 'line:col' now are detected

  • Ripgrep 风格的多行链接

    Links from ripgrep that prefix a result with 'line:' now are detected

已弃用的 shell 和 shellArgs 设置已删除

设置terminal.integrated.shell.*terminal.integrated.shellArgs.*已在一年前被 终端配置文件 替换,现在已被删除。如果您仍然使用旧的shellshellArgs设置,以下是一个前后示例,以帮助您迁移

// Before
{
  "terminal.integrated.shell.windows": "pwsh.exe",
  "terminal.integrated.shellArgs.windows": ["-Login"],

  "terminal.integrated.shell.osx": "bash",
  "terminal.integrated.shellArgs.osx": ["-l"],
}

// After
{
  "terminal.integrated.profiles.windows": {
    "PowerShell Login": {
      // Source is a special property that will use VS Code's logic to detect
      // the PowerShell or Git Bash executable.
      "source": "PowerShell",
      "args": ["-Login"],
      "icon": "terminal-powershell"
    },
  },

  "terminal.integrated.profiles.osx": {
    // This will override the builtin bash profile
    "bash": {
      "path": "bash",
      "args": ["-l"],
      "icon": "terminal-bash"
    }
  }
}

测试

终端输出支持

以前,测试结果视图中显示的测试输出始终显示在嵌入式文本编辑器中。这剥夺了它在终端中运行时可能具有的丰富样式,例如颜色、样式和符号。在此版本中,我们在一个真实的 xterm.js 终端中显示输出。

Results shown in the Tests Results panel with green checkmarks

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

现在测试结果视图已功能齐全,显示测试输出的命令已重定向为打开测试结果视图,而不是创建临时终端。

源代码管理

关闭存储库改进

过去,用户可以使用Git: 关闭存储库命令或源代码管理视图中的关闭存储库操作来关闭存储库,但某些操作(例如,从关闭的存储库中打开文件)会重新打开关闭的存储库。在本里程碑中,我们进行了一些改进,因此存储库关闭的事实现在按工作区持久化。用户可以使用Git: 重新打开已关闭的存储库...命令重新打开已关闭的存储库。

笔记本

改进的远程开发保存性能

以前,在 VS Code 的远程扩展中保存笔记本需要将整个笔记本发送到扩展宿主,这对于大型笔记本或启用了自动保存功能的缓慢网络连接来说可能会很慢。我们通过仅将笔记本的更改发送到扩展宿主来提高了性能,从而使笔记本保存和执行速度更快。虽然此功能默认情况下仍处于禁用状态,但我们相信很快就能启用它。要尝试它,请将"notebook.experimental.remoteSave": true添加到您的设置中。有关更多详细信息,您可以关注 问题 #172345

笔记本全局工具栏重做

笔记本编辑器的全局工具栏已重写以采用工作台工具栏,允许用户更自由地自定义工具栏操作。用户现在可以右键单击并从工具栏中隐藏操作。右键单击工具栏中的操作会提供隐藏该操作的选项,以及重置菜单并恢复隐藏操作的选项。

工具栏继续与所有三种标签策略一起工作:alwaysneverdynamic。您可以通过notebook.globalToolbarShowLabel设置更改标签策略。

主题:Monokai Pro (Filter Ristretto)(在 vscode.dev 上预览)

交互式窗口备份和恢复

Python 交互式窗口现在已与 热退出 功能完全集成,并在 VS Code 重新加载之间恢复编辑器状态。interactiveWindow.restore设置不再有任何作用,已删除。

如果热退出被禁用,则在关闭 VS Code 时会弹出一个提示,让您选择将编辑器状态保存为.ipynb文件。

_主题:Bearded Theme feat. Gold D Raynh(在 vscode.dev 上预览)

语言

Markdown 从预览中复制图像

Markdown 预览中图像的新上下文菜单允许您从预览中复制图像并将其粘贴到 Markdown 编辑器中。复制图像时,预览编辑器必须处于焦点状态。

新的markdown.editor.pasteUrlAsFormattedLink.enabled设置(默认值为false)使您能够在 Markdown 编辑器中插入自动格式化为 Markdown 链接的链接。如果您选择一些文本以用粘贴的链接替换,则所选文本将自动成为链接的标题。如果未选择任何文本,将有一个默认链接标题。此功能适用于外部浏览器链接以及工作区内的文件。

您必须启用editor.pasteAs.enabled设置才能使此新设置生效。

远程开发

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

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

远程菜单

在本里程碑中,我们更新了远程菜单,其中包含一些条目,可以帮助您通过安装必要的扩展来快速安装和开始使用远程连接(SSH、远程隧道GitHub Codespaces 等)。在欢迎页面上还有一个连接到...启动条目,以帮助您从 VS Code 桌面开始使用远程连接。

我们还更新了 vscode.dev 上的欢迎页面,其中包含一个启动条目以连接到远程隧道。

通过隧道的 WSL

在上次迭代中,我们预览了通过 远程隧道 连接到 WSL。此功能在本迭代中已稳定。如果您在安装了 WSL 的 Windows 计算机上运行远程隧道,则可以选择直接从远程资源管理器连接到 WSL。

Remote Tunnels view with a Connect to WSL option

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

此功能现在适用于 VS Code 桌面以及 vscode.dev。如果您已经在 Windows 设备上运行隧道,请确保将 VS Code 更新到最新版本以启用此功能。

对扩展的贡献

GitHub Copilot

我们在聊天视图中引入了仅供预览的斜杠命令,以帮助您创建项目和笔记本,并在工作区中搜索文本。

注意:要访问聊天视图、内联聊天和斜杠命令(例如/search/createWorkspace),您需要安装 GitHub Copilot Chat 扩展。

创建工作区

您可以使用/createWorkspace斜杠命令让 Copilot 为流行的项目类型创建工作区。Copilot 将首先为您的请求生成一个目录结构。

然后,您可以使用创建工作区按钮创建并将项目目录作为新工作区打开。

Create and open workspace using GitHub Copilot

创建笔记本

您可以使用/createNotebook斜杠命令让 Copilot 根据您的要求创建 Jupyter 笔记本。Copilot 将根据您的要求生成笔记本的提纲。

然后,您可以使用创建笔记本命令创建笔记本,并根据建议的提纲填写代码单元格。

生成搜索参数

您可以让 Copilot 自动填写工作区搜索中的搜索参数。为此,请使用/search命令,后跟要查找的文本的描述。

可以通过以下方式配置github.copilot.advanced设置来启用这些预览斜杠命令

"github.copilot.advanced": {
   "slashCommands": {
      "createWorkspace": true,
      "createNotebook": true,
      "search": true
   }
}

Copilot YouTube 播放列表

YouTube 上的 VS Code Copilot 系列 中有一个新的部分涵盖了 针对 PowerShell 的 Copilot。如果您错过了该系列,您还可以找到其他 特定于语言的 演讲和关于使用 Copilot 进行开发时的 有效提示 的指导。

Python

Mypy 扩展

现在有一个 Mypy 类型检查器 扩展,它使用 mypy 为 Python 提供类型检查支持,作为预发布版本提供预览。此新扩展在整个代码库上提供错误和警告,而不是仅在当前文件上提供。它还使用 dmypy 来进行更快的类型检查。

如果您在使用此新扩展时遇到任何问题或想提供反馈,您可以在 Mypy 扩展 GitHub 存储库 中提交问题。

Debugpy 扩展

当从 Python 扩展中删除对 Python 2.7 和 Python 3.6 的支持时,我们收到了很多用户的反馈,他们无法将其代码库升级到最新版本的 Python,并且失去了使用最新版本的 Python 扩展调试应用程序的能力。为了解决这个问题,我们创建了一个名为 Debugpy 的独立 Python 调试器扩展。通过将调试器与 Python 扩展分开,您最终将能够使用最新版本的 Python 扩展,同时使用旧版本的调试器(通过禁用 扩展自动更新)。此扩展在预览版中可用,作为使用最新版 debugpy 的预发布版本。我们计划在不久的将来支持旧版本的 debugpy。

试一试,并 告诉我们一切是否正常。我们的计划是弃用内置的调试功能,转而使用此独立扩展。

Pylance 本地化

现在 Pylance 扩展已本地化!这意味着如果安装了 语言包 并将其设置为 VS Code 中的活动语言包,则扩展的设置、命令和其他文本将被翻译成您的首选语言。

测试发现和运行重写

本月,我们正在继续推出测试重写作为一项实验。提醒一下,此重写重新设计了扩展中针对 unittestpytest 的测试发现和执行背后的架构。此重写目前对 100% 的 VS Code Insiders 用户有效,并将从本月开始逐步推向稳定版。此重写将很快被采用,但目前用于选择加入和退出该重写的设置 pythonTestAdapter 仍然存在。

pytest 和 unittest 的动态运行结果

随着新实验的推出,pytest 和 unittest 的动态运行结果也随之推出。以前,我们的测试结果只在所有测试运行完成后才会返回,但现在有了这个功能,测试结果会单独返回,让你实时看到测试通过和失败。

第三方库的索引持久化

Pylance 对安装在您的环境中的第三方库进行索引,以启用 IntelliSense 功能,如自动完成、自动导入、代码导航等。以前,Pylance 每次在 VS Code 中打开工作区时都会对这些库进行索引。现在,Pylance 会将这些库的索引持久化,减少重复索引过程的需要。

弃用 Python 3.7 支持

Python 3.7 已经 在 2023-06-27 达到使用寿命 (EOL)。因此,Python 扩展对 Python 3.7 的官方支持将在三个月后的 2023.18 版本扩展中停止(对应于 2023 年 9 月发布的 VS Code)。目前没有计划主动移除对 Python 3.7 的支持,因此我们预计 Python 扩展在可预见的未来将继续非官方地与 Python 3.7 兼容。

由于所有其他版本的 Python 现在都以每年的发布节奏进行发布,我们预计将在下一个日历年的第一个 Python 扩展版本中停止对某个 Python 版本的官方支持,一旦该版本达到 EOL。例如,Python 3.8 计划在 2024 年 10 月达到 EOL,因此 2025 年的第一个 Python 扩展版本将停止对它的官方支持。

GitHub 拉取请求和问题

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

  • 拉取请求中可以加载多达 1000 个(从之前的 100 个开始)评论线程。
  • 新的 VS Code API 提议用于只读消息,它允许您直接从未签出的差异中签出 PR。
  • 树和评论中的头像为圆形,而不是方形。

查看 扩展的 0.68.0 版本的变更日志,以了解其他亮点。

预览功能

TypeScript 5.2 支持

此更新包括对即将发布的 TypeScript 5.2 版本的支持。查看 TypeScript 5.2 迭代计划,以了解更多有关 TypeScript 团队目前正在进行的工作的信息。即将推出的工具亮点包括

  • 一个新的 内联常量 重构。
  • 一个新的 移动到文件 重构,它允许您将符号移动到现有文件。

要开始使用 TypeScript 5.2 nightly 版本,请安装 TypeScript Nightly 扩展。

新的差异编辑器

在本次迭代中,我们完成了对差异编辑器的重写。重写使我们能够添加一些新功能,提高性能并修复一些错误。

要试用新的差异编辑器,请在您的设置中添加 "diffEditor.experimental.useVersion2": true。新的差异编辑器仍然是实验性的,但最终将在未来的更新中取代当前的差异编辑器。

所有展示的功能都需要新的差异编辑器。

折叠未更改区域

使用 diffEditor.experimental.collapseUnchangedRegions 在新的差异编辑器中启用隐藏未更改区域。当查看具有大量未更改代码的大型差异时,此功能非常有用。

隐藏行块的边界可以拖动或单击,以从底部或顶部显示代码。

A screenshot of the "Collapse Unchanged Regions" feature in the new diff editor

显示插入/删除标记

插入/删除标记指示在某行中插入或删除了哪些词语,这在某行既有插入又有删除时特别有用。

使用 diffEditor.experimental.showEmptyDecorations 启用/禁用插入和删除标记。

Deletion markers

改进的装饰

整行删除/插入现在具有全宽背景颜色。这显著减少了噪声。

这是一个关于新的差异编辑器如何突出显示更改的示例

New Diff Editor highlighted changes

这是旧的差异编辑器如何呈现装饰的(注意右侧第 57 行没有全宽背景颜色)

Current Diff Editor highlighted changes

同步差异更新

在新的差异编辑器中键入时,更改会以启发式方式立即应用,并在延迟一段时间后触发异步差异计算。在旧的差异编辑器中,更改不会立即应用,导致在键入时出现明显的闪烁。

新 - 差异在键入时立即更新

Diffs update immediately when typing

旧 - 有一些明显的闪烁

Diffs did only update after a delay in the old diff editor

移动检测

此实验性功能检测文件中移动的代码块。使用 diffEditor.experimental.showMoves 打开它。目前,只有简单的移动会被检测到,但我们计划在未来改进此功能。选中移动的代码块后,源位置和目标位置会对齐,并显示它们之间的差异。

Move detection displays line connecting moved code block

由于移动检测仍然是实验性的,因此预计在未来的更新中会有重大变化。

扩展编写

SecretStorage API 现在使用 Electron API 而不是 keytar

SecretStorage API 已经成为存储秘密(如密码、访问令牌等)的推荐方式多年了。在幕后,它一直使用 keytar,一个用于在操作系统密钥环中存储秘密的抽象层。由于 keytar 已被弃用和存档,我们寻找了其他解决方案,特别是寻求我们的运行时 Electron 的解决方案。

在此版本中,我们已开始从 keytar 迁移到 Electron 的 safeStorage API。此切换对你来说应该是透明的,因为秘密是从 keytar 中检索到的,并通过 Electron 的 safeStorage API 恢复。将来,我们将删除此迁移,以便我们可以完全删除对 keytar 的依赖关系。

keytar 弃用计划

有一段时间,VS Code 严重依赖 keytar,一个用于在操作系统密钥环中存储秘密的抽象层。此外,我们还在 VS Code 中包含了一个 keytar shim,扩展在 SecretStorage API 引入之前依赖它。keytar 本身已 正式存档,并且没有维护... 为了通过 依赖于存档软件来存储秘密来推广良好的安全实践,我们正在制定一项计划,从 VS Code 中移除此 shim。

我们已经直接联系了仍然使用此 keytar shim 的热门扩展的扩展作者,他们正在努力迁移。我们希望在此处以及在 我们的 GitHub 讨论区 中进行沟通,以便我们能够尽可能减少因此更改而造成的干扰。我们知道这不是最好的消息,因为我们也做了不少工作来移除对 keytar 的依赖关系,但我们相信这是确保扩展使用安全 API 的正确做法。

如果您在扩展中直接使用 keytar,您需要考虑以下几个选项

时间线:目前计划是在 8 月初 从 VS Code Insiders 中移除此 shim,这意味着 2023 年 9 月 的稳定版将是第一个没有 shim 的版本。

此工作正在 问题 #115215 中跟踪,如果您有任何问题,请随时在 我们的 GitHub 讨论区 中提出。

改进 vscode.fs.writeFile 对本地文件的性能

当您使用 vscode.fs.writeFile API 将数据写入文件(您应该这样做!)时,对扩展主机本地文件的写入操作现在将解决得快得多。

以前,扩展主机会将写入操作委托给 VS Code 客户端执行,但现在操作直接在扩展主机中执行,节省了往返行程。

树复选框 API

TreeItem checkboxState API 已最终确定。默认情况下,具有复选框的树项将由 VS Code 管理其选中状态。可以通过将 TreeViewOptions 属性 manageCheckboxStateManually 设置为 true 来更改此行为。当 manageCheckboxStateManually 设置后,扩展负责管理父复选框和子复选框的选中和取消选中。

EnvironmentVariableCollection.description

这个新的 API 允许为 EnvironmentVariableCollection 指定描述,该描述在终端选项卡悬停时显示给用户,以解释更改到底做了什么。

// Example of what the Git extension could use
context.environmentVariableCollection.description =
  'An explanation of what the environment changes do';

您可以在内置的 Git 扩展中看到 API 的实际应用,该扩展现在描述了更改的内容。

Environment variable collection descriptions are explained in a terminal tab's hover

拟议的 API

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

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

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

文件系统提供者的只读消息

当您 registerFileSystemProvider 时,您可以提供一个只读消息,而不是简单地将文件系统标记为只读。 当用户尝试编辑来自该提供者的文件时,将在编辑器中显示以下消息。

Read-only file system message

工程

导出符号的名称混淆

去年,我们开始 混淆私有属性和方法的名称 以减少代码大小。 我们现在还混淆了导出的符号名称,这使我们的主工作区 JavaScript 文件的大小进一步减少了 8%。

我们的名称混淆构建步骤现在总共节省了 VS Code 核心和内置扩展中 3.9 MB 的 JavaScript。 这项减少加快了下载速度,缩减了 VS Code 的安装大小,并在每次启动 VS Code 时加快了代码加载速度。

Node.js、内置扩展和 Electron 的校验和完整性检查

作为我们构建的一部分,我们从其他位置使用二进制资源,例如用于远程服务器的 Node.js 和来自 Marketplace 和 Electron 的内置扩展。 在此里程碑中,我们通过针对已签入 vscode GitHub 存储库的 SHA256 校验和进行验证,确保这些二进制资源的完整性。

新的 Linux 性能机器

我们非常重视 VS Code 的性能,尤其是打开文本编辑器并看到闪烁光标所花费的时间。 为了监控该时间,我们每天在 Windows 和 macOS 上运行性能测试。

在本里程碑中,我们在测试集中添加了一台 Linux 机器,报告 Ubuntu 22 上的启动时间。

Linux performance machine

事件发射器优化

VS Code 在我们的代码库中广泛使用事件发射器。 我们在此迭代中优化了这些发射器,这略微提高了启动时间和内存使用率。

您可以在 问题 #185789 中了解更多关于此改进的信息。

终端 pty 主机改进

"Pty 主机" 进程管理着终端启动的所有 shell 进程,并且进行了一些改进。

  • 性能
    • 现在有一个与 pty 主机进程直接通信的通道。 这里最显著的改变是减少了终端的输入延迟。
    • 重新连接(重新加载窗口)和进程恢复(重新启动)的性能已通过减少不必要的调用并在存在多个正在恢复的终端时并行化任务得到提高。
    • 我们现在会收集有关终端启动和重新连接的性能指标,可以通过 开发人员:启动性能 命令查看。
  • 诊断
    • 所有与终端相关的日志已从 窗口 输出通道移至新的 终端 输出通道。
    • 当跟踪日志级别在 Pty 主机 输出通道上时,终端将记录所有 RPC 调用,这将有助于诊断终端问题。

文档

新的 C# 主题

您可以使用 C# Dev Kit 扩展通过一套新的 C# 文章 了解在 VS Code 中进行 C# 开发。 在这里,您将找到解释如何 入门 的主题,描述扩展的语言功能(代码导航重构调试),以及帮助开发生命周期的内容,例如 项目 管理。

Glob 模式参考

VS Code 有自己的 glob 模式 实现,它用于搜索文件和文件夹过滤等功能,让您自定义文件资源管理器视图等。 要了解详细信息,您可以查看新的 Glob 模式参考

值得注意的修复

  • 最大化集成终端时丢失文本 #134448
  • 支持 fish shell 集成自动注入 #139400

感谢

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

问题跟踪

对我们的问题跟踪的贡献

拉取请求

vscode 的贡献

vscode-emmet-helper 的贡献

vscode-livepreview 的贡献

vscode-pull-request-github 的贡献