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

2024 年 3 月(版本 1.88)

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

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


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

如果您想在线阅读这些发行说明,请访问 更新code.visualstudio.com 上。内部人员:想要尽快尝试新功能?您可以下载夜间 内部人员 版本,并在这些更新可用后立即试用它们。

辅助功能

语音录制声音

我们为语音录制添加了新的辅助功能信号声音

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

改进的差异编辑器辅助功能

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

我们还将有关 差异编辑器:切换边(键盘用户有用的命令)的信息添加到 辅助功能帮助对话框 中。

辅助功能信号 现在可在差异编辑器的两侧使用。以前,它们只能在修改的一侧使用。

辅助视图聊天代码块命令

当您在辅助视图中检查聊天响应时,您现在可以使用在聊天视图中可用的代码块命令和键盘快捷键。

其中包括 聊天:在光标处插入聊天:插入到终端聊天:插入到新文件

笔记本单元格 aria 标签更新

笔记本单元格的 aria 标签现在会更新以指示单元格当前是否正在执行或等待执行。

工作区

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

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

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

打开编辑器的自定义标签

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

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

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

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

锁定滚动

您现在可以使用 视图:切换跨编辑器的锁定滚动 命令来同步所有可见编辑器的滚动。这意味着,当您在一个编辑器中滚动时,所有其他编辑器都会滚动相同的量,保持所有内容对齐。如果您需要并排比较文件,此功能很有用。

如果您希望对启用和禁用锁定滚动有更多控制,您可以选择仅在按住特定键盘快捷键时激活滚动同步。为 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 带来了原生覆盖率支持。如果您的测试系统支持,您可以使用新的“使用覆盖率运行”按钮获得覆盖率。

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

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

笔记本

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

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

  • 可以使用 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 语音

延迟激活

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

使用显示语言作为默认语音语言

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

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

GitHub Copilot

内联聊天改进

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

内联聊天作为内容小部件浮动在编辑器文本之上 主题:GitHub 浅色色盲(Beta)

我们已重新定位了重新运行和反馈控件,并使查看差异的切换控件在“接受”和“放弃”按钮旁边更加突出。

Copilot 内联聊天的屏幕截图,显示了重新定位的控件。 主题:GitHub 浅色色盲(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+downTabTab,在 macOS 上为 Cmd+downTabTab)。

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 拉取请求 扩展取得了更多进展,该扩展使您能够处理、创建和管理拉取请求和问题。新功能包括

  • 过时的评论在评论视图中与当前评论的显示方式不同。
  • auto 的新值为 githubPullRequests.createDefaultBaseBranch,它将上游的默认分支用作分叉存储库的基准分支。
  • 评论视图中的评论线程具有内联操作(解决/取消解决以及过时评论的“与 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

此功能可在 内部人员 版本中通过 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 属性。这个想法是,如果您使用选项中的 forceNewSession 属性调用 getSession,您可以包含一个将显示给用户以了解有关您为何请求身份验证的更多信息的 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。我们要感谢所有在内部人员版本上进行自托管并提供早期反馈的人。

值得注意的修复

  • 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的贡献