试试 VS Code 中的吧!

2023 年 4 月 (版本 1.78)

版本 1.78.1 更新:此更新解决了这个安全问题

版本 1.78.2 更新:此更新解决了这些问题

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


欢迎来到 Visual Studio Code 2023 年 4 月版。此版本中有许多我们希望你会喜欢的更新,其中一些主要亮点包括

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

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

可访问性

Aria 详细程度设置

屏幕阅读器用户可以通过 "accessibility.verbosity.diff-editor""accessibility.verbosity.terminal" 设置排除功能的 aria-label 中的提示,以减少冗余。

改进和统一的 Quick Pick 体验

以前,可访问性模式的用户在使用 Command Palette 和其他 Quick Pick 时会遇到不同的行为。在可访问性模式下,Quick Pick 的第一个项目未被选中,以便完全可访问。在此迭代中,我们引入了新行为,让你能够兼得:可访问快速的 Quick Pick 工作流,让你能够立即按下 Enter

注意:这种方法的一个折衷是,如果 Quick Pick 中的某个项目被选中,由于 ARIA 限制,你将无法听到 Quick Pick 输入框的 ARIA 更改。要听到这些更改,你可以按下 Shift + Tab,直到列表中没有项目被选中。

终端

终端可访问缓冲区改进

  • 使用 ⌥↓ (Windows, Linux Alt+Down)⌥↑ (Windows, Linux Alt+Up) 在命令之间跳转。
  • 使用设置选择锚点从锚点选择到光标,并通过 ⇧PageUp (Windows, Linux Shift+PageUp)⇧PageDown (Windows, Linux Shift+PageDown) 进行页面导航。
  • 在接受命令跳转到新位置之前,使用可访问视图中的转到符号 (⇧⌘O (Windows, Linux Ctrl+Shift+O)) 时预览位置。
  • 在动态更新发生时与输出互动。

终端可访问性帮助菜单

终端的可访问性帮助菜单现在可以使用箭头键进行导航。

Diff 编辑器音频提示改进

VS Code 现在缓存音频提示,因此只需加载一次,提高了响应能力,并改进了 diff 编辑器使用的提示音。

转到行/列公告

调用转到行/列... (⌃G (Windows, Linux Ctrl+G)) 时,屏幕阅读器现在会读取相关的行内容。

工作台

新的默认配色主题

新的“深色现代”和“浅色现代”主题取代了“深色+”和“浅色+”,成为新的默认深色和浅色配色主题。

Dark Modern and Light Modern color themes

配置文件模板

配置文件允许你根据当前项目或任务快速切换编辑器扩展、设置和 UI 布局。为了帮助你开始使用配置文件,我们提供了配置文件模板,这些模板是针对不同编程语言和场景精心策划的配置文件。你可以直接使用配置文件模板,也可以将其作为起点进一步定制以满足你自己的工作流程。

你可以通过配置文件 > 创建配置文件... 下拉菜单选择配置文件模板

Create Profile dropdown with profile templates

选择配置文件模板后,你可以查看设置、扩展和其他数据,如果你不想将某些项目包含在新配置文件中,可以将其删除。

Profiles view showing the contents of the Data Science profile template

根据模板创建新配置文件后,对设置、扩展或 UI 所做的更改将保存到你的配置文件中。

字形边距装饰渲染改进

本月,我们改进了编辑器边距中显示的装饰的渲染。与调试相关的装饰(例如断点和堆栈帧指针)将始终渲染在编辑器行号旁边。其他装饰则渲染在任何与调试相关的装饰的左侧。即使同一行有其他装饰(例如测试装饰或书签),这也允许你查看你的断点。请注意,点击尚未限定于单个装饰。

bookmarks displayed next to breakpoint and stack frame pointer decorations

从图像预览中复制图像

你现在可以使用 ⌘C (Windows, Linux Ctrl+C) 或在预览中右键单击并选择复制来从内置图像预览中复制图像。复制的图像数据可以粘贴回 VS Code 或其他应用程序。

编辑器

拖放选择器

VS Code 允许你在拖放之前按住 Shift 将文件和内容拖放到文本编辑器中。在此次更新中,我们添加了 UI,允许你更改将此内容插入文件的方式。例如,将图像拖放到 Markdown 文件后,此控件允许你在插入 Markdown 图像、图像的工作区相对路径以及图像的完整路径之间进行切换

当你拖放内容且插入方式不止一种时,会出现拖放选择器控件。你可以通过点击它或使用 ⌘. (Windows, Linux Ctrl+.) 打开该控件。一旦你开始键入或将光标移到插入的文本之外,拖放选择器就会消失。你还可以使用 "editor.dropIntoEditor.showDropSelector": "never" 完全禁用拖放选择器控件。

VS Code 包含一些内置的方式来拖放常见内容格式。扩展也可以使用 DocumentDropEditProvider API 添加自己的拖放选项。

独立拾色器

现在可以启动一个独立的拾色器来插入和替换颜色。要打开拾色器,请从 Command Palette 中选择显示或聚焦独立拾色器

Standalone color picker control adjusted to blue color

当扩展未提供颜色或颜色格式时,拾色器将回退到 CSS 格式的颜色。现在还可以在所有文件类型中可视化 CSS 格式颜色的内联颜色装饰。要显示这些装饰,请启用编辑器:默认颜色装饰器 (editor.defaultColorDecorators) 设置。

用于时区偏移量的新代码片段变量

现在可以使用新的代码片段变量 CURRENT_TIMEZONE_OFFSET。此变量以 +HH:MM-HH:MM 格式返回当前时区偏移量(例如 -07:00)。这补充了其他与时间相关的代码片段变量,例如 CURRENT_YEARCURRENT_MONTHCURRENT_DAY_NAME 等。

Diff 算法改进

我们继续改进 VS Code 中的新 diff 算法,并废弃了旧算法。虽然旧算法仍然是 diff 编辑器的默认设置,但我们将慢慢将默认设置更改为新算法,并测量其性能。

你可以通过将 diffEditor.diffAlgorithm 设置为 advanced(新 diff 算法)或 legacy(默认)来覆盖默认设置。

新算法在许多情况下会产生更好的 diff,但对于某些文档可能会更慢。

这里有一些示例(legacy vs. advanced)

  • 通过考虑缩进改进行插入 diff

    JSON file diff result using legacy algorithm

    JSON file diff result using advanced algorithm

  • 通过考虑空格和分隔符改进单词插入 diff

    TypeScript imports word insertion diff using legacy algorithm

    TypeScript imports word insertion diff using advanced algorithm

  • 通过最小化 diff 的长度和块的数量来获得更自然的 diff

    TypeScript added line diff using legacy algorithm

    TypeScript added line diff using advanced algorithm

  • 如果单词的一部分发生显著变化,将字符级 diff 扩展到整个单词以减少噪音

    TypeScript code change diff using legacy algorithm

    TypeScript code change diff using legacy algorithm

Diff 源代码甚至只是评估 diff 的质量都是难题,仍有改进空间。如果你遇到认为算法可以做得更好的 diff,请尝试我们的diff playground,并在我们的问题跟踪器中分享你的反馈和想法!

内联补全改进

本次迭代,我们重写了内联补全功能,并修复了大量 Bug

最值得注意的是,接受单词现在可以在跨行工作,并且有一个新命令接受行。为了支持此功能,接受下一个单词/行不再再次询问扩展,因为内联补全提供程序扩展在请求下一行的内联补全时通常会报告完全不同的建议。

扩展

改进的扩展推荐通知

扩展推荐通知现在会显示推荐扩展的发布者。这有助于你在安装扩展之前做出更明智的决定。下图显示了单个扩展和多个扩展都有推荐时的新通知。

Extension recommendations notification with a single recommendation Extension recommendations notification with multiple recommendations

通知已安装的已弃用扩展

如果你安装了已弃用的扩展,现在会收到一条通知,告知你此情况并建议替代方案。此通知每个已弃用扩展仅显示一次。

Notification about deprecated extension

源代码管理

源代码管理输入的快速修复

源代码管理消息框现在支持 Code Actions 和快速修复

例如,Code Spell Checker 扩展会为源代码管理输入添加拼写修复。扩展可以贡献额外的修复和 Code Actions。

GitHub 仓库规则集

VS Code 已经允许你使用 git.branchProtection 设置定义分支保护。在此里程碑中,我们添加了一个新的实验性功能,它使用最近宣布的GitHub 仓库规则集来确定分支是否受保护。如果你正在使用 GitHub 仓库规则集,可以使用 github.branchProtection 设置启用此功能。

Notebooks

将图像文件拖放到 Notebooks 中创建附件

你现在可以将图像文件拖放到 notebook 的 Markdown 单元格中以创建附件。拖放图像时,使用新的拖放选择器控件选择插入图像作为附件

Using the drop selector in a notebook Markdown cell

这会将图像作为附件添加到 notebook 中,而不是简单地添加图像链接

An image file added as an attachment

切换 notebook 输出滚动

现在可以通过命令Notebook: Toggle Scroll Cell Output (⌘K Y (Windows, Linux Ctrl+K Y)) 或截断消息中的链接来切换单个单元格,使其在可滚动区域显示输出。

查找控件改进

notebook 的查找控件现在默认搜索视觉上呈现的内容中的关键字。用户可以通过设置 notebook.find.scope 更改搜索范围(Markdown 源码、Markdown 预览、代码源码和代码输出)。此外,在替换匹配项时,Markdown 单元格会转换为可编辑单元格,以便你进行替换。完成后,单元格会转换回 Markdown,并且预览会恢复。

语言

将视频拖放到 Markdown 文件中

想在 Markdown 中插入视频吗?只需将其拖到编辑器中,然后按住 Shift 将其拖放到文件中

这将插入一个指向视频文件的 <video> 标签。你可以从 VS Code 的 Explorer 或本地操作系统中拖放视频。

HTML 中的 JavaScript 脚本块的严格 null 检查

你现在可以使用 js/ts.implicitProjectConfig.strictNullChecks 设置来启用 HTML 脚本块中 JavaScript 的严格 null 检查

Strict nulls in a script block

启用严格 null 检查后,悬停和其他 IntelliSense 功能会显示类型何时可能为 null。例如,请注意 el 现在具有 HTMLElement | null 类型。这是因为 document.getElementById 在找不到具有该 ID 的元素时会返回 null。

测试

现在可以为单个测试启用持续运行。这需要支持持续运行并已采用上一次迭代中最终确定的 supportsContinuousRun API 的测试扩展。

Continuous run button highlighted on an individual test

VS Code Web 版

将文件提交到 Git 大文件存储

Git 大文件存储 (LFS) 允许你高效地在 Git 仓库中存储大文件。github.devvscode.dev 现在支持将文件提交到托管在 GitHub 上的仓库中的 Git LFS,无需在本地安装 Git 的 LFS 扩展即可通过浏览器轻松更新。

当你的仓库根目录中已经有一个 .gitattributes 文件,其中指定了哪些文件类型应该使用 Git LFS 存储时,github.dev 和 vscode.dev 中的 LFS 提交支持即可开箱即用。首次为你的仓库设置 Git LFS,请查阅 Git LFS 文档。

远程开发

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

你可以在远程开发发布说明中了解新的扩展功能和 bug 修复。

并查看 使用 VS Code 随处开发 的 VS Code Day 会议。

对扩展的贡献

Python

Jupyter 扩展不再默认安装

Jupyter 扩展不再默认与 Python 扩展一起自动安装。这一更改是为了响应开发容器用户的反馈,他们希望在不默认安装 Jupyter 扩展的情况下加快容器创建过程。

如果你的 Dev Container 定义仅列出 Python 扩展,并且希望在容器中继续使用 Jupyter notebook 功能,可以将 Jupyter 扩展 ID 添加到 devcontainer.json 文件中

  "customizations": {
    "vscode": {
      "extensions": ["ms-python.vscode-pylance", "ms-python.python", "ms-toolsai.jupyter"]
    }
  }

或者,你可以创建一个包含 Python 和 Jupyter 扩展以及你喜欢的任何其他扩展的配置文件

使用 microvenv 创建环境命令

当使用未安装 venv 包的 Python 发行版调用 Python: 创建环境命令时,Python 扩展现在使用 microvenv 作为回退。对于预装在基于 Unix 的系统上的 Python 环境来说,这可能是一个障碍。

Microvenv 是一个轻量级 Python 模块,为你的 Python 项目创建虚拟环境提供了一种极简方法。它不像虚拟环境那样配备传统的激活脚本,但在你的 Python 发行版中 venv 模块不可用时,它提供了一种很好的替代方案来创建隔离的环境。

创建环境命令还会将 pip 安装到通过 microvenv 创建的环境中。

格式化程序扩展推荐

在之前的版本中,我们宣布了 Black Formatterautopep8 的新扩展,它们通过 语言服务器协议 (LSP) 与 Python 扩展协同工作,为 Python 文件提供格式化功能。在此版本中,如果你仍在使用 Python 扩展的内置格式化功能,我们会显示通知,提示你安装这些新扩展。

运行 Python 操作现在位于子菜单中

为了简化在编辑器上右键单击时可用的 Python 命令,在终端中运行 Python 文件在 Python 终端中运行选中/行命令现在位于运行 Python 条目下的子菜单项中。

Run Python option on context menu with "Run file in terminal" and "Run selection/line" options in the submenu

f-strings 自动转换

有一个新的 "python.analysis.autoFormatStrings" 设置,在使用 Pylance 时启用 f-strings 的自动转换。启用后,当你在引号内插入 { 时,Pylance 会自动在字符串开头插入一个 f

此设置的默认值当前是禁用状态,但将在未来的版本中启用,具体取决于积极的反馈。如果你对此功能有任何评论或建议,请随时在 Pylance GitHub 仓库中分享。

包含路径的字符串上的代码导航已启用

有另一个新的实验性设置叫做 "python.analysis.gotoDefinitionInStringLiteral",它可以从模块类字符串字面量中启用转到定义。如果你正在开发 Web 应用程序(例如 Django 应用)并希望导航到在字符串字面量中定义的模块或路径,这会很有帮助

这个新设置与前面提到的 autoFormatStrings 设置一样,目前默认处于禁用状态。但是,我们计划在未来版本中根据反馈启用此行为。最终,我们计划完全删除此设置。

Jupyter

重启命令

Jupyter 扩展现在包含两个新命令,使用户能够直接重启 kernel 并运行单元格。这些命令是重启 Kernel 并运行所有单元格重启 Kernel 并运行到选定单元格,分别可以通过命令 ID jupyter.restartkernelandrunallcellsjupyter.restartkernelandrunuptoselectedcell 访问。

重新连接到繁忙的远程 Jupyter kernel

在之前的版本中,连接到远程 Jupyter kernel 会话时,Jupyter 扩展会等待 kernel 空闲后才连接。如果 kernel 正在运行长时间计算而很忙,这可能会花费很长时间。在此版本中,Jupyter 扩展会立即连接到 kernel,即使它很忙。这允许你在 kernel 繁忙时中断它。

平台特定的 Jupyter 扩展

Jupyter 扩展现在发布平台特定扩展,每个 VSIX 针对特定平台构建(Windows 64 位、Windows 32 位、Linux x64、Alpine x64、macOS Intel、macOS Apple Silicon 等)。适用于单个平台的 Jupyter 扩展的下载大小更小,从而加快了下载速度并减少了磁盘空间占用。

GitHub Pull Requests 和 Issues

GitHub Pull Requests 和 Issues 扩展取得了更多进展,它允许你处理、创建和管理 pull requests 和 issues。亮点包括

  • 你可以为 pull request 添加团队审阅者。
  • 所有可以Checkout default branch 的地方现在都遵循 git.pullBeforeCheckout 设置。
  • 支持 GitHub 的文件级注释。

查看此扩展 0.64.0 版本的更新日志以了解其他亮点。

GitHub Copilot

注意:这些功能在 GitHub Copilot Chat 扩展中可用。

聊天编辑器

我们对 GitHub Copilot Chat 的首次迭代使侧边栏中的聊天会话成为可能。现在,我们支持将相同的聊天视图作为编辑器打开。这允许你自定义聊天会话的位置,将其放置在窗口布局中的任意位置。

你可以通过运行命令Interactive Session: Open Editor 来打开聊天编辑器,然后像移动任何其他编辑器一样在编辑器组之间移动它。

A chat view as an editor

其他代码块命令

代码块工具栏中有两个新命令:插入到新文件在终端中运行。它们紧邻现有命令复制在光标处插入,为你提供了快速对 Copilot 返回的代码建议采取行动的额外选项。

The codeblock toolbar showing the two new codeblock commands

Code Actions 和内联聊天

编辑器聊天会话现在与快速修复集成。选择波浪线旁边的灯泡图标,即可选择使用 Copilot 进行修复或解释。

除了 Code Actions,内联聊天现在也可以从编辑器上下文菜单中访问。

内联聊天模式

现在有一个设置可以更改内联聊天的不同模式:inlineChat.editMode

选项包括

  • live - 将 AI 建议的更改直接应用到编辑器(默认)。
  • livePreview - 应用更改,但在嵌入式 diff 编辑器中渲染。
  • preview - 在一个分离的嵌入式 diff 编辑器中显示更改。

Command Palette 中的类似命令

借助 Copilot 的强大功能,Command Palette 现在能够显示类似的命令结果。要启用此功能,你必须拥有有效的 Copilot 订阅,参与聊天视图的私有预览,并应用该设置

"workbench.commandPalette.experimental.useSemanticSimilarity": true

这里有一些示例

  • “turn on autosave” 被解释为切换自动保存

    query "turn on autosave" is correctly resolved to Toggle Auto Save

  • “add function” 在底部包含来自扩展的额外结果

    query "add function" including Azure Functions Create Function command

  • 最后,如果你的结果没有匹配项,你可以询问 GitHub Copilot,它会将你过滤框中的内容放入新的聊天会话中,由 Copilot 处理。

    Ask GitHub Copilot "no results" option in the Command Palette

我们将在这个领域持续迭代,敬请关注!

预览功能

TypeScript 5.1 支持

此更新包含对即将发布的 TypeScript 5.1 的支持。阅读 TypeScript 5.1 Beta 博客文章TypeScript 5.1 迭代计划,了解 TypeScript 团队目前正在处理的更多详细信息。一些编辑器工具亮点包括

  • 对 JSX 标签的链式编辑支持。
  • @param JSDoc 标签的代码片段补全。

要开始使用 TypeScript 5.1 夜间构建版本,请安装 TypeScript Nightly 扩展。

使用 F2 重命名匹配的 JSX 标签

当你对 JSX 标签触发重命名时,VS Code 现在只会重命名匹配的标签,而不是尝试更新该标签的所有引用

这需要 TypeScript 5.1+,并且与 HTML 中重命名的工作方式一致。

你可以使用 javascript.preferences.renameMatchingJsxTagstypescript.preferences.renameMatchingJsxTags 禁用此行为。

扩展创作

Workspace 编辑现在可以直接从 DataTransferFile 创建文件

拖放到编辑器 API 的主要用途之一是将拖放的文件/内容写入工作区。然而,在之前的 VS Code 版本中,这对于大文件来说可能相当慢。这是因为文件内容最终会在进程之间复制两次:首先从渲染器到扩展主机读取文件内容,然后从扩展主机返回到渲染器写入文件。

class CreateFileDropProvider implements vscode.DocumentDropEditProvider {
  async provideDocumentDropEdits(
    _document: vscode.TextDocument,
    _position: vscode.Position,
    dataTransfer: vscode.DataTransfer,
    _token: vscode.CancellationToken
  ): Promise<vscode.DocumentDropEdit | undefined> {
    const pngFile = dataTransfer.get('image/png')?.asFile();
    if (!pngFile) {
      return;
    }

    // Read file
    // This results in the entire file contents being copied over to the extension host.
    const contents = await pngFile.data();

    // Now create a workspace edit that writes the file into the workspace
    // This results in the same file contents from above being copied back again.
    const additionalEdit = new vscode.WorkspaceEdit();
    const path = vscode.Uri.joinPath(
      vscode.workspace.workspaceFolders![0].uri,
      'image.png'
    );
    additionalEdit.createFile(path, { contents });

    const edit = new vscode.DocumentDropEdit(path.fsPath);
    edit.additionalEdit = additionalEdit;
    return edit;
  }
}

现在,你可以通过将 DataTransferFile 直接传递给 WorkspaceEdit.createFile 来避免这些额外的复制

additionalEdit.createFile(path, { contents: pngFile });

这应该能显著提高性能,尤其是在处理较大文件时。

在 resolveCodeAction 中解析 Code Action 命令

CodeActionProvider 现在可以在 resolveCodeAction 中延迟解析 CodeAction 的命令。以前只能延迟解析 Code Action 的编辑。

如果命令计算成本很高,这允许 CodeActionProvider 推迟这项工作,直到应用 Code Action 时再执行。

editor/lineNumber/context 菜单

我们已经最终确定了 editor/lineNumber/context 菜单。这允许扩展作者向锚定在编辑器行号和字形边距的上下文菜单贡献操作。贡献给此菜单的操作在命令参数中接收行号,并可以在其 when 子句中引用 editorLineNumber 上下文键。

身份验证 API 改进

身份验证会话偏好现在支持工作区区分

对于支持同时登录多个账户的身份验证提供者(例如 Microsoft),当调用 vscode.authentication.getSession 并设置 createIfNone: true 时,会提示用户选择一个要使用的账户。

之前的行为

此偏好会被记住,直到调用 vscode.authentication.getSession 并带有 ClearSessionPreference 标志。

新行为

此偏好会按工作区记住,直到在该工作区中调用 vscode.authentication.getSession 并带有 ClearSessionPreference 标志。

引入此行为是为了允许扩展为不同的工作区使用不同的账户,并允许记住这些偏好。

注意:此偏好是特定于扩展的。因此,如果一个扩展调用 vscode.authentication.getSession,它不会影响另一个调用 vscode.authentication.getSession 的扩展的会话偏好。

桌面版对 Microsoft Sovereign Cloud 的支持

本次迭代,我们在核心产品中引入了一个新的身份验证提供者:Microsoft Sovereign Cloud。此提供者用于验证用户到Microsoft Cloud for Sovereignty,例如 Azure 美国政府版、Azure 中国版等。从底层来看,它的工作原理与 Microsoft 身份验证提供者完全相同,只是 URL 不同。如果你想使用此身份验证提供者,可以引导用户设置 microsoft-sovereign-cloud.endpoint 值,该值有一些默认值,但也支持自定义 Sovereign Cloud URL。

请记住,大多数用户没有 Sovereign Cloud 账户。我们的建议是,如果你想支持 Sovereign Clouds,应该让用户可以通过 Sovereign Clouds 登录,但不要将其作为主流程的一部分,以免混淆用户。

提案 API

每个里程碑都会带来新的提案 API,扩展作者可以尝试它们。一如既往,我们期待你的反馈。以下是尝试提案 API 的步骤

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

你不能发布使用提案 API 的扩展。下一版本中可能存在破坏性更改,我们绝不希望破坏现有扩展。

格式化多个范围

DocumentRangeFormattingEditProvider API 有一个可选的提案函数,用于支持一次格式化多个范围。通过采用此 API,提供者改进了格式化修改范围的流程,因为只需向语言服务发送一次请求即可。

文档拖放元数据

这个新提案丰富了现有的拖放到编辑器 API,以支持新的拖放选择器。提供者可以使用它来提供更好的拖放到编辑器体验。

该提案的第一部分向 DocumentDropEdit 添加了一个 label 属性。这个人类可读的标签描述了编辑,并在拖放选择器 UI 中显示

Labels shown in the drop selector

第二部分向 registerDocumentDropEditProvider 添加了一个额外的 metadata 参数。这个元数据参数标识了提供者,并告诉 VS Code 它适用的内容类型

vscode.languages.registerDocumentDropEditProvider(
  'markdown',
  new InsertBase64ImageProvider(),
  {
    // Unique id that identities this provider
    id: 'insertBase64Image',

    // Array of mime types, such as `image/png` or `text/plain`, that this provider supports.
    // You can also use wildcards, such as `image/*` which matches any image content that is dropped.
    dropMimeTypes: ['image/*']
  }
);

dropMimeTypes 数组有助于提高性能,因为你的提供者只会在相关拖放内容时被调用。

工程

Electron 22 更新

在此里程碑中,我们完成了使用自定义内存分配器用于扩展主机的实验,并准备将 Electron 22 集成到 VS Code Desktop 中。我们要感谢所有参与在 Insiders 构建版本上自托管并提供早期反馈的人。此更新附带 Chromium 108.0.5359.215 和 Node.js 16.17.1

VS Code Day

你可以在 VS Code Day 2023 YouTube 播放列表中回顾 VS Code Day 的所有亮点。在那里,你会找到关于 GitHub Copilot数据科学TypeScript 等主题的会议,以及 Erich Gamma 和 Kai Maetzel 的主题演讲,他们在演讲中解释了团队如何构建和发布 VS Code。

致谢

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

问题跟踪

对我们问题跟踪的贡献

Pull requests

vscode 的贡献

vscode-js-debug 的贡献

vscode-json-languageservice 的贡献

  • @zardoy (Vitaly)
    • [completions] 始终显示详细信息,例如 Default value PR #183
    • [completion] 在 uniqueItems: true 时不建议重复项 PR #184

vscode-pull-request-github 的贡献

monaco-editor 的贡献

devcontainers/cli 的贡献