本站点文档内容均翻译自code.visualstudio.com,仅供个人学习,如有差异请以官网为准。

2023年5月(版本1.79)

更新 1.79.1:此更新解决了这个安全问题

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

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


欢迎来到2023年5月发布的Visual Studio Code。这个版本有很多更新,我们希望你会喜欢,主要亮点包括:

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

内部人士: 想尽快尝试新功能吗?你可以下载 内部人士 构建版,并在最新更新可用时立即尝试。

无障碍

详细程度设置

附加的无障碍设置已添加,以告知屏幕阅读器用户如何在聚焦时与功能互动。

对于GitHub Copilot,有提示描述如何访问Copilot聊天视图和编辑器代码聊天的可访问帮助菜单,通过:

  • 无障碍。详细程度。聊天面板
  • 无障碍。详细程度。内联聊天

这些帮助菜单提供了关于预期内容、如何从输入框导航到其他元素等信息。

其他新的冗长设置提供特定 VS Code 用户界面的信息:

  • 无障碍。详细程度。键绑定编辑器- 在键盘快捷键编辑器中。
  • 无障碍。详细程度。笔记本- 在笔记本中时。

可访问性。详细程度设置默认是启用的(设置为 'true'),但您可以单独禁用它们。

设置编辑器

VoiceOver 现在可以在 macOS 中读取设置编辑器中枚举设置选项的描述。尝试一下,例如枚举设置如文件.自动保存编辑器.辅助功能支持输入:.

在macOS上,VoiceOver的高对比度文本框显示的files.autoSave设置的onFocusChange选项描述

工作台

只读模式

在某些开发场景中,将工作区的某些文件夹或文件明确标记为只读可能会很有帮助。例如,如果文件夹或文件内容由其他进程管理(例如,节点模块由Node.js包管理器管理的文件夹,标记为只读可以避免意外更改。

对于这个用例,有新的设置可以在资源管理器和文本及笔记本编辑器中将文件路径标记为只读:

  • 文件.只读包含- 匹配时使文件只读的路径或通配符。
  • files.readonlyExclude- 路径或通配符模式,当它们匹配时,跳过文件使其不为只读文件.只读包含输入:.
  • files.readonlyFromPermissions- 磁盘上没有写权限的文件是否应该只读。

根据设置规则,如果路径被认为是只读的,您不能从资源管理器中修改它(例如删除它)并且文本或笔记本编辑器是只读的。

为了更方便地切换只读模式,新增了只针对当前会话更改模式的命令,覆盖您的设置配置:

  • 在会话中将活动编辑器设置为只读 - 将活动编辑器标记为只读。
  • 将活动编辑器在会话中设为可写 - 标记活动编辑器为可写。
  • 在会话中切换活动编辑器只读 - 在只读和可写之间切换。
  • 重置会话中的活动编辑器只读 - 重置会话状态。

Windows UNC主机允许列表改进

作为重要安全修复的一部分,VS Code 引入了 UNC 主机的允许列表。在这一里程碑中,我们解决了 Windows 用户在日常工作中使用 VS Code 时报告的许多可用性问题,涉及 UNC 路径。

对话改进

允许在启动时允许 UNC 主机的确认对话框现在更新安全.允许UNCHosts设置并在你选择复选框时添加主机。

Windows UNC 允许对话框

此外,点击了解更多按钮不再关闭对话框。

新的安全设置:限制访问未授权网络共享(UNCA)

一个新的设置安全.限制访问未授权区域 可以禁用主机的 UNC 允许列表,并恢复到此安全修复之前的行为。我们强烈建议不要更改此设置,因为这会使您的系统再次面临 信息泄露漏洞 的风险。

新的标签大小选项已修复

工作台.编辑器.标签大小设置有一个新选项修复这使得每个标签具有相同的宽度。当空间变得有限时,标签将等比例缩小,直到达到最小值。新的设置工作台.编辑器.标签尺寸固定最大宽度设置标签的初始大小。

在这种模式下,当你使用鼠标快速关闭标签时,标签的宽度保持稳定,以便通过点击相同点来逐个关闭每个标签。然后,当你将鼠标离开编辑器标签区域时,宽度会进行调整。

网络质量指示

当您连接到远程机器时,为了获得最佳的 VS Code 远程编辑体验,需要一个低延迟的良好网络连接。在这个里程碑中,我们更新了状态栏中的远程指示器,以便在延迟非常高或网络连接似乎离线时为您提供一些反馈。

高延迟(网页,桌面)

我们定期测量您连接到的远程服务器的延迟。当达到某个阈值时,远程指示器会更新以反映这一点。

状态栏右侧显示的网络慢速检测

离线检测(仅限网页)

如果您正在使用网页浏览器连接到远程服务器,突然失去互联网连接,远程指示器会更新以反映这一情况。

网页离线检测显示“网络似乎处于离线状态”消息来自状态栏

继续工作

继续工作于功能允许您在相同的代码仓库之间在 VS Code 开发环境中存储和检索工作变更,例如,当您从本地 Git 代码仓库升级到 GitHub codespace,或者在不同的机器之间切换相同的代码仓库时。

即使在一种环境中配置为HTTP远程,而在另一种环境中配置为SSH远程,您现在也可以在开发环境中转移工作更改。此外,我们已经开始转移其他工作台状态,例如您的Source Control视图状态偏好,以实现更流畅的过渡。

编辑器

粘贴为

将文件粘贴到文本编辑器时,您可能有多种插入方式。您可能希望路径指向文件的绝对路径。您可能希望相对于当前工作区的路径。或者您甚至可能希望针对当前编辑器的语言进行一些特定的插入,例如在粘贴到Markdown时插入一个Markdown链接到文件。VS Code的新“粘贴为”功能使您可以控制粘贴内容的插入方式。

粘贴后,VS Code 如果粘贴的内容可以通过其他方式插入,现在会显示一个小的“粘贴为”控制:

您可以通过点击或使用⌘.(Windows, LinuxCtrl+.键盘快捷键来打开“粘贴为”控制。一旦您开始输入或移动光标到插入文本之外,粘贴选择器就会消失。您还可以使用完全禁用下拉选择器控制。"editor.pasteAs.showPasteSelector": "never"输入:.

当你将内容粘贴到笔记本中的一个Markdown单元格时,例如,'粘贴为'控制允许你在以下选项之间切换:

  • 将图片作为附件插入
  • 插入一个Markdown图像引用
  • 插入相对路径(用于工作区中的文件)
  • 插入绝对路径

如果你希望在实际粘贴之前选择剪贴板中内容的粘贴方式,你可以使用新的粘贴为...命令。这允许你选择内容的粘贴方式:

使用“粘贴为...”命令选择内容的粘贴方式

快速建议和片段

快速建议意味着 VS Code 在你输入时就会显示建议,无需按 ⌃Space(Windows, Linux Ctrl+Space。这个功能非常受欢迎,大约 90% 的建议会通过输入开始。许多建议是通过 Tab(对比进入输入接受字符)。

当片段被插入时,Tab键用于在片段占位符之间导航。现在,当快速建议在插入片段时变得活跃时,Tab key 可以接受完成 跳转到下一个片段占位符。为了解决这个冲突,有 editor.suggest.snippetsPreventQuickSuggestions将设置禁用在插入片段时的快速建议。默认值为只要这个设置存在,我们就收到反馈说它令人困惑。因此,我们决定将其默认值更改为,这样在片段占位符内输入时将触发快速建议。

然后可以使用以下按键组合:

  • Tab接受完成。
  • 逃离隐藏快速建议。
  • Tab没有建议导航到下一个片段占位符。

终端

自动为 Fish Shell 集成外壳

壳集成及其增强的用户体验现在将自动激活鱼壳。您可能需要更新fish以使其正常工作。

鱼的壳整合赋予了多个特征

上划线支持

上划线转义序列 (SGR 53SGR 55) 指定在 ECMA-48 中的内容现在在终端中得到了支持。这个序列最常用于在终端的最后一行添加一个应用程序的“状态栏”上方。

上划线功能类似于下划线,但会在文本上方绘制一条线。

源代码管理

默认分支名称

从这个里程碑开始,所有使用 VS Code 创建的新 Git 仓库都设置主要作为默认分支。如果你更喜欢默认分支的其他名称,你可以用以下命令更改它git.默认分支名称设置。当设置为空时,VS Code 会遵循在 Git 中配置的默认分支名称。将文件夹发布到 GitHub 也会遵循在 GitHub 上配置的默认分支名称。

分支选择器与 vscode.dev 和 GitHub 集成

您现在可以在vscode.dev中检出分支或在VS Code桌面版的分支选择器中打开它,然后在GitHub.com上查看。

在下面的短视频中,分支选择下拉菜单中的每个分支都有右侧的按钮,用于 在 GitHub 上打开在 vscode.dev 上检出

相似性阈值

Git状态 使用相似度指数(与文件大小相比的添加/删除数量)来确定一对添加/删除是否被视为重命名。您现在可以使用 来配置相似度阈值。git.相似性阈值设置,取值范围在0100默认值是五十输入:.

笔记本电脑

您现在可以使用搜索控件在打开的笔记本中搜索丰富的内容。如果您的笔记本是打开的,搜索控件将显示在笔记本编辑器中呈现的结果(而不是搜索原始源文件的内容)。这还允许替换笔记本输入中的文本。

使用新的笔记本搜索切换按钮,您还可以筛选要搜索的单元格内容类型。

改进的单元输出交互

新的上下文键笔记本输出输入聚焦添加了检测单元格输出中的文本框是否获得焦点的代码,这样在输出获得焦点时可以安全地使用原始热键a/b/j/k。聚焦在输入框上会阻止这些热键触发。

运行格式化

笔记本现在可以在单元格执行时格式化单元格。这将触发使用运行单元格运行全部运行上方/下方,以及组合内核+运行命令。此功能可以通过设置"notebook.formatOnCellExecution": true输入:.

保存时的代码操作

笔记本现在支持在保存时运行代码操作。代码操作可以在以下部分指定notebook.代码保存时的动作设置。扩展作者可以使用单元格级别代码操作的标准类型定义提供者,或者使用新的笔记本。 前缀以定义管理整个笔记本的代码操作。您可以查看 clean-nb-imports-ext 样例扩展,以了解扩展如何使用此新设置。

语言

TypeScript 5.1

VS Code 现在附带 TypeScript 5.1.3。这个重要的更新带来了新的 TypeScript 语言特性、更好的性能以及许多重要的改进和错误修复。您可以在 TypeScript 博客 上阅读关于 TypeScript 5.1 的内容。

JSX标签的链接编辑

通过关联编辑,当您更改一个 JSX 开始标签时,VS Code 会自动更新相应的结束标签。这可以节省大量时间:

该功能默认关闭,但可以通过设置启用:

"editor.linkedEditing"

您还可以使用开始链接编辑命令显式启动链接编辑。

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

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

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

您可以使用以下方法禁用此行为javascript.偏好设置.重命名匹配的Jsx标签typescript.preferences.renameMatchingJsxTags输入:.

JSDoc @param completions

在编写JSDoc注释时,VS Code现在会显示所有缺失参数的建议:

JS Doc @参数 completions 在一个 TypeScript 文件中

这将帮助您快速填写文件。

在JavaScript文件中,@参数完成创建参数类型描述的占位符:

将外部媒体文件复制到工作区中用于Markdown的拖放或粘贴

想要在Markdown文档中添加图片或视频?与其先手动将文件复制到工作区,然后再添加链接,现在你可以直接将文件拖放到Markdown中。如果该文件目前不是工作区的一部分,VS Code将自动将文件复制到工作区,并插入一个链接:

这同样适用于剪贴板中的图像数据。例如,如果你在Windows上使用截图工具截取屏幕,然后在Markdown文件中按粘贴,VS Code将从剪贴板数据创建一个新的图像文件,并插入一个指向新文件的Markdown图像链接。如果你在macOS上进行截图并按住Ctrl键将其复制到剪贴板,这同样适用。

您还可以通过一些设置来自定义此功能的行为:

markdown.copyFiles.destination

markdown.copyFiles.destination设置控制新媒体文件创建的位置。此设置将当前Markdown文档中的匹配 globs 映射到图像目标。图像目标也可以使用一些简单的变量。请参见markdown.copyFiles.destination设置描述用于有关可用变量的信息。

例如,如果我们希望每个Markdown文件下/docs在我们的工作区将新的媒体文件放入一个图像针对当前文件的目录,我们可以写入:

"markdown.copyFiles.destination": {
  "/docs/**/*": "images/${documentBaseName}/"
}

现在当一个新的文件被粘贴到/docs/api/readme.md图像文件创建于/docs/api/images/readme/image.png输入:.

您甚至可以使用简单的正则表达式以类似于片段的方式转换变量。例如,此转换仅使用文档文件名的第一个字母来创建媒体文件

"markdown.copyFiles.destination": {
  "/docs/**/*": "images/${documentBaseName/(.).*/$1/}/"
}

当将新文件粘贴到/docs/api/readme.md图像现在已创建在/docs/api/images/r/image.png输入:.

markdown.复制文件.覆盖行为

markdown.复制文件.覆盖行为设置控制是否覆盖新创建的媒体文件现有的文件。

默认情况下,VS Code 从不会覆盖现有文件。相反,如果你有一个名为image.png并尝试将其粘贴到工作区中的一个Markdown文档中image.png已经存在,VS Code 将会创建一个新的名为 的文件image-1.png. 如果你然后尝试粘贴另一个名为的文件image.png,它将被创建为image-2.png输入:.

如果你希望现有文件被新文件覆盖,请设置"markdown.copyFiles.overwriteBehavior": "overwrite". 现在 VS Code 将始终使用原始文件名,覆盖任何现有文件。

禁用将文件复制到工作区

VS Code 只会在文件尚未成为工作区的一部分时尝试将文件复制到工作区。此外,我们目前只将媒体文件(图像、视频、音频)复制到工作区。

然而,如果您发现这种新行为过于侵入,请通过设置禁用它,用于拖放和粘贴:

"markdown.editor.drop.copyIntoWorkspace""从不"
"markdown.editor.filePaste.copyIntoWorkspace""从不"

Markdown文件中的HTML路径IntelliSense

许多Markdown方言允许在Markdown文档中使用原始HTML标签。在这个更新中,我们扩展了VS Code的大部分Markdown代码感知功能,使其适用于这些HTML标签中使用的文件路径。这包括对以下内容的支持:

查找HTML标签中使用图像文件的所有引用

将音频插入Markdown

当你将音频文件拖放到Markdown文档中,或者复制并粘贴音频文件时,VS Code现在会插入一个元素。

为JSON与行(JSONL)文件提供语法高亮显示

JSON with Lines 描述了一组由换行符分隔的JSON对象序列。如果文件扩展名 输入:jsonl使用时,VS Code 提供语法高亮。

远程开发

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

亮点包括:

  • 在当前或新 VS Code Windows中打开新的远程连接(通过远程隧道,连接到开发容器)。
  • 更简单的流程使转发端口公开变得更加容易。
  • VS Code for Web(vscode.dev)初步支持连接到WSL。

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

对扩展的贡献

GitHub Copilot

在稳定版 VS Code 中使用 Copilot Chat

之前,你必须使用 VS Code Insiders 来使用 Copilot Chat。从 VS Code 1.79 版本开始,你也可以在稳定的 VS Code 中使用 Copilot Chat。你仍然需要安装 GitHub Copilot Chat 扩展。

编辑聊天

我们改进了编辑器聊天,最显著的更改是将其默认模式更改为“livePreview”。在这种模式下,更改会直接应用到文档,并通过嵌入的差异视图显示。让我们看下面的例子:

  • 一个新的属性被添加到了IUserFriendlyStatusItemEntry输入:类型和
  • Copilot更新了是否用户友好状态项条目相应检查。
  • 回复在编辑器中使用嵌入的 diff 视图显示。其右侧可以编辑,并由 VS Code 的语言扩展检查。
  • 这让你能够在回复中发现错误(在下面)是否为Markdown字符串函数不存在),并且您可以在接受建议之前进行修复。

Copilot内联聊天建议,显示为实时预览的拟议代码更改

笔记本改进

我们本月改进了笔记本编辑器中的聊天体验。在使用笔记本文档中的 Copilot 时, Copilot 可以利用笔记本上下文来提供更相关的建议。例如,代码建议会使用在先前单元格中定义的变量或模块,而不会重新创建或重新导入它们。

在运行 notebook 单元格时, Copilot 现在也会为单元格执行失败提供建议。您可以通过在单元格状态栏上选择 使用 Copilot 修复 动作来显示这些建议。

Copilot建议也会在单元格执行时自动接受,因此您无需手动接受。

GitHub 拉取请求和问题集成

GitHub 拉取请求和问题扩展安装并启用,并且您正在查看评论线时,现在可以使用 Copilot 直接应用评论。您可以通过评论菜单中的“使用 AI 应用建议”按钮来实现。

实验快速问答体验

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

在这一迭代中,我们尝试使用聊天来快速提问编程问题,而无需离开上下文。如果你可以使用聊天体验,你可以通过以下设置启用此功能:

"chat.experimental.quickQuestion.enable"

功能概述:

  • 向Copilot快速提问。
  • 切换体验 ⇧⌥⌘L (Windows, Linux Ctrl+Shift+Alt+L) (状态会记住30秒,所以你可以轻松地显示、隐藏和再次显示)。
  • 一个在聊天视图中继续对话到长形式聊天的按钮。

删除聊天记录

您现在可以通过点击聊天请求中的X图标来删除聊天请求/响应对。

一个带有X图标的聊天请求

你为什么想要这样做? 有时候, Copilot 提供的回复偏离主题或不正确。你可以再次提问,但是从会话的聊天记录中删除不良回复也有助于保持对话的正轨。另外,每个聊天请求包含的上下文量也是有限的,因此删除一个长的不良回复可能会帮助你节省上下文预算,以获取更有用的信息。

将聊天会话从侧边栏移动到编辑器

通过运行Chat: Open Editor命令,已经可以在编辑器中打开聊天会话,但现在也可以在侧边栏和编辑器之间来回移动聊天会话。您可以在聊天视图标题或编辑器标题菜单中的“...”菜单下找到在编辑器中打开会话在侧边栏中打开会话命令。

聊天记录

您的聊天记录现在已保存到历史记录中,您可以通过在聊天视图标题菜单中选择显示历史记录按钮来浏览。您可以选择历史记录条目以将对话加载到聊天编辑器中,然后无缝继续您之前中断的地方。您可以通过点击每行的X按钮从历史记录中删除会话。

将聊天记录导出为JSON文件

我们添加了一个命令,聊天:导出会话,该命令将当前聚焦的聊天会话导出到JSON文件。然后你可以运行聊天:导入会话命令导入该会话并继续你的对话。你可以将此文件添加到你的代码库中,与他人分享,或者只是保存你的对话以供以后参考。注意,当你在导入的聊天会话中继续对话时,除非你再次导出会话,否则那些新消息将不会被保存。

代码块导航和快捷键

我们添加了一些命令和快捷键,使在聊天响应中处理代码块更加方便。聊天:下一个代码块 (⌥⌘PageDown (Windows, Linux Ctrl+Alt+PageDown)) 和 聊天:上一个代码块 (⌥⌘PageUp (Windows, Linux Ctrl+Alt+PageUp)) 将光标移动到当前聊天响应中的下一个或上一个代码块。当一个代码块被聚焦时,代码块工具栏中的命令也可以从命令面板中调用,或者你可以为它们分配快捷键。在终端中运行 默认分配了一个快捷键,⌃⌥Enter (Windows, Linux Ctrl+Alt+Enter)。然后 复制 命令现在将在你按代码块中的普通复制快捷键时运行,而无需选择任何内容。

我们还添加了快捷键来聚焦聊天Windows (⌃⌘I (Windows, Linux Ctrl+Alt+I)) 和清除聊天会话 ()。

Copilot YouTube 播放列表

要了解更多关于 GitHub Copilot 以及提示和最佳实践,请查看 YouTube 上的 VS Code Copilot 系列。在那里,您会找到 GitHub Copilot 的介绍特定语言的使用方法,以及在使用 Copilot 进行开发时 有效提示的指导

Python

在专用终端中运行Python文件

Python扩展现在将为每个您在编辑器顶部的运行按钮或Python: 在终端中运行Python文件命令中运行的文件创建一个新的终端,并且每次重新运行该文件时都会使用这个“专用”的终端。

任何时间您希望在另一个终端中运行相同的文件,您可以运行选择 Python: 在专用终端中运行Python文件运行 按钮菜单下。

运行按钮菜单下的选项

测试发现和运行重写

这个月,我们开始将测试重写作为实验推出。这个重写重新设计了扩展中unittest和pytest的测试发现和执行的架构。虽然它没有为用户提供任何额外的功能,但它减少了错误行为,并为未来的新功能提供了机会。这个重写是通过实验逐步推出的。python测试适配器,您可以选择使用python.experiments.optInto在你的settings.json。最终,我们计划移除这个设置,并采用这个新架构。如果您对这个实验或重写有任何评论或建议,您可以分享到vscode-python仓库中。

使用 Pylance 配置索引限制

有一个新的Pylance设置,允许你配置索引的文件数量限制:"python.analysis.userFileIndexingLimit"默认情况下,该设置被设置为2000。在处理非常大的项目时,如果愿意为了增强的IntelliSense体验而牺牲性能,这个设置会很有帮助。

朱庇特

恢复对远程Jupyter内核的细胞执行

Jupyter扩展现在支持恢复远程Jupyter内核的单元格执行,即使在关闭VS Code后重新打开Notebook,如果单元格仍在执行中。

例如,假设您执行了一段长时间运行的代码,例如在远程Jupyter内核上训练模型。这可能需要几分钟或更长时间,因此您可能会决定在此期间关闭VS Code。几分钟后,VS Code重新启动并打开了相同的笔记本,如果单元格仍在执行,这种状态会在笔记本单元格中反映出来,并且任何新的输出都会显示在单元格输出中。

另一方面,如果在 VS Code 关闭时单元格已经完成执行,那么在此期间生成的输出将不会保存在笔记本中。以这种方式恢复执行并显示新输出仅限于纯文本、HTML、图像等简单输出。不支持恢复小部件和其他复杂输出的状态。

在关闭并重新打开 VS Code 后恢复笔记本单元格的执行

GitHub 拉取请求和问题

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

  • 两个新的操作用于查看已检出的PR的差异:比较基线与PR头(只读)比较PR头与本地
  • 新的设定"githubPullRequests.拉取拉取请求分支在检出之前"可以用来在再次检出同一分支时关闭拉取之前已检出的PR分支。

查看0.66.0版本的更新日志,了解其他亮点。

预览功能

insiders.vscode.dev 上的项目范围 JS/TS 智能感知

vscode.dev 是 VS Code 的一个轻量级版本,完全在您的浏览器中运行。这一版本,我们大大丰富了 vscode.dev 的 JavaScript 和 TypeScript 支持,使其可以分析工作区中的所有文件,而不仅仅局限于当前打开的文件。这大大改善了代码导航,使您可以 转到定义查找所有引用 到一个符号。它还通过确保来自您的 tsconfig.json/jsconfig.json受到尊重。我们甚至现在在编写代码时支持自动导入。

在下面的图像中,参考文献视图显示了所有对ITextDocument在工作区。

在 vscode.dev 上查找 TypeScript 项目中的所有引用

这些新的IntelliSense功能适用于您从本地机器打开的文件夹以及使用vscode.dev内置的GitHub Repositories扩展打开的GitHub仓库。

请记住,vscode.dev 上的 JS/TS 智能感知仍有一些限制:

  • 目前没有对第三方库的IntelliSense支持。
  • 目前没有对JavaScript 项目自动类型获取的支持。
  • 由于上述限制,vscode.dev 上的所有拼写错误均被禁用。
  • 整个项目的IntelliSense目前仅在vscode.dev的Insiders版本中启用:insiders.vscode.dev此功能目前在 禁用。github.dev输入:.

我们计划在未来解决这些局限性,并且我们很激动能继续丰富我们在网页上的JavaScript和TypeScript支持!

终端中的图像

现在终端中对图像的支持是实验性的。终端中的图像通常通过将图像像素数据编码为文本,然后通过特殊的转义序列写入终端来实现。当前支持的协议是sixel由iTerm开创的内联图像协议

通过设置启用此功能:

"terminal.integrated.experimentalImageSupport"

启用后,为了测试它,您可以下载并一个.六 示例文件来自 libsixel 仓库

使用sixel文件运行猫将打印一张图像

或者使用imgcat python包imgcat脚本与png、gif或jpg文件:

运行 imgcat 并传入一个 png 文件将打印图像

此功能的当前限制是:

TypeScript 5.2 支持

此更新包括对即将发布的 TypeScript 5.2 版本的支持。查看 TypeScript 5.2 迭代计划 以了解 TypeScript 团队目前正在处理的内容。一些即将到来的工具亮点包括:

  • 一个新的内联常量重构。
  • 一个新的移动到文件重构,可以让你将符号移动到现有文件中。

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

将文件移至JavaScript和TypeScript的代码重构

在 TypeScript 5.2 夜间版本中,移动到文件 重命名操作可以将类、函数或常量移动到现有的文件中。这还将自动更新所有对符号的引用,并根据需要更新导入:

当你选择移动到文件时,VS Code 会显示当前 TypeScript 或 JavaScript 项目中的所有文件列表。你可以开始输入文件名以快速找到你想要的文件。

或者,您可以使用选择现有文件...通过普通的文件选择器选择文件,或者使用输入新文件路径...指定一个应该创建的新文件。

该功能仍在积极开发中,所以请尝试并分享您的反馈!

VS Code 中的 WebAssemblies 用于网页

为了在vscode.dev上增加更多的编程语言支持,VS Code团队一直在研究如何在VS Code for Web中运行通用WebAssembly。如果你对这种方法感兴趣并想了解更多,请查看最近的VS Code和WebAssembly博客文章。

扩展编写

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

当你在使用vscode.fs与文件交互的API(你应该使用!)对扩展主机本地的文件的操作现在将更快地解决。

以前扩展主机将这些操作委托给VS Code客户端执行,但现在它们直接在扩展主机内执行,节省了来回时间。

更严格的的状态栏 API

用于创建状态栏项目的API创建状态栏项目让我们为扩展传递一个标识符。该标识符用于控制隐藏和显示状态栏项目。标识符应是扩展唯一的,但到目前为止这并没有被强制执行。随着这次发布,我们对此做了一些更严格的限制,由同一扩展使用相同标识符创建的状态栏项目现在将合并为一个。

任务

任务展示选项已确定关闭任务完成后终端。

提议的API

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

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

您不能发布使用提议 API 的扩展。 下一次发布可能会有重大更改,我们绝不会破坏现有的扩展。

环境变量集合描述

此提案允许指定描述环境变量集合在终端标签悬停时显示给用户,解释更改的确切内容。

// Git 扩展可以使用的示例
上下文.环境变量集合.描述 = '启用 Git 认证提供程序';

环境变量收集描述在终端标签的悬停中解释。

环境变量突变器选项

此提案增加了可以提供的选项环境变量突变器允许您指定环境变量更改的确切时间,是在进程创建时还是在 shell 集成脚本中(在 shell 初始化脚本运行之后)。

const collection = context.environmentVariableCollection;
// Apply only when the process is created
collection.replace('FOO', 'bar');
// Apply only during the shell integration script
collection.replace('FOO', 'bar', {
  applyAtProcessCreation: false,
  applyAtShellIntegration: true
});
// Apply twice, during process creation and the shell integration script
collection.replace('FOO', 'bar', {
  applyAtProcessCreation: true,
  applyAtShellIntegration: true
});

共享提供者

共享API提案允许扩展在VS Code中提供资源共享方式。

当前,共享提供者结果作为顶级 共享... 命令面板操作和 命令中心 附近的新图标显示,前提是您已选择启用 "workbench.experimental.share.enabled": 真"window.commandCenter": true输入:.

您可以在 API提案问题 #176316 中留下反馈。

静态状态栏项目

状态栏项目现在可以通过静态方式贡献package.json#contributes/statusBarItems通过这个贡献点,扩展可以延迟其激活,并且只有在状态栏项目被交互时(例如在命令上)才激活。一旦激活,扩展可以通过该静态状态栏项目访问其状态栏项目。vscodeWindows创建状态栏项应用程序编程接口。

工作区保存和工作区另存为

保存编辑器API提案允许扩展触发保存编辑器的流程,无论是保存到其资源还是请求用户提供资源。

所有保存方法将返回结果乌里未定义如果操作被取消。除非已经关联了路径,否则未命名文件将始终要求用户指定目标。

认证 authGetSessions 提议的 API

随着我们越来越接近支持多个 GitHub 账户,我们有一个新的提议的认证 API,可以让你的扩展获取特定范围内的所有可访问会话。这些 API 增加的提议有几件事情需要指出:

  • 介绍vscode.认证.获取会话获取每个账户的会话,以便您的扩展可以访问。如果您想请求额外的账户,请使用{ createIfNone: true, clearSessionPreference: true }要求用户选择一个账户。
  • 强制创建新会话现在可以接受一个 property{ 会话重建: 会话 }对象,以便消费扩展可以指定他们希望重新创建的确切会话。
  • 创建会话一个Auth Provider实现的功能现在会传入会话中以重新创建(如果使用扩展的会话偏好设置)用于的值强制创建新会话)。

要使此内容准备好在 GitHub 认证扩展中采用,仍需要做更多的工作,所以如果你感兴趣,可以继续关注并在跟踪此提案的 issue 中提供反馈

Windows活动API

一个新的 API 可以通知扩展程序Windows变得活跃或不活跃。这可以用于销毁或创建持久性资源或进程,以便在不需要时将其闲置以节省资源。

这通过添加一个新的来实现活跃布尔值到现有的Windows状态类型。

vscode.Windows.当Windows状态改变时(状态 => {
  if (状态.活动 && !长运行进程) {
    长运行进程 = 启动长运行进程();
  } else if (!状态.活动 && 长运行进程) {
    长运行进程.结束();
    长运行进程 = 未定义;
  }
});

工程

为所有用户启用Electron沙盒

我们很高兴地宣布,Electron 沙盒将向所有用户推出。这个旅程始于2020年初,现在终于要结束了。您可以参考 将 VS Code 迁移到进程沙盒 博客文章了解更多信息。

扩展主机重启参与

工作台中的某些操作可能会导致扩展主机重启,而不会重新加载当前Windows。例如,当您切换配置文件时,VS Code 会重启扩展主机以处理为该配置文件运行不同一组的扩展。

然而,一些自定义和笔记本编辑器在切换配置文件后可能无法正常工作,因为所需的扩展未安装在该配置文件中。如果编辑器有未保存的更改,这可能会导致数据丢失。作为修复措施,VS Code 中的组件现在可以参与扩展主机的重启,并在扩展主机重启前保存任何未保存的更改。

我们计划在下一个里程碑中进一步发展这一经验,敬请关注更多内容!

Windows 8 和 8.1 的支持已经结束

如我们在1.77版本发布说明中提到的,v1.79 是最后一个支持 Windows 8 / Windows Server 2012 和 Windows 8.1 / Windows Server 2012 R2 的版本。请参阅我们的常见问题获取更多信息。

里程碑自动化

我们在所有的 GitHub 仓库中实现了自动里程碑复制。这意味着在微软/vscode作为创建和维护的所有其他里程碑的基础。

微软 Build 大会上的 VS Code

如果你没有机会观看 Microsoft Build 2023 直播,你可以在 Microsoft Developer YouTube 频道上观看精彩的开场演讲和会议。

对 VS Code 用户特别感兴趣的会议包括:

重要修复

  • 165933 [emmet] http-equiv="X-UA-Compatible" 在2023年
  • 181889 treeView.reveal 与 expand: 3 仅展开第一级的3个文件夹

谢谢

最后但同样重要的,向VS Code的贡献者们致以深深的谢意

问题跟踪

对我们的问题跟踪的贡献:

拉取请求

贡献于Visual Studio Code输入:

贡献于vscode-css-languageservice输入:

贡献于vscode-js调试输入:

贡献于vscode-拉取请求-GitHub输入:

贡献于摩纳哥编辑器输入: