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

2023年8月 (版本 1.82)

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

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

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

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


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

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

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

无障碍

Windows标题中的聚焦视图

Windows标题设置现在有一个${聚焦视图}变量,显示在标题栏中视图的名称(如果当前有视图聚焦)。

无障碍视图用于内联完成

内联完成,例如来自GitHub Copilot扩展的完成,现在可以在无障碍视图中检查。

改进了工作台上的导航一致性

在最后的迭代中,我们使用⌘↓(Windows, Linux Ctrl+Down⌘↑(Windows, Linux Ctrl+Up,使在输入控件(例如搜索或过滤输入)与其结果之间导航的体验在像扩展视图、键盘快捷键编辑器等组件中保持一致。

这也可以用于在终端和终端可访问缓冲区之间导航。

更新终端可访问缓冲区键绑定

之前,终端可访问缓冲区是通过Shift+Tab打开的。这在某些 shell 中与现有的键盘快捷键发生了冲突。因此,我们移除了该按键绑定,改用了⌘↓(Windows, Linux Ctrl+Down⌥F2(Windows Alt+F2,Linux Shift+Alt+F2,以与其他可访问视图保持一致。

无障碍视图中的操作

无障碍视图中的操作允许屏幕阅读器用户访问下一页/上一页禁用辅助功能详细信息,以及更多针对特定功能的操作。这些操作存在于视图上的方便工具栏中,以便保持当前上下文。

转到无障碍视图中的符号

无障碍帮助对话框和一些无障碍视图现在有一个转到符号 (⇧⌘O (Windows, Linux Ctrl+Shift+O)) 动作,以便更快速地浏览内容。

运行后聚焦终端可访问缓冲区

终端现在有一个终端.集成.运行后聚焦设置以便用户可以指定终端的可访问缓冲区(可访问缓冲区),终端本身(终端), 或者没有 () 应该在 终端:在活动终端中运行选定文本 被调用时聚焦。

工作台

内置端口转发

VS Code 现在拥有内置的端口转发系统。此功能允许您将本地运行的服务通过互联网共享给其他人和设备。要使用它,请在面板区域(端口:聚焦端口视图)中选择转发端口按钮。端口视图。

在端口视图中显示的向前端口按钮

主题: Codesong (预览于 vscode.dev)

端口转发用户指南中了解更多关于端口转发的信息。

命令中心现在默认开启

命令中心是在几个月前介绍的一种快速发现和与 VS Code 互动的方法。您可以将其用作在命令面板中查找命令、运行任务和其他快速体验的发射台。我们一直在实验在标题栏中显示命令中心,并且得到了积极的反馈,因此我们觉得是时候默认启用它了。

这是一个使用命令中心并使用前后按钮的视频。

我们看到了命令中心在VS Code中成为查找任何内容的中心的巨大潜力,因此请期待未来更多的改进!

注意:如果您不希望命令中心可见,可以右键单击标题栏,在下拉菜单中取消选中命令中心选项以隐藏它。

控制固定编辑器通过键盘或鼠标关闭的方式

有一个新的设置工作台.编辑器.防止固定编辑器关闭为了更好地控制固定标签页如何响应键盘快捷键或鼠标中键以关闭编辑器。默认情况下,固定标签页将不会通过键盘或鼠标操作关闭(默认值键盘和鼠标)。您可以相应地更改此设置:

  • 键盘和鼠标- 固定标签页将无法通过键盘快捷键或鼠标中键关闭(默认自1.82.x)。
  • 键盘- 固定标签页无法通过键盘快捷键关闭(默认直到1.81.x)。
  • 鼠标- 固定标签页不能通过鼠标中键关闭。
  • 从不- 固定标签页将始终通过键盘快捷键或鼠标中键关闭。

新的和更新的主题状态栏颜色

状态栏已经为其项目提供了许多可定制的颜色。现在有更多颜色可以用于对他们进行主题化悬停前景和背景颜色:

  • 状态栏项目错误悬停背景
  • 状态栏项目错误悬停前景
  • 状态栏项目.警告悬停背景
  • 状态栏项目.警告悬停前景
  • 状态栏项目.远程悬停背景
  • 状态栏项目.远程悬停前景
  • 状态栏项目.离线悬停背景
  • 状态栏项目.离线悬停前景

以下两个颜色名称已更新,因为颜色不再适用于整个状态栏,而是仅适用于远程指示器:

  • 状态栏.离线背景重命名到状态栏项目.离线背景
  • 状态栏.离线前景重命名到状态栏项目.离线前景

编辑器

粘性滚动

在这一迭代中,对Sticky Scroll用户界面进行了几项改进,可在编辑器顶部找到(视图:切换Sticky Scroll)。

  • 现在默认情况下,当编辑器水平滚动条滚动时,粘性滚动会水平滚动。可以通过禁用该功能来关闭此功能。编辑器.粘性滚动.与编辑器一起滚动输入:.
  • 通过按住可以查看作用域的最后一行换挡按住键并悬停在粘性滚动线上。点击某一行时按住换挡将编辑器光标移动到作用域的最后一行。
  • 折叠图标已添加到粘性滚动边缘。这些图标的渲染遵循设置编辑器显示折叠控制控制编辑器侧边栏折叠图标显示的代码。

保存时排序JSON

现在在保存时可以对JSON或JSONC(带注释的JSON)文件进行排序。使用设置json.sortOnSave.enable启用此功能。

通过键盘进行代码操作和快速修复导航

您现在可以通过输入任何与可用菜单选项相对应的关键词或字母,快速导航 Quick Fix、Code Actions 或 Source Control 菜单(它们使用 "Action" 控件)。该过滤器使用模糊匹配,搜索不仅限于第一个字母或前缀,还包括整个标签文本。

在重构菜单中搜索“Surround”或“Read”的示例

差异编辑器

在此次发布中,我们默认启用了新的差异编辑器。我们还改进了一些新的差异编辑器功能,并修复了许多错误。

移动代码检测

在这一迭代中,我们优化了移动代码检测功能。可以通过启用以下选项来启用:"diffEditor.experimental.showMoves": true或在差异编辑器上下文菜单中。启用后,当在同一大文件中将代码块从一个位置移动到另一个位置时,会检测到并绘制箭头以指示代码块移动到的位置。

即使代码移动稍有修改也会被检测到。 比较 按钮可以用来比较移动前后的块。

移动代码检测演示

折叠未更改的代码标题

使用"diffEditor.hideUnchangedRegions.enabled": true或者在编辑器上下文菜单中选择地图图标以启用折叠未更改的代码块。

随着这个版本的发布,现在对于折叠的代码块有面包屑导航,以指示哪些符号被折叠。点击面包屑导航项可以显示所选的项目:

折叠的代码标题

动态布局

如果差异编辑器的宽度太小,编辑器会自动切换到内联视图。如果编辑器再次足够宽,之前的布局将恢复。设置"diffEditor.useInlineViewWhenSpaceIsLimited": false禁用此行为。

按钮切换状态

我们更新了差异编辑器中按钮的切换样式,使其更加显眼。

旧的切换样式(未切换和已切换)以及暗淡的未切换按钮:

旧的、未切换的调暗按钮旧的,已切换

新的切换样式(未切换和已切换),带有阴影的切换背景:

新的,未切换的可见按钮新,带阴影背景的切换

终端

控制终端在启动时如何恢复

新的设置终端.集成.隐藏在启动时控制应用程序启动时是否自动创建终端。可用的选项如下:

  • 从不(默认):启动时从不隐藏终端视图。
  • 当为空时仅在没有恢复的持久会话时隐藏终端。
  • 总是: 始终隐藏终端,即使在恢复持久会话时也是如此。

禁用括号内粘贴模式

括号粘贴模式 是终端中的一个功能,它将粘贴的文本包裹在特殊序列中,以便 shell 可以使用这些信息。开启此功能的 shell 应该能够正确支持此功能,但如果出现某些情况,它可能会崩溃,此时你可能会看到类似 的文本[201~意外粘贴。此功能现在可以明确禁用,即使外壳请求该功能也会禁用。

运行设置后的终端聚焦

终端现在有一个终端.集成.运行后聚焦 设置以便用户可以指定终端在 终端:在活动终端中运行选定文本 被调用时是否获得焦点。其他选项是聚焦终端的可访问缓冲区 (可访问缓冲区) 或者什么也不聚焦 ()。

可调整大小的查找

终端的查找控件现在可以像编辑器一样,通过左侧的标题栏调整大小:

将鼠标悬停在查找控件的左边界以查看调整大小的句柄

当悬停或拖动它以调整“查找”控件的大小时,标题将被突出显示。

禁用 GPU 加速时渲染速度更快

“DOM渲染器”的性能在禁用GPU加速时得到了显著提升,这要归功于组件的重写。重写主要集中在减少使用的DOM元素数量上,而且终端越大,节省效果越明显。

在终端上进行一次典型的渲染调用时,终端有117列和36行,之前需要~10毫秒,之后需要~2毫秒。将测试机器的终端大小增加到300x100后,记录到渲染之前需要~25-35毫秒,之后需要~4-5毫秒。

更好的选择渲染

当 GPU 加速关闭时,选择渲染现在与 webgl 渲染器相同,并且所有背景都更改为主题的选择背景颜色,以确保良好的对比度和一致性。

选择时的背景现在将与其余选择相同。

尊重半最小对比度比对暗文本

最小对比度比例功能允许终端对终端的前景颜色进行更多控制,以确保它们以特定的对比度比例显示。过去,这个功能的一个问题是暗文本(CSI 2 米) 也会尊重对比度,这意味着它可以像普通文本一样突出显示。PowerShell 的自动完成 ghost 文本就是一个例子,这里没有很好地配合。

变暗的文本现在将具有一半的对比度要求。虽然这意味着文本可能不再符合最低对比度比率,但它现在与普通文本显然不同,这更为重要。

现在暗文本在典型的最小对比度比率下应该在视觉上有所区别

配置失去焦点时的光标外观

终端在不聚焦时光标的外观现在可以配置终端.集成.光标样式.不活动. 这支持所有现有风格终端.集成.光标样式,加上大纲(默认)和输入:.

新的不活动光标样式为下划线、块、线、轮廓和无

打开检测到的链接命令 (⇧⌘O (Windows, Linux Ctrl+Shift+O)) 的行为已被更改,以在保持高性能的同时,使在整个终端缓冲区中搜索链接变得更加容易。以前,它只会提供视口中及其上方一小部分的链接,并且有一个复杂的显示更多链接按钮来搜索缓冲区的其余部分:

之前必须选择最后一个条目才能搜索所有内容

现在视口中的链接会立即呈现,因此快速选择可以尽快显示:

现在初始结果仅限于初始视口

快速选择显示后,VS Code会在后台检测终端缓冲区的其余链接。当输入筛选内容时,VS Code会等待所有结果并将它们包含在筛选结果中:

在过滤开始时,整个缓冲区的结果都会包含在搜索中。

请注意CodeQL.yml直到输入过滤器时才包含进来,因为它在视口中不可见。

在终端中现在检测到以下GNU风格的链接格式:

  • 源文件: 行号.列号
  • 源文件:行1-列1.列2
  • 源文件:行1.列1-行2.列2

调试

JavaScript 调试器

WebAssembly 调试

JavaScript 调试器现在会自动将 WebAssembly 模块反编译为 WebAssembly 文本格式,并允许您在反编译的模块中逐步执行和设置断点。

在WebAssembly调试会话期间达到断点

主题: Codesong (预览于 vscode.dev)

源映射加载改进

我们在此次发布中对源映射的加载方式进行了许多改进:

  • 一些常见情况中的源映射,比如使用编译的应用程序翻译结果:tsc命令行,加载速度提高3-5倍。
  • 现在支持从 Vite 开发服务器进行热模块替换。
  • 源映射现在可以从经过身份验证的端点自动加载。

测试

改进的状态栏

测试视图中过滤器框下方的“状态区域”现在更加简洁,并且还提供了一个可点击的操作来重新运行最近运行的测试。按住Alt,同时点击重新运行按钮将调试这些测试。

测试视图状态区域显示测试结果计数、测试时间以及重新运行按钮

链接检测现在在显示测试输出的终端中运行。文件名、路径和URI现在是可点击的。

改进了与测试相关的输出体验

测试扩展可以将控制台输出与特定测试或位置相关联。以前,这种方式创建的每个输出都会在测试结果视图中显示为一个单独的项目,并且在选择时会在文本编辑器中打开。

现在,它们显示在合适的终端中,导航到输出消息会打开该测试输出的终端,并选中消息。

笔记本电脑

复制单元格输出

单元格输出菜单现在包括一个将输出复制到系统剪贴板的选项。上下文菜单还可以通过右键单击图像并选择复制输出命令来用于图像输出。

主题: 胡须主题 feat. Gold D Raynh (预览于 vscode.dev)

语言

TypeScript 5.2

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

移动到文件重命名

移动到文件 重构用于 JavaScript 和 TypeScript,可以将类、函数或常量移动到现有文件中。这还将自动更新所有对符号的引用,并根据需要更新导入:

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

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

内联变量重构

内联变量 用于JavaScript和TypeScript的代码重构将变量的所有出现替换为其常量值。

这种代码重构在重写现有代码时尤为有用。例如,当一个变量最终被声明并立即返回时,您可以使用内联变量来删除额外的声明并直接返回该值:

函数 添加(a, b) {
  常量 结果 = a + b;
  返回 结果;
}

运行后内联变量结果输入:

函数 添加(a, b) {
  返回 a + b;
}

可点击的参数提示

您现在可以点击参数提示以快速跳转到参数声明。启用内联提示的方法如下:

"editor.inlayHints.enabled": "开启",
"typescript.inlayHints.parameterNames.enabled": "全部",
"javascript.inlayHints.parameterNames.enabled": "全部"

按住Ctrl/Cmd并点击参数名称以跳转到该参数的声明:

我们计划在即将发布的版本中启用转到定义功能,用于其他JavaScript和TypeScript的内联提示。

远程开发

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

亮点包括:

  • 更好的远程 - 隧道连接可靠性。
  • 在WSL中安装Docker命令。
  • 预构建开发容器操作指南。

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

对扩展的贡献

GitHub Copilot

从聊天视图创建工作区

您现在可以使用/创建工作区GitHub Copilot Chat 扩展的稳定版本中,从自然语言描述创建工作区。

我们还进行了以下改进:

  1. 提议的工作区现在在聊天响应中以文件树的形式呈现。
  2. 您可以点击文件以在编辑器中打开只读预览。
  3. 如果Copilot的初步建议不完全正确,您可以提出跟进问题,以帮助Copilot迭代和改进。

在带有内联聊天的未命名编辑器中开始编码

现在有一个提示,说明如何通过⌘I(Windows, Linux Ctrl+I)启动内联聊天会话,当您打开一个未命名的文本编辑器时。屏幕阅读器用户可以听到这个提示,并选择通过无障碍。详细程度。未命名提示设置。

快速聊天的改进

我们几个月前引入了Quick Chat,并迅速迭代,以提供一种为VS Code量身定制的体验。

本次迭代的亮点:

  • 更紧凑的用户体验。
  • 快速聊天现在在失去焦点时保持打开。
  • Sash 和 "scroll-to-grow" 行为用于调整Windows大小。
  • 打开快速聊天 现在在命令中心。

快速聊天Windows显示问题和答案

总体而言,用户体验更加紧凑,以与其他“快速打开”体验(如命令面板)保持一致( everywhere减少填充,用户和 Copilot 图标较小,按钮是内联的而不是在标题栏中)。

默认情况下,当你提问时,快速聊天Windows会调整大小,以便专注于该问题和答案,以减少屏幕空间。我们还认为这有助于专注于你可能想问 Copilot 的快速问题。你的对话历史记录仍然可用,你可以向上滚动以回顾过去。

由于动态高度的存在,如果您需要更多的或更少的空间,我们也希望提供一种调整Windows大小的方法。有两种调整Windows大小的选项。第一个是我们所谓的“滚动以增长”。如果您的快速聊天Windows因答案较短而较小,但您希望看到一个较长的以前的答案,当您向上滚动时,快速聊天Windows将增长到最大高度。

快速聊天的高度可以通过执行以下操作之一重置为仅显示最后的问题和答案:

  • 关闭快速聊天并等待30秒。
  • 提出另一个问题或运行/清除请记住,/清除清除您的聊天记录(一去不复返)。
  • 双击下边框。

提到这个条形拉环……我们还在快速聊天的底部有一个条形拉环,可以手动调整快速聊天的高度。当你使用条形拉环时,你选择退出默认的动态行为,并表示“我希望这个高度固定在这里,直到重置。”

注意:如果你想返回动态行为,请双击标题栏或输入/清除在聊天中/清除清除您的聊天记录。

最后但同样重要的是,您可以在命令中心中通过打开快速聊天 选项启动快速聊天。

在命令中心打开快速聊天命令

解释终端选择

Copilot 现在具有通过选择来解释当前终端选择的能力 Copilot: 解释这个 在终端的上下文菜单中 (右键点击换挡+右键点击取决于平台。

终端上下文菜单的第一页条目是 Copilot: 解释这个

Copilot:解释这个命令将打开聊天视图,Copilot将在此返回详细的解释。

Copilot在解释中提供了详细信息,例如它解释了git push使用LFS,什么是增量压缩

自然语言搜索设置

设置编辑器现在允许使用自然语言搜索 GitHub Copilot Chat.

目前,自然语言搜索结果位于关键词匹配结果的下方,并按相似度分数降序排列,但我们计划在下个月修复排序方式,使搜索结果继续按其目录组进行排列。

自然语言搜索目前依赖于 Copilot 嵌入。因此,在嵌入可用之前(即 GitHub Copilot Chat 扩展激活后的几秒钟内)进行的搜索不会在设置编辑器中显示自然语言搜索结果。

在设置编辑器中搜索“放大文本”显示编辑器(fontSize)作为结果

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

Python

新的 Python 格式化文章

有一个新的专门话题关于Python 格式化,在那里你可以学习如何设置默认格式化器,例如autopep8Black,并通过对各种设置进行自定义。

使用环境变量终端激活

Python扩展现在有了一个新的激活机制,可以在终端中激活选定的环境,而无需运行任何显式的激活命令。这个月,我们开始将其作为一个实验进行推广,使其成为默认体验。使用新方法,我们使用环境变量来激活终端,这在终端启动时是隐式的,因此可以更快,特别是对于conda环境。您可以添加以下用户设置:"python.experiments.optInto": ["pythonTerminalEnvVarActivation"]去试试它。

如果您对这个实验有任何评论或建议,请随时在 vscode-python issue #11039 中分享。

重新创建或使用现有的 .venv 环境

当在已经包含一个的作业空间中工作时.venv 文件夹,Python: Create Environment 命令已更新,带有重新创建或使用现有环境的选项。如果您决定重新创建环境,您的当前 .venv被删除,允许您重新创建一个名为的新环境.venv然后,您可以按照Python: 创建环境的流程来自定义这个新环境,选择您喜欢的解释器并指定任何需要安装的依赖文件。如果环境无法被删除,例如由于它处于活动状态,您将被提示手动删除环境。

或者,如果您选择使用现有的环境,则该环境将被选择为您的工作区。

预览功能

我们正在尝试在快速访问菜单中显示工作区搜索结果。要尝试此功能,请运行搜索:快速文本搜索(实验性)。此命令设置快速打开以接受搜索查询。输入一些文本以查看来自不同工作区文件的匹配项。

暗淡无焦点的编辑器和终端

有一个新的实验性功能,可以将当前未聚焦的编辑器和终端变暗。这个功能的目的是为了让文本放置位置更加清晰,相比传统的闪烁光标。

当在2x2网格编辑器组布局中启用暗淡未聚焦时,只有一个会完全不透明

上面的图像显示了不透明度设置为0.5时启用的暗淡不聚焦的特征,以便更清楚地看到编辑器的终端服务.ts有焦点。

这可以通过使用无障碍.聚焦未启用.启用并且调光的量由无障碍.不聚焦的透明度输入:.

该功能目前仅涵盖编辑器和终端,但计划扩展到允许用户配置他们希望变暗的视图

扩展编写

对批量范围格式化的支持

文档范围格式化编辑提供者API 现在支持批量格式化。这意味着扩展可以选择向编辑器发送信号,表示它可以同时处理多个范围。这有助于减少对格式化提供程序的调用次数,从而提高性能。

要选择批量格式化,提供者必须实现一个新可选函数:提供DocumentRangesFormattingEdits.

环境变量集合限制在工作区文件夹

环境变量集合API 现在支持创建一个新的集合,该集合特定于某个工作区文件夹,并且除了“全局”集合之外还会应用。

// 获取第一个工作区文件夹的限定集合
const scoped = context.environmentVariableCollection.getScoped({
  workspaceFolder: workspace.workspaceFolders[0]
});
scoped.replace('SCOPED', '1');
// 只有在第一个工作区文件夹中创建的终端将设置 SCOPED=1

Python 扩展使用此机制根据终端所属的文件夹在多根工作区中设置不同的虚拟环境。

配置环境变量突变器何时应用

环境变量集合API 现在具有在 shell 初始化脚本运行后在 shell 集成脚本中应用更改的能力。这仅在启用 shell 集成时有效,因此更改可以在 shell 创建时和 shell 集成内部同时应用,如果这是关键的:

上下文.环境变量集合.预插入('PATH', '/my/custom/path', {
  在进程创建时应用: true,
  在 shell 集成时应用: true
});

这个功能在变量可能被 shell 初始化脚本修改时非常有用。

提议的API

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

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

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

测试消息的上下文值和贡献点

您可以提供一个上下文值测试消息当用户对这些消息采取行动时,将显示 s。此外,有两个新的菜单贡献点。测试/消息/上下文测试/消息/内容前者显示在测试结果树视图的消息中,后者显示在编辑器中的消息。

阅读更多关于上下文值第190277期

终端上下文菜单贡献

提出了两个新菜单,允许扩展将其自己的上下文菜单操作集成到终端中:

  • 终端/上下文- 终端上下文菜单
  • 终端/标题/上下文- 终端标签上下文菜单

收听终端命令执行

一个早期的提案,用于实现扩展程序监听终端命令执行API的能力,可供测试。此API是通过shell集成实现的,仅在启用并正常工作的终端上触发。

export interface TerminalExecutedCommand {
  /**
   * The {@link Terminal} the command was executed in.
   */
  terminal: Terminal;
  /**
   * The full command line that was executed, including both the command and the arguments.
   */
  commandLine: string | undefined;
  /**
   * The current working directory that was reported by the shell. This will be a {@link Uri}
   * if the string reported by the shell can reliably be mapped to the connected machine.
   */
  cwd: Uri | string | undefined;
  /**
   * The exit code reported by the shell.
   */
  exitCode: number | undefined;
  /**
   * The output of the command when it has finished executing. This is the plain text shown in
   * the terminal buffer and does not include raw escape sequences. Depending on the shell
   * setup, this may include the command line as part of the output.
   */
  output: string | undefined;
}

导出 命名空间 Windows {
  /**
   * 当终端完成执行命令时发出的事件。
   * 如果执行的命令退出了 shell,则不会触发此事件,
   * 请监听
   * 
   {@链接 onDidCloseTerminal} 来处理这种情况。   */
   导出
  常量 onDidExecuteTerminalCommand: Event<TerminalExecutedCommand>;}

这个API的形状尚未最终确定,但基本思路将保持不变。

这是一个示例用法,监听任何成功的git 推送命令并触发扩展刷新:

```plaintext
const disposables = [];
disposables.push(
  window.onDidExecuteTerminalCommand(command => {
    if (command.commandLine.startsWith('git push') && command.exitCode === 0) {
      refreshState();
    }
  })
);
function refreshState() {
  /* ... */
}
```

终端选择访问

一个简单的提议API以访问终端选择:

导出 接口 终端 {
  /**
   * 终端选定的文本,如果没有选定则为未定义。
   */
  只读 选定: 字符串 | 未定义;
}

这个 API 很可能会在最终确定之前包含一个相应的更改事件,而且 API 名称可能会更改,以使其更清楚地表明这是一个简单的字符串,而不是范围基于像文本编辑器选择输入:.

终端快速修复进度

终端快速修复提案现在可以触发一个常规 VS Code 命令,而不是一个终端命令。这还需要更改终端命令接口名称:

export interface TerminalQuickFixProvider {
  /**
   * Provides terminal quick fixes
   * @param commandMatchResult The command match result for which to provide quick fixes
   * @param token A cancellation token indicating the result is no longer needed
   * @return Terminal quick fix(es) if any
   */
  provideTerminalQuickFixes(
    commandMatchResult: TerminalCommandMatchResult,
    token: CancellationToken
  ): ProviderResult<
    SingleOrMany<终端快速修复执行终端命令 | 终端快速修复打开器 | 命令>
  >;
}
导出 终端快速修复执行终端命令 {
  /**
   * 要运行的终端命令
   */
  终端命令: 字符串;
  构造函数(终端命令: 字符串);
}

工程

Electron 25 更新

在这个里程碑中,我们正在向我们的稳定用户推广Electron 25更新。此更新包含Chromium114.0.5735.289和 Node.js18.15.0我们想感谢所有在Insiders版本上自行托管并提供早期反馈的人。

Node.js 更新亮点

Node.js 已包含在我们的桌面应用程序和与我们的服务器捆绑在一起的独立可执行文件中,从 v16 -> v18 进行了更新。由于这是版本的重大更新,存在一些行为和兼容性变化:

  • DNS 结果订单 从操作系统不再排序。我们已经添加了--dns结果顺序=ipv4优先 在本地和服务器场景中避免破坏尚未采用此更改的扩展。向前看,我们建议扩展使用 autoSelectFamily 选项在 套接字连接API 以适应结果顺序的变化。

  • 来自官方 Node.js 仓库的预编译二进制文件现在与基于 glibc 2.28 或更高版本的 Linux 发行版兼容。这意味着我们将停止在服务器上对 Ubuntu 18、CentOS 7、RHEL 7 等的支持。我们现在为我们的 Linux 服务器提供自定义编译的 Node.js,以保持与 glibc 2.17 或更高版本的兼容性。在未来更新中,当我们不再能够在 CentOS 7 镜像上编译更新的 Node.js 版本时,此支持将会改变,因此我们建议受影响的服务器用户更新他们的操作系统版本。

Chromium 更新亮点

  • Mesa版本更新后,Chromium着色器编译可能会被破坏,导致应用程序UI出现伪影。该问题在问题 #190437中跟踪,其中还包含Chromium错误报告的链接。您可以通过运行--详细并寻找以下行错误:[shared_context_state.cc(81)] Skia 着色器编译错误在日志中。如果您受到此问题的影响,当前的解决方法是删除位于的GPU缓存 ~/.config/Code/GPUCache输入:.
  • 当 Chromium 使用 SwiftShader 作为 webgl 的后端时,我们集成的终端在 Windows 和 Linux 上的性能似乎都下降了。作为权宜之计,我们根据 检测受影响的用户GL渲染器字符串并切换到终端的DOM后端。更多详细信息可以在问题 #190195中找到,其中还包含到Chromium错误报告的链接。

谢谢

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

问题跟踪

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

拉取请求

贡献于Visual Studio Code输入:

贡献于vscode-css-languageservice输入:

贡献于vscode-十六进制编辑器输入:

贡献于vscode-js调试输入:

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

贡献于vscode-vsce输入:

  • @bandantonio (安东尼奥)
    • 功能:在 --help 中添加用户友好信息PR #884
    • 功能:添加在没有许可证文件的情况下进行打包和发布的支持PR #887
    • 重新措辞错误信息,用于匹配表中不匹配的定价值PR #890