2024年3月(版本 1.88)

更新 1.88.1:本次更新修复了这些 问题

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


欢迎阅读 Visual Studio Code 2024 年 3 月版发布说明。此版本带来了许多我们希望您会喜欢的更新,主要亮点包括:

如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新Insiders:想尽快尝试新功能吗?您可以下载每晚Insiders版本并尽快尝试最新更新。

辅助功能

语音录制提示音

我们为语音录制添加了新的无障碍提示音

  • 语音录制开始 - 通过 accessibility.signals.voiceRecordingStarted 设置配置
  • 语音录制结束 - 通过 accessibility.signals.voiceRecordingStopped 设置配置

改进了差异编辑器(Diff Editor)的无障碍性

如果您使用屏幕阅读器,现在当差异编辑器成为活动编辑器时,您会收到提示。您可以使用 accessibility.verbosity.diffEditorActive 设置禁用此行为。

我们还在 无障碍帮助对话框中添加了关于 差异编辑器:切换侧边(Diff Editor: Switch Side)的信息,这是一个对键盘用户很有帮助的命令。

无障碍信号现在在差异编辑器的两侧均可工作。此前,它们仅在修改侧可用。

无障碍视图(Accessible View)中的聊天代码块命令

当您在无障碍视图中检查聊天响应时,现在可以使用聊天视图中提供的代码块命令和快捷键绑定。

这些包括聊天:插入到光标处聊天:插入到终端以及聊天:插入到新文件

笔记本单元格 aria 标签更新

笔记本单元格的 Aria 标签现在会更新,以指示单元格当前是否正在执行或处于挂起执行状态。

工作台

浮动窗口中的自定义编辑器支持

我们扩展了对将编辑器打开到 浮动窗口的支持,使其适用于自定义编辑器,以及所有使用 Webview API 的编辑器。这包括 Markdown 预览、浏览器预览和复杂的自定义编辑器,例如我们的 十六进制编辑器

注意:由于技术限制,将基于 Webview 的编辑器在窗口间移动时,需要重新加载该编辑器的内容。随后由编辑器负责恢复您之前积累的状态。在某些情况下,您的状态可能会重置,就像第一次打开该编辑器一样。

打开编辑器的自定义标签

现在您可以自定义编辑器选项卡和“打开的编辑器”视图的显示标签。此功能有助于区分具有相同名称文件的编辑器。

您可以根据自己的喜好,通过在 workbench.editor.customLabels.patterns 设置下添加条目来定制这些标签。每个条目都应包含一个匹配文件路径的 glob 模式和一个定义编辑器选项卡新名称的模板。此自定义仅在文件路径与指定模式匹配时应用。模式是否匹配,取决于它是定义为相对文件路径模式还是绝对文件路径模式。

模板可以包含诸如 ${filename}${extname}${dirname}${dirname(N)} 等变量,这些变量会被文件路径中的值动态替换。

要启用或禁用这些自定义标签,请使用 workbench.editor.customLabels.enabled 设置。这使您无需删除自定义模式即可随时切换回原始编辑器名称。

锁定滚动

现在,您可以使用视图:切换编辑器锁定滚动(View: Toggle Locked Scrolling Across Editors)命令同步所有可见编辑器的滚动。这意味着当您在一个编辑器中滚动时,其他编辑器也会滚动相同的距离,从而保持一切对齐。如果您需要并排比较文件,此功能非常有用。

如果您需要更多控制权来启用和禁用锁定滚动,您可以选择仅在按住特定快捷键时激活滚动同步。为 workbench.action.holdLockedScrolling 命令设置快捷键,即可根据需要临时锁定跨编辑器的滚动。

底部的活动栏

此前,我们引入了将活动栏移动到侧边栏顶部的选项。现在,我们也允许您将活动栏移动到底部。为此,请将 workbench.activityBar.location 设置更改为 bottom

我们还改进了活动栏位于顶部时的外观,以确保它能与界面的其余部分和谐统一。

Three screenshots, showing the different Activity Bar positions: on the left side, at the top, and at the bottom

搜索编辑器单击行为

现在,您可以配置 search.searchEditor.singleClickBehaviour 设置,以确定单击搜索编辑器条目时的行为。目前,该设置仅支持打开“速览定义”。

快速搜索改进

粘性文件路径

在快速搜索中,我们使文件名分隔符具有粘性,以便更清楚地了解搜索结果与哪个文件相关联。当您在一个文件中多次出现搜索词时,这非常有用。

文件路径分隔符按钮

当您将鼠标悬停在特定文件的搜索结果上,或者向下箭头移动到结果时,文件路径分隔符处也会出现按钮(例如打开该文件)。

快速选择分隔符导航快捷键

我们收到反馈称,能够快速选择器中的分隔符之间进行导航会很好。本次迭代中,我们添加了相应的快捷键。在 Windows 和 Linux 上,您可以使用 Alt+Up/Down,在 macOS 上是 Cmd+Up/Down。在此示例视频中,您可以看到活动项目在以下内容间移动

  • 命令面板中的 最近使用其他命令 分隔符
  • 快速搜索中的文件路径分隔符之间

快速选择器禁用复选框项

本次迭代中,我们改进了当快速选择器显示已禁用项目时的视觉效果。可以在“管理受信任的扩展”快速选择器中找到一个示例,该选择器可为您登录的任何账户访问。

The Manage Trusted Extensions quick pick with some items disabled

扩展更新改进

重启扩展

当扩展更新时,您现在可以重启扩展,而无需重新加载窗口。

Restart extensions instead of reloading the window

注意:当您连接到远程服务器(如 WSL、SSH 或开发容器)时,仍需重新加载窗口才能更新扩展。

随 VS Code 更新同步更新扩展

当启用了 扩展自动更新 后,VS Code 现在会更新那些与可更新的新版 VS Code 兼容的扩展。如果扩展的新版本与当前版本的 VS Code 不兼容,则仅在您更新 VS Code 后,该扩展的新版本才会被启用。

跳转到评论回复

现在,“评论”视图中评论线程的上下文菜单包含“回复”操作(当该线程允许回复时)。这使您能够快速跳转到回复输入框并开始输入回复。

Comments view context menu with a Reply action

编辑器

小地图章节标题

小地图现在可以识别并呈现由折叠标记定义的章节,例如 TypeScript 中的 //#region,或使用 MARK: 的注释。这让您可以快速扫描和浏览大型文件。

Screenshot that shows folding marker regions defined in the editor in the minimap

重构预览快捷键

我们更新了“重命名符号”重构预览(F2)的快捷键,以保持与其他上下文中重构预览(如代码操作)的一致性。现在,您可以使用 ⌘Enter (Windows, Linux Ctrl+Enter) 预览编辑(此前为 Shift + Enter)。

当悬停在代码操作上时,⌘Enter (Windows, Linux Ctrl+Enter) 也会在工作台中打开重构预览面板。

差异编辑器暂存/撤销选择按钮

差异编辑器现在有一个用于暂存撤销控件的独立槽位。这些操作使您可以暂存或撤销已更改的代码块。

如果您对某些更改进行了文本选择,这些按钮允许您暂存或撤销所选的更改(选择范围内的所有更改字符)。

Video that shows the gutter buttons in the diff editor to stage or revert changes

您可以通过将 diffEditor.renderGutterMenu 设置为 false 来隐藏差异编辑器的槽位。

重命名建议行为

我们改进了使用重命名建议的流程,使其与快速选择器一致。当您从列表中选择重命名建议时,输入值会相应更新,从而允许您进一步修改该建议。

Video of the Rename control that updates the input with the focused rename suggestion

源代码管理

传入更改文件装饰

为了帮助避免从远程合并/变基更改时产生潜在冲突,我们现在为所有有传入更改且已获取但尚未合并/变基的文件显示文件装饰。要从该功能中受益,您需要启用 git.autofetchgit.decorations.enabled 设置。

Source Control incoming changes file decorators in the explorer view and in the editor tabs

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

终端

调试终端中的 Shell 集成

为了向用户和扩展提供增强的功能,在调试时启动的终端中现在会自动启用 Shell 集成

运行最近命令改进

基于 Shell 集成的运行最近命令⌃⌥R (Windows, Linux Ctrl+Alt+R))现在会在可能的情况下滚动到并显示上次运行该命令的时间。运行该命令或取消快速选择器会将终端返回到其之前的状态。

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

打开检测到的链接命令(⇧⌘G (Windows, Linux Ctrl+Shift+G))现在可以在编辑器中预览链接结果,并突出显示终端中的链接源。

此外,重复的链接现在会被过滤掉,所有链接都以一致的格式呈现。

When 3 yarn.lock links are printed with the same line and column numbers, they will all be merged into a single detected link

词链接terminal.integrated.wordSeparators 设置定义,当找不到文件/文件夹/URI 时,它们是回退方案。激活后,这些链接现在包含额外的周围上下文,以增加用于搜索的行号和列信息。

注意截图中链接 terminalLinkParsing 已被选中,但产生的搜索也包括链接后的行号。

Activating a "terminalLinkParsing" link when followed by "line 24" will include the 24 line number in the search

现在终端中可以检测到以下链接格式,即使路径包含空格

  •  FILE  path:line:column

终端粘性滚动透明度支持

终端中的粘性滚动现在支持透明度。主题可以通过将 terminalStickyScroll.background 主题颜色配置为透明值,或在您的 settings.json 中指定覆盖来使用此功能。例如

{
  "workbench.colorCustomizations": {
    "[Default Dark Modern]": {
      "terminalStickyScroll.background": "#181818c0"
    }
  }
}

这将产生一个透明的粘性滚动背景,允许背后的文本透视出来

The Sticky Scroll background can now be transparent, allowing the text behind to shine through

测试

测试覆盖率

本次迭代中,我们完成了测试覆盖率 API,为 VS Code 带来了原生覆盖率支持。如果您的测试系统支持,您可以使用新的运行并带覆盖率(Run With Coverage)按钮获取覆盖率信息

Screenshot showing the Run With Coverage button in the Test explorer view

同样有新的快捷键用于带覆盖率运行测试,例如 Ctrl+; Ctrl+Shift+A 运行所有测试并带覆盖率,Ctrl+; Ctrl+Shift+L 运行最近的一组测试并带覆盖率。

覆盖率信息默认显示在行号上作为覆盖层,但您可以切换内联覆盖率以查看源文件的完整详细信息

Screenshot showing the Test Coverage view in the Test Explorer view and color overlays in the editor

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

使用测试覆盖率需要您的扩展实现新的 API。一些扩展,例如 Java 测试运行程序node:test 运行程序已经支持它。在团队的 12 月1 月更新中了解更多关于 Java 测试覆盖率的信息。

扩展开发者可以在 测试 API 文档中找到有关测试覆盖率 API 的更多详细信息。

测试消息中的颜色代码支持

我们现在解析终端颜色代码以对文本测试消息进行着色,例如测试失败时显示的那些消息,而不是显示原始的“不可打印”数据代码。

语言

TypeScript 5.4

VS Code 现在包含 TypeScript 5.4。此重大更新为类型检查和 IntelliSense 带来了新的改进,并修复了多个错误。有关详细信息,请参阅 TypeScript 5.4 发布博客文章

当您将图像或文件拖放或粘贴到 Markdown 文件时,VS Code 会自动为其插入 Markdown 图像或链接语法。现在,当我们插入到代码块和其他不支持 Markdown 语法的上下文中时,我们也会智能地禁用此行为

您可以随时通过使用拖放/粘贴小部件切换回插入 Markdown 语法。您可以使用 markdown.editor.drop.enabledmarkdown.editor.filePaste.enabled 设置来配置此行为。

Notebook

笔记本输出中的键盘快捷键

我们现在支持笔记本输出中的一些标准键盘快捷键

  • 可以使用键盘快捷键 Ctrl+ACtrl+C 选择并复制输出。
  • 可滚动输出可以使用键盘快捷键 UpDown 进行滚动。
  • 可以使用键盘快捷键 Ctrl+HomeCtrl+End(macOS 上为 Cmd+UpCmd+Down)滚动到可滚动输出的顶部和底部。
  • 可以使用键盘快捷键 Ctrl+Shift+UpCtrl+Shift+End(macOS 上为 Shift+Cmd+UpShift+Cmd+Down)选择从当前选择点到输出顶部或底部的内容。

单元格错误诊断

扩展现在可以为失败的单元格提供错误详细信息,以便在单元格内显示错误诊断。在聚焦单元格容器时,notebook.cell.openFailureActions (⌘. (Windows, Linux Ctrl+.)) 会跳转到该错误的快速操作菜单。仅当有语言模型可用于提供快速操作时,才会显示该诊断。

分段运行单元格

为了更轻松地运行笔记本中的相关单元格,现在可以使用运行分段单元格操作运行由 Markdown 章节标题分组的单元格。此操作可在笔记本大纲视图和粘性滚动元素中使用。

在粘性滚动元素中,右键单击您选择的标题,并通过上下文菜单中的操作运行该分段。在大纲视图中,选择悬停或选择时出现的工具栏图标,然后通过显示的操作运行单个单元格或单元格分段。

大纲视图中的过滤支持

您现在可以在笔记本大纲视图中使用过滤器,使您能够控制是否包含 Markdown 标题、代码单元格和代码单元格符号。过滤器对应于以下设置

  • notebook.outline.showMarkdownHeadersOnly
  • notebook.outline.showCodeCells
  • notebook.outline.showCodeCellSymbols

关闭时提示保存交互式窗口

通过启用 interactiveWindow.promptToSaveOnClose 设置,当交互式窗口关闭时,系统会提示您保存内容,以确保您不会丢失任何工作。当前唯一支持的文件格式是 .ipynb

远程开发

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

亮点包括:

  • 针对具有扩展支持的发行版的备用服务器下载
  • 基于 URI 查询字符串的端口转发
  • 开发容器扩展自动启动 Docker
  • 通过组策略限制对开发隧道和端口转发的访问

您可以在 远程开发发布说明中了解有关这些功能的更多信息。

对扩展的贡献

VS Code Speech

延迟激活

VS Code 语音扩展现在仅在 VS Code 中请求语音转文本服务时才会激活。这确保了该扩展不会对扩展宿主的启动时间产生负面影响。

将显示语言用作默认语音语言

默认情况下,VS Code 语音扩展现在使用 VS Code 的显示语言作为语音语言,并在支持该语言的情况下选择相应的模型。

对于 accessibility.voice.speechLanguage 设置,auto 是新的默认值。

GitHub Copilot

内联聊天改进

内联聊天现在作为浮动控件启动,使其更加轻量化。在第一次请求后,控件会展开以占据更多空间。我们还调整了渲染,使其与其他聊天体验(如聊天视图或快速聊天)更加一致。

浮动在编辑器文本上方的内联聊天内容小部件 主题:GitHub Light Colorblind (Beta)

我们重新定位了重运行和反馈控件,并使用于查看差异的切换控件与“接受”和“丢弃”按钮一起变得更加突出。

Copilot 内联聊天截图,显示了重新定位的控件。 主题:GitHub Light Colorblind (Beta)

笔记本内核状态作为上下文

当您在笔记本中时,内核状态(例如变量和可用包)现在会自动作为上下文包含在内联聊天中。这使 Copilot 能够使用笔记本的当前状态来提供更相关的补全。

主题:GitHub Dark

提交消息生成改进

为了提高生成提交消息的质量,我们现在还将存储库中最近 10 次提交的提交消息,以及当前用户最近 10 次提交的提交消息作为额外上下文包含在内。

工作区创建改进

@workspace /new 命令现在会在检测到聊天提示词的合适匹配时,从 GitHub 存储库中精选示例项目作为建议。

Chat view with @workspace /new that provides a link to a sample project

@workspace /new 命令也得到了增强,以更有效地管理上下文和历史记录。这使您可以通过跟进查询来优化建议的工作区结构和文件内容。例如,“使用 TypeScript 而不是 JavaScript”或“同时也添加 bootstrap”。

@terminal /explain 斜杠命令

提供了一个新的 @terminal /explain 斜杠命令,该命令针对解释命令或错误进行了优化。如果不使用 /explain@terminal 则针对建议修复进行了优化。此斜杠命令用于使用 Copilot 解释快速修复或解释所选内容操作中。

Using the explain using copilot quick fix will ask copilot "@terminal /explain #terminalLastCommand"

预览:终端内联聊天

本版本中提供了终端内联聊天的预览版,让您可以直接在终端中方便地访问 Copilot 的功能。

您可以使用 terminal.integrated.experimentalInlineChat 设置启用终端内联聊天。要在终端中调用内联聊天,请使用 ⌘I (Windows, Linux Ctrl+I) 快捷键。

Opening terminal inline chat will open and focus an input box similar to inline chat in the editor

终端内联聊天使用 @terminal 聊天参与者,该参与者拥有关于集成终端的 Shell 及其内容的上下文。

You can ask complex questions like "list the top 5 largest files in the src directory"

建议命令后,使用 ⌘Enter (Windows, Linux Ctrl+Enter) 在终端中运行该命令,或使用 ⌥Enter (Windows, Linux Alt+Enter) 将命令插入到终端。命令也可以在 Copilot 响应中直接编辑后再运行(目前在 Windows 和 Linux 上为 Ctrl+down, Tab, Tab,在 macOS 上为 Cmd+down, Tab, Tab)。

Complex queries are OS and shell-specific

认证流程的清晰度

认证的清晰度非常重要。我们希望明确我们如何进行认证以及我们要求什么。如果您在 VS Code 中打开私有存储库,而我们没有针对此场景的正确认证,我们会弹出一个认证对话框。对话框中包含为何需要认证的说明,以及一个了解更多按钮以查找有关这些要求的更多信息。

Screenshot of a modal window that's asking to authenticate with GitHub and that contains a Learn more button

了解更多按钮会将您带到我们的 认证要求文档

变量引用

聊天响应中的已用引用部分提供了有关所用上下文的信息。此前,此部分仅显示隐式提取的上下文。现在,它还显示您在聊天提示中明确提到的变量,例如 #file#editor。如果变量在“已用引用”中缺失,则可能表明它被忽略了,因为对于语言模型的上下文窗口而言它太大了。

Screenshot of a chat response, showing the '#file' variable in the Used references section

次要聊天提交操作

在聊天视图中,聊天提交按钮现在有一个下拉菜单,可以轻松访问更多操作。

  • 发送至 @workspace 将您的查询提交给 @workspace 聊天参与者,这对于有关工作区内容的问题非常有用
  • 发送至新聊天启动一个新的空聊天,然后提交查询

Screenshot of the chat submit dropdown options

使用 Copilot: 解释此项 时的作用域选择

当您在活动编辑器中未做任何选择时使用 /explain,且有多个感兴趣的作用域时,我们添加了提示以澄清要解释哪个符号或块作用域。

Screenshot of the scope selection quick pick when the scope for /explain is unclear

此行为目前需要选择性加入,位于 github.copilot.chat.scopeSelection 设置下。

Python

改进了 Flask 和 Django 的调试配置选择

为 Flask 和 Django 应用创建启动配置变得更容易了!我们进行了改进,以便在为您的 Web 应用创建 launch.json 时,能够检测工作区中可能的启动文件。

对于 Django,Python 调试器扩展会查找根目录或工作区下一级子目录中的 manage.pyapp.py 文件。对于 Flask,扩展会查找包含 Flask 应用声明(例如 app = Flask())的 wsgi.pyapp.pyinit.py 文件。

如果项目中找不到这些文件,下拉菜单会显示相应项目类型的默认选项,即使该文件可能不存在。

Hatch 环境发现

Hatch 环境现在默认被发现和激活,类似于 Venv、Conda 和 Poetry 等其他常见环境。此外,对于未注册显式环境标识符的 Hatch,扩展能够通过环境定位器确定环境类型 (Hatch)。

pipenv、pyenv 和 Poetry 项目的自动环境选择

如果您的工作区包含 pipenv、pyenv 或 Poetry 环境,则现在会自动为您的工作区选择相应的环境。此前,扩展正确地发现了这些环境,但选择了默认的全局解释器,需要您手动为工作区选择合适的环境。

现在,Python 扩展会根据环境的存在和相应的配置文件来推断已激活的环境。例如,在 pyenv 的情况下,扩展会查看 .python-version 文件以自动为工作区选择合适的解释器。

报告问题命令改进

PythonPython 调试器扩展现在让您更轻松地向我们的仓库报告问题!如果您使用报告问题命令 (workbench.action.openIssueReporter) 提交问题,大部分繁重的工作已经完成,您只需提供一些额外信息,以便我们的团队能够有效地分类您遇到的问题。

要使用帮助:报告问题命令为 @vscode-python@vscode-python-debugger 提交问题,请分别从扩展下拉菜单中选择 PythonPython 调试器

GitHub 拉取请求

GitHub Pull Requests 扩展取得了更多进展,该扩展使您能够处理、创建和管理拉取请求和问题。新功能包括:

  • 过时的评论在“评论”视图中的显示方式与当前评论不同。
  • githubPullRequests.createDefaultBaseBranch 的新 auto 值使用上游的默认分支作为派生存储库的基础分支。
  • “评论”视图中的评论线程具有内联操作(解决/取消解决,以及过时评论的“Diff Comment with HEAD”)和上下文菜单操作。

查看扩展的 0.86.0 发布说明,了解其他亮点。

Jupyter

单元格执行分析改进

通过最新的 Pylance 预发布版,我们为 Jupyter 单元格提供了更好的依赖分析。它现在理解模块导入,这在您有导入先前单元格中定义的模块的单元格时特别有用。

要启用此功能,请在 VS Code Insiders 中安装最新的 Pylance 预发布版,并启用 jupyter.executionAnalysis.enablednotebook.consolidatedRunButton 设置。

扩展创作

使用问题报告器命令进行扩展错误报告

上一次迭代中,我们完善了一种扩展提交方式,允许扩展在通过 VS Code 的问题报告器向 GitHub 提交时提供额外的数据或模板。扩展可以贡献一个命令,该命令可通过帮助:报告问题...命令访问。选择他们的扩展会运行他们贡献的命令。请查看我们的 问题报告文档/发布说明,了解有关这如何与您的扩展配合工作的更多信息!

此外,所有安装的扩展都可以通过快速打开进行快速报告。通过在快速打开 (⌘P (Windows, Linux Ctrl+P)) 中输入 issue ,您可以快速选择或搜索已安装的扩展进行报告。

某些扩展将开始转向利用这种新的问题报告流程,并将不再需要直接贡献到命令面板中的自定义 报告问题... 命令。

预览功能

终端中重叠字形的重新缩放

提供了一个新的设置 terminal.integrated.rescaleOverlappingGlyphs,它会重新缩放重叠后续单元格的字形。这旨在涵盖模糊宽度字符,这些字符可能具有与后端 pty/unicode 版本认为不匹配的字体字形。例如,在大多数字体中,罗马数字 unicode 字符 (U+2160+) 通常占用多个单元格,因此在启用此设置时它们会被水平重新缩放。

无重新缩放

Before the glyphs for Ⅷ and Ⅻ depending on the font would always overlap the following cells

带重新缩放

After the glyphs for Ⅷ and Ⅻ depending on the font are rescaled horizontally to fit a single cell

何时进行重新缩放的规则仍在调整中,我们正在考虑在未来稳固时将其作为默认设置。如果您尝试此操作并看到正在重新缩放但不应重新缩放的字符,请 创建问题

本地工作区扩展

我们很高兴介绍这一新的预览功能,它允许您直接在工作区中打包扩展。此功能旨在满足您的特定工作区需求并提供更量身定制的开发体验。

要使用此功能,您需要在工作区内的 .vscode/extensions 文件夹中打包您的扩展。VS Code 然后会在扩展视图的工作区推荐部分显示此扩展,用户可从此处安装它。VS Code 仅为该工作区安装此扩展。它还要求用户在安装和运行此扩展之前信任该工作区。

例如,考虑 VS Code 存储库中的 vscode-selfhost-test-provider 扩展。此扩展插入测试功能,使贡献者能够直接在工作区内查看和运行测试。下图显示了扩展视图“工作区推荐”部分中的 vscode-selfhost-test-provider 扩展以及安装它的能力。

Local Workspace Extension

此功能可在 Insiders 版本中通过 extensions.experimental.supportWorkspaceExtensions 进行预览。请尝试一下,并通过在 VS Code 存储库中创建问题来告诉我们您的反馈。

提议的 API

终端 Shell 集成 API

现在提供了一个新的建议 API,允许访问 Shell 集成激活的终端提供的一些信息。通过此 API,可以监听在终端中执行的命令的传入数据和退出代码。它还引入了一种更可靠的执行命令方式,即在发送命令之前等待提示符可用,这有助于修复各种 Shell 设置中可能出现的某些冲突/竞争条件。

这是一个使用 Terminal.shellIntegration.executeCommand 建议的示例

// Execute a command in a terminal immediately after being created
const myTerm = window.createTerminal();
window.onDidActivateTerminalShellIntegration(async ({ terminal, shellIntegration }) => {
  if (terminal === myTerm) {
    const command = shellIntegration.executeCommand('echo "Hello world"');
    const code = await command.exitCode;
    console.log(`Command exited with code ${code}`);
  }
}));

// Fallback to sendText if there is no shell integration within 3 seconds of launching
setTimeout(() => {
  if (!myTerm.shellIntegration) {
    myTerm.sendText('echo "Hello world"');
    // Without shell integration, we can't know when the command has finished or what the
    // exit code was.
  }
}, 3000);

这是一个监听命令数据流的示例

// Create a terminal and log all data via console.log
const myTerm = window.createTerminal();
window.onDidStartTerminalShellExecution(execution => {
  if (execution.terminal === myTerm) {
    const stream = execution.createDataStream();
    for await (const data of stream) {
      console.log(data);
    }
  }
});

您可以在 此处查看新的 API。

认证 API 的“了解更多”属性

本次迭代中,我们添加了一个新的建议 API,允许您在 AuthenticationForceNewSessionOptions 中指定 learnMore 属性。其想法是,如果您在选项中调用 getSession 并带有 forceNewSession 属性,则可以包含一个 URI,该 URI 将呈现给用户以了解有关为何请求认证的更多信息。以下是其外观示例

Screenshot of a modal window that's asking to authenticate with GitHub and that contains a Learn more button

这是它在代码中的样子

vscode.authentication.getSession('github', ['repo'], {
  forceNewSession: {
    detail: l10n.t('To show you more relevant Copilot Chat results, we need permission to read the contents of your repository on GitHub.'),
    learnMore: Uri.parse('https://aka.ms/copilotRepoScope')
  };
});

您可以在 此处查看新的 API。

过时的评论

新的评论线程 applicability 属性允许在“评论”视图中将评论线程标记为过时

Outdated comment in the Comments view

您可以在 此处查看 API 建议。

评论视图菜单

commentsView/commentThread/context 建议菜单允许将操作添加到“评论”视图中评论线程的右键上下文菜单。通常的 inline 组也得到尊重,以便操作在“评论”视图中内联显示。

Example of an inline action in the Comments view

工程

Electron 28 更新

在本次迭代中,我们将 Electron 28 更新推广到稳定版用户。此更新附带 Chromium 120.0.6099.291 和 Node.js 18.18.2。我们要感谢所有在 Insiders 构建上进行自我托管并提供早期反馈的人。

值得注意的修复

  • 204886 在简单文件选择器中打开路径不同但名称相同的文件失败

感谢

最后但同样重要的是,向 VS Code 的贡献者们致以衷心的感谢

问题跟踪

对我们问题跟踪的贡献

拉取请求

vscode 的贡献

vscode-css-languageservice 的贡献

vscode-eslint 的贡献

vscode-extension-samples 的贡献

vscode-hexeditor 的贡献

vscode-js-debug 的贡献

vscode-json-languageservice 的贡献

vscode-pull-request-github 的贡献

vscode-pylint 的贡献

vscode-python-debugger 的贡献

debug-adapter-protocol 的贡献

inno-updater 的贡献

language-server-protocol 的贡献

monaco-editor 的贡献

node-pty 的贡献

© . This site is unofficial and not affiliated with Microsoft.