现已发布!阅读有关一月份的新功能和修复。

2024 年 2 月 (版本 1.87)

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

更新 1.87.2:此更新解决了此安全 问题

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

欢迎使用 Visual Studio Code 2024 年 2 月版本。此版本有许多更新,希望您喜欢,其中一些主要亮点包括:

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

辅助功能

在编辑器中使用听写

如果您已安装 VS Code 语音扩展,现在可以使用您的声音直接在编辑器中听写。

我们添加了新的命令来启动和停止编辑器听写:Voice: Start Dictation in Editor(语音:在编辑器中开始听写)(⌥⌘V (Windows、Linux Ctrl+Alt+V))和 Voice: Stop Dictation in Editor(语音:停止编辑器听写)(Escape)。

您可以按住开始命令的键绑定(⌥⌘V (Windows、Linux Ctrl+Alt+V))以启用对讲机模式,在该模式下,一旦松开按键,语音识别就会停止。

注意:听写甚至可以在使用富文本编辑器的其他地方使用,例如 SCM 提交输入框和审阅拉取请求时的评论输入字段。

语音识别支持多种语言

当您使用 VS Code 语音扩展时,现在可以使用 accessibility.voice.speechLanguage 设置从 26 种支持的语言中选择一种。

语音扩展的每种语言都作为其自己的扩展。当您第一次启动语音识别时,您会看到为每种选定的语言安装扩展。

辅助功能信号

辅助功能信号包括声音(以前称为音频提示)和播报(以前称为警报)。

Help: List Signal Sounds(帮助:列出信号声音)和 Help: List Signal Announcements(帮助:列出信号播报)命令允许用户查看可用的信号并进行配置。此新配置会自动迁移。

之前

"audioCues.clear": "on | auto | off"
"accessibility.alert.clear": true | false

之后

"accessibility.signals.clear": {
    "sound": "auto | on | off",
    "announcement" (optional): "auto | off"
}

工作台

发行说明中的交互式设置

为了让您更轻松地开始使用新功能,现在可以直接从发行说明中启用或查看设置。当您从 VS Code 内部查看发行说明(Show Release Notes(显示发行说明)命令)时,请注意某些设置带有齿轮图标。选择设置或齿轮图标可立即与该设置进行交互。

Example of an interactive setting in release notes

语言模型访问的透明度和控制

本期,我们引入了一个提议的 API,使扩展程序能够使用 GitHub Copilot Chat 的语言模型。为了提供最透明和最佳的访问模型控制,我们添加了以下功能。

像管理身份验证访问一样管理语言模型访问

我们发现,管理对语言模型的访问与管理对 GitHub 帐户或 Microsoft 帐户的访问(或利用 AuthenticationProvider 模型的任何内容)在 VS Code 中非常相似。由于这些相似之处,我们还利用 VS Code 的身份验证堆栈来访问语言模型。

当扩展程序想要访问其他扩展程序的语言模型时,它们会看到一次性的访问提示,该提示将被保留:Modal dialog showing an extension requiring language model access

授予访问权限后,您将在管理帐户访问的同一位置管理该访问权限,即帐户菜单中

Manage trusted extensions options in the account menu

“管理受信任的扩展程序”将引导您进入一个快速选择菜单,您可以在其中选择管理访问权限(如果您愿意)。

Manage trusted extensions quick pick

在完成初步工作后,我们将继续完善体验,使其尽可能顺畅和清晰。

跟踪扩展程序的语言模型使用情况

您可以在扩展编辑器和运行时扩展编辑器中跟踪扩展程序的语言模型使用情况。以下图片显示了 Copilot Chat 示例扩展程序向 GitHub Copilot Chat 语言模型发出的请求数量。

Tracking language model usage in extension editor

Tracking language model usage in running extensions editor

编辑器

编辑器粘性滚动

本期,我们默认启用编辑器中的粘性滚动。您可以使用 editor.stickyScroll.enabled 设置进行更改。

我们还将编辑器粘性小组件中可显示的最大行数从 10 增加到了 20。您可以使用 editor.stickyScroll.maxLineCount 设置配置最大行数。

多光标内联建议

本期,我们添加了对多光标内联建议的支持。现在,内联建议会在主光标位置和次光标位置进行预览和应用。

多差异编辑器中的重构预览

通过重构预览,您可以查看将要应用于代码重构的更改。现在,重构预览的更改显示在多差异编辑器中,这有助于一目了然地查看所有更改,并将其与以前的版本进行比较。

终端

跟踪命令时长

现在会跟踪终端时长,并在启用 Shell 集成时,在命令悬停时显示详细信息。

Hovering the terminal command shows how long it took in milliseconds

用于缩放和重置的新命令

有用于放大、缩小和重置终端字体大小的新命令。它们默认不绑定,但您可以将其绑定到首选的键绑定。

  • Terminal: Increase Font Size(终端:增大字体大小)(workbench.action.terminal.fontZoomIn
  • Terminal: Decrease Font Size(终端:减小字体大小)(workbench.action.terminal.fontZoomOut
  • Terminal: Reset Font Size(终端:重置字体大小)(workbench.action.terminal.fontZoomReset

源代码管理

在窗口标题中包含存储库或分支名称

用户可以使用 window.title 设置自定义窗口标题。本期,我们在该设置中添加了两个新变量:${activeRepositoryName}${activeRepositoryBranchName}。这些变量分别替换为活动存储库的名称和活动分支的名称。

提交输入验证改进

本期,我们探索了使用语言诊断来为编写提交消息提供更好的输入验证。使用语言诊断使我们能够显示可用于解决输入验证警告的代码操作。我们添加了代码操作来删除空格字符,根据 git.inputValidationSubjectLengthgit.inputValidationLength 设置硬换行,并且我们希望将来添加更多代码操作。

要启用它,请切换 git.inputValidation:true 设置。在默认启用此功能之前,我们还有一些问题需要解决,但在此期间,请随时启用它并向我们提供您的反馈。

传入/传出更改设置管理

我们继续完善源代码管理视图的传入/传出部分。本期,我们在“传入/传出”分隔符中添加了一个设置操作,允许用户更轻松地切换 scm.showIncomingChangesscm.showOutgoingChangesscm.showChangesSummary 设置。这些操作也可在源代码管理视图标题栏 ... 菜单中的“传入和传出”菜单中找到。

Close All Unmodified Editors 命令

为了帮助管理编辑器,我们在命令面板中添加了 **Close All Unmodified Editors**(关闭所有未修改的编辑器)命令,该命令将关闭所有具有未修改文件的编辑器。该命令不会关闭有未保存更改的编辑器。

Notebook

笔记本的缩进设置

我们现在通过 notebook.editorOptionsCustomizations 设置支持特定于笔记本的缩进设置。此设置允许用户通过 editor.tabSizeeditor.indentSizeeditor.insertSpaces 设置为笔记本设置特定的缩进样式。

用户还将注意到一个名为 **Notebook Indentation**(笔记本缩进)的状态栏条目,该条目显示当前笔记本编辑器的缩进设置。此条目有一个快速选择菜单,无需打开设置编辑器即可管理缩进设置。这与编辑器中可用的快速选择菜单相同。

调试

支持新的 BreakpointMode

VS Code 支持调试适配器协议 (DAP) 的一项新功能,该功能允许您设置不同“模式”的断点。此功能通常可由本机代码调试器使用,例如,设置硬件断点与软件断点。可以通过断点的上下文菜单中的“编辑模式”操作来更改断点的模式。

Breakpoint context menu now has an 'Edit Mode...' option to change the breakpoint mode

远程开发

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

亮点包括:

  • GitHub Copilot Chat 在将开发容器配置文件添加到工作区时建议模板和功能

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

不要错过最新的使用 Visual Studio Code 进行远程开发学习路径,以了解 VS Code 中各种远程开发功能的介绍。

对扩展的贡献

GitHub Copilot

重命名建议

我们正在逐步推出 Copilot 的重命名建议。当您在编辑器中重命名符号时,GitHub Copilot 会根据您的代码建议该符号可能的新名称列表。

内联聊天辅助功能视图

内联聊天现在有一个辅助功能视图,该视图显示的代码更改就像可访问的差异查看器一样。当您使用屏幕阅读器模式时,将启用辅助功能视图。您还可以使用 inlineChat.accessibleDiffView 设置将其配置为始终打开或关闭。

此外,还可以使用 F7Shift+F7 键绑定通过键盘导航更改块。

内联聊天的默认模式

我们已停用 live preview 模式,并将 live 设置为内联聊天的默认模式。这意味着建议将直接应用在编辑器中,并且更改会通过内联差异进行突出显示。

麦克风图标始终可见

Copilot Chat 中用于启动语音识别的麦克风图标现在始终可见。当尚未安装 VS Code 语音扩展时,选择该图标将首先要求安装扩展程序以启用语音到文本功能。

Microphone icon in chat input

如果您对此功能不感兴趣,或者只想通过键盘快捷键使用它,则可以从上下文菜单中隐藏此功能。

Hide microphone icon in chat input

为代理和斜杠命令提供语音支持

当您使用 VS Code 语音扩展通过语音填充聊天输入字段时,“at workspace”或“slash fix”等短语现在会转换为相应的代理和斜杠命令。这在聊天视图和内联聊天中都适用。

对讲机模式无处不在

当您使用 VS Code 语音扩展时,**Voice: Start Voice Chat**(语音:开始语音聊天)命令(⌘I (Windows、Linux Ctrl+I))现在在任何地方都有效,并会根据您的焦点所在位置(编辑器中的内联聊天,否则为面板聊天)打开一个语音聊天。

要启用对讲机模式,请按住键绑定。语音识别在您松开按键之前一直处于活动状态,之后请求会自动提交。

Copilot: Explain This 基于光标位置

以前,在聊天中输入 Explain This 需要您首先在活动编辑器中选择要解释的文本。现在,您还可以将光标放在标识符上,让 Copilot 查看该标识符的定义。如果定义在另一个文件中,这需要有丰富的语言支持。

预览:#codebase 变量

本期,在 GitHub Copilot Chat 的预发行版中,我们引入了一个名为 #codebase 的新聊天变量。此变量可用于根据您的查询为 Copilot 或您正在对话的聊天参与者提供工作区上下文。

在此示例中,您可以将 #codebase 视为先询问 @workspace 问题,然后将该响应添加到您询问 @terminal 的问题中。

这是一个预览功能,因此 #codebase 可能不是此变量的最终名称,但其意图是我们将提供某种方式来向聊天参与者包含工作区上下文。

再次强调,这仅在 GitHub Copilot Chat 的预发行版中可用。请告诉我们您的想法以及如何使用它!

终端工作区上下文

终端不再自动拉取工作区上下文,这可能需要一些时间。取而代之的是,您需要使用 #codebase 变量显式包含它。

终端聊天位置

有一个新设置 github.copilot.chat.terminalChatLocation,它控制终端聊天体验。默认值为 chatView,您可以将其配置为 quickChat,如果您偏好之前的行为。

Jupyter

本地运行的 Jupyter 服务器的语言服务器支持

连接到本地 Jupyter 服务器时,Jupyter 扩展程序以前将这些 Jupyter 服务器视为远程服务器。因此,Pylance 扩展程序无法检测已安装的包。

Failed language features for remote Jupyter Servers

本期,Jupyter 扩展程序检测连接的 Jupyter 服务器是本地还是远程。这使 Pylance 扩展程序能够提供更丰富的语言功能,基于已安装的包(在本地 Python 环境中)。

Language features for remote Jupyter Servers

Python

Python REPL 的 Shell 集成

现在,通过 WSL 扩展,我们在 Mac、Linux 和 Windows 上启用了 Python REPL 的 Shell 集成。当您在 Python REPL 中执行命令时,彩色圆圈装饰器会指示命令是否成功或失败。此外,我们还支持 Python REPL 的 **Terminal: Run Recent Command…**(终端:运行最近命令…)命令,该命令允许您查看和使用 REPL 的命令历史记录。

我们现在还支持所有操作系统上的 Python Shell 文件历史记录,可以通过 **Terminal: Run Recent Command**(终端:运行最近命令)访问。

减少忽略第一个命令的风险

以前,许多 Python REPL 用户注意到他们的第一个 Python REPL 命令(例如,使用 Shift+Enter)存在问题。要么 Python 命令被忽略而未发送到 Python REPL,要么命令被多次粘贴到启动 Python REPL 的 Shell 中,而不是直接粘贴到 Python REPL 本身。此行为尤其发生在 Windows 用户或旧机器的用户身上。

本期,我们努力减轻并降低此行为发生的风险。用户现在在将 Python 命令发送到 VS Code 内的第一个 REPL 实例时,遇到第一个命令丢失的次数更少。

改进添加缺失导入

Pylance 扩展程序提供了一个 **Add Imports**(添加导入)代码操作来添加缺失的导入。在 Pylance 的预发行版中,我们改进了这个代码操作。Pylance 现在使用启发式方法仅显示三个最高置信度的导入选项,并根据以下标准进行排序:最近使用的导入、同一模块中的符号、标准库中的符号、用户模块中的符号、第三方包中的符号,最后按模块和符号名称排序。

此外,还引入了两个新的代码操作:“**Search for additional import matches**”(搜索其他导入匹配项),它会显示一个快速选择菜单,允许您搜索前缀匹配缺失导入符号的导入选项,以及“**Change spelling**”(更改拼写),它提供因拼写错误而导致的缺失导入的导入建议。

您现在可以使用 python.analysis.addImport.heuristics:true 设置启用此行为。我们计划很快将其设为新默认行为,并在将来的版本中弃用该设置。

调试 Django 或 Flask 应用程序时自动打开浏览器

使用 Python Debugger 扩展,开发和测试 Python Web 应用程序现在更加方便!现在,您可以通过在 launch.json 配置中设置 autoStartBrowser: true,在启动 Django 或 Flask 应用程序的调试器时自动打开浏览器。

{
  "name": "Python Debugger: Flask",
  "type": "debugpy",
  "request": "launch",
  "module": "flask",
  "env": {
    "FLASK_APP": "hello_app.webapp",
    "FLASK_DEBUG": "1"
  },
  "args": ["run"],
  "jinja": true,
  "autoStartBrowser": true
}

Symlinked 工作区的 Pytest 错误修复

我们实现了一个错误修复,使 pytest 测试能够正确处理具有符号链接的工作区。在测试重写时,来自符号链接位置的测试会通过其符号链接路径被正确引用和运行。

GitHub 拉取请求

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

  • 从“GitHub Pull Requests and Issues”重命名为“GitHub Pull Requests”
  • 合并或压缩提交时可以选择用于合并或压缩提交的电子邮件
  • githubPullRequests.labelCreated 设置可用于配置自动添加到创建的 PR 的标签
  • 现在支持“所有者级别”的 PR 模板
  • PR 和问题创建时可以添加项目

查看扩展程序 0.82.0 版本的变更日志,了解其他亮点。

预览功能

对于扩展作者:@vscode/l10n-dev 和 Azure AI Translator 预览

本期,我们引入了一个新命令,它是 @vscode/l10n-dev 的子命令,允许您使用 Azure AI Translator 翻译您的字符串。

导出字符串并创建 Azure AI Translator 实例后,您可以设置 AZURE_TRANSLATOR_KEYAZURE_TRANSLATOR_REGION 环境变量,然后运行以下命令使用 Azure AI Translator 生成翻译:

npx @vscode/l10n-dev generate-azure -o ./l10n/ ./l10n/bundle.l10n.json ./package.nls.json

Azure AI Translator 提供免费套餐。我们认为这是一个为扩展作者提供工具的好机会,让他们能够更轻松地支持讲各种语言的众多用户。请注意,这些是机器翻译,因此可能并不总是完美。如果您有能力,它们可以成为更完善的翻译(由母语人士完成)的一个很好的起点。

有关更多信息,请参阅关于 Azure AI Translator 集成的 l10n-dev 文档。

扩展开发

扩展中的测试覆盖率

使用扩展程序的测试 CLI 的扩展作者可以通过更新到最新版本的 @vscode/test-cli 包来生成测试覆盖率。

可以在命令行中通过在运行测试时传递 --coverage 标志来生成覆盖率,并在 VS Code UI 中使用 **Run with Coverage**(以覆盖率运行)操作来生成覆盖率。

launch.json 中的测试配置

您现在可以在 launch.json 配置中引用测试配置文件。

{
    "type": "extensionHost",
    "request": "launch",
    "name": "My extension tests",
+   "testConfiguration": "${workspaceFolder}/.vscode-test.js",
-   "args": ["--extensionDevelopmentPath=${workspaceFolder}"]
},

以前需要的各种 args 会为您生成,但任何附加参数都会附加到 VS Code 的命令行。

在问题报告器中贡献附加数据

在上一个迭代中,我们在 workbench.action.openIssueReporter 命令中添加了 datauri 字段。这使得扩展程序能够直接打开本地问题报告器,并提供更多预填充的信息。

为了让扩展程序受益于在独立的情况下通过 Help: Reporter Issues...(帮助:报告问题…)导航正常问题报告器流程,扩展程序可以贡献一个自定义命令(该命令将调用 openIssueReporter)和一个菜单贡献点到 issue/reporter

package.json 中贡献的命令和菜单的示例

"commands": [
    {
        "command": "extension.myCommand",
        "title": "Report Issue"
    }
],
    "menus": {
        "issue/reporter": [
            {
                "command": "extension.myCommand"
            }
        ]
    }

订阅问题 #196863 以获取 API 和 openIssueReporter 命令的更新或更改。

提议的 API

聊天和语言模型 API 接近最终确定

我们一直在致力于支持扩展程序为聊天视图做出贡献以及通用语言模型的使用。我们现在正处于最终确定以下 API 的最后阶段,并希望收到您的反馈。

在我们的扩展指南中了解更多关于如何构建聊天扩展以及如何使用语言模型

FindFiles2 API

我们添加了一个新的提议扩展 API,它是现有 workspace.FindFiles API 的改进版本。新的 workspace.FindFiles2 API 引入了新选项,允许工作区文件搜索:

  • 尊重 files.excludesearch.exclude 设置
  • 尊重忽略文件
  • 执行模糊搜索
  • 遵循符号链接

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

请注意,FindFiles2 是一个暂定名称,此功能将来可能会作为 FindFiles 的替代重载提供。

测试覆盖率 API

本期,测试覆盖率 API 和编辑器内体验已完成功能。我们鼓励扩展作者在 1.88 版本正式发布之前试用它们并提供反馈。

《Java 扩展包》已采用测试覆盖率 API。开发人员现在可以通过运行 Java 测试来查看覆盖率结果。现在,您可以通过选择 **Run Test With Coverage**(以覆盖率运行测试)按钮来获取测试覆盖率,并在测试资源管理器视图中查看 **Test Coverage**(测试覆盖率)面板。通过 Java 扩展包了解更多关于测试覆盖率的信息,请参阅该团队在十二月和一月的更新:12 月1 月

虽然 API 太长无法在此处包含,但我们认为它相当直接,并欢迎您在问题 #123713 中提供关于此提案的意见。

Debug Visualizer API

我们有一个新 API,它允许扩展程序为变量贡献可视化工具。这些可视化工具可能是运行命令的操作(例如,打开新编辑器),或者是嵌入在调试视图中的树,它们会取代数据的默认表示。

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

新的符号名称提供程序 API

此 API 允许扩展程序在用户想要重命名符号时提供名称建议。

值得注意的修复

  • 184046 链接有时在终端中完全停止工作

感谢

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

问题跟踪

对我们问题跟踪的贡献

拉取请求

vscode 的贡献

vscode-black-formatter 的贡献

vscode-hexeditor 的贡献

vscode-isort 的贡献

vscode-languageserver-node 的贡献

vscode-pull-request-github 的贡献

language-server-protocol 的贡献

node-pty 的贡献

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