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

2024年2月(版本1.87)

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

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

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

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

如果您想在线阅读这些发行说明,请访问 更新 页面 code.visualstudio.com内部用户: 想尽快尝试新功能吗?您可以下载 内部用户 每夜构建版本,并在最新更新可用时立即尝试。

无障碍

在编辑器中使用口令

如果您已经安装了VS Code Speech扩展,您现在可以直接用语音在编辑器中输入内容。

我们添加了新的命令来启动和停止编辑器中的语音输入:语音:在编辑器中开始语音输入 (⌥⌘V (Windows, Linux Ctrl+Alt+V)) 和 语音:在编辑器中停止语音输入 (Escape)。

您可以按住开始命令的快捷键 (⌥⌘V (Windows, Linux Ctrl+Alt+V)) 来启用对讲模式,松开键后语音识别即停止。

注意: 即使在使用富文本编辑器的其他地方,如 SCM 提交输入框和合并请求审核时的评论输入字段,语音输入功能也能正常工作。

支持多种语言的语音识别

当你使用 VS Code Speech 扩展时,现在你可以使用 从26种支持的语言中选择一种无障碍语音语言设置。

每种语言的语音扩展都作为一个单独的扩展提供。当您第一次开始语音识别时,您将看到为每种您选择的语言安装扩展。

无障碍信号

无障碍信号包括声音(以前称为音频提示)和公告(以前称为警报)。

命令 帮助:列出信号声音帮助:列出信号公告 允许用户查看可用信号并进行配置。此新配置的迁移会自动进行。

之前:

"音频提示清除": "开启 | 自动 | 关闭"
"无障碍警报清除":  | 

之后:

"accessibility.signals.clear": {
    "声音": "自动 | 开 | 关",
    "公告" (可选): "自动 | 关"
}

工作台

发行说明中的交互式设置

为了使您更容易开始使用新功能,您现在可以直接从发行说明中启用或查看设置。当您在 VS Code 内查看发行说明(显示发行说明 命令)时,注意一些设置有一个齿轮图标。选择该设置或齿轮图标即可立即与该设置进行交互。

发布说明中交互设置示例

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

在这一迭代中,我们引入了一个提议的 API,使扩展能够使用 GitHub Copilot Chat 的语言模型。为了提供最透明和对模型访问的控制,我们添加了以下功能。

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

我们发现,管理语言模型的访问权限与管理您的 GitHub 账户或 Microsoft 账户的访问权限非常相似(或任何利用这些)。认证提供者在 VS Code 中。由于这些相似之处,我们利用了 VS Code 的 auth 栈来访问语言模型。

当一个扩展想要访问另一个扩展的语言模型时,他们将看到一个一次性提示来获取访问权限,并且该访问权限将被持久化: 模式对话框显示一个需要语言模型访问的扩展

一旦获得访问权限,您将在同一位置管理该访问权限,即在账户菜单中管理账户访问权限的地方:

在账户菜单中管理受信任扩展选项

“管理受信任的扩展”将引导您快速选择,以便您可以根据需要管理访问:

管理受信任的扩展快速选择

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

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

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

在扩展编辑器中跟踪语言模型的使用情况

在运行扩展编辑器中跟踪语言模型的使用情况

编辑器

编辑器粘性滚动

在这一版本中,我们默认在编辑器中启用粘性滚动。你可以通过设置来更改这一点。编辑器.粘性滚动.启用输入:.

我们还把编辑器粘性部件中可以显示的最大行数从10增加到了20。你可以通过设置来配置最大行数。editor.stickyScroll.maxLineCount输入:.

多个光标的位置内联完成

在这一迭代中,我们增加了对多光标内联完成的支持。现在,内联完成在主光标和副光标位置都会预览和应用。

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

通过Refactor预览,您可以查看代码重构将要应用的更改。Refactor预览更改现在显示在多文件差异编辑器中,这使得可以一眼看到所有更改并与其之前的版本进行比较。

终端

命令持续时间已跟踪

终端持续时间现在会被跟踪,并且在启用 shell 集成时,命令悬停时会显示详细信息:

将终端命令悬停在上方显示了毫秒级的时间。

新的命令用于放大、缩小和重置

有新的命令用于放大、缩小和重置终端字体大小。这些默认情况下没有绑定,但您可以将它们绑定到您喜欢的键绑定上。

  • 终端:增加字体大小 (工作台.终端.字体放大)
  • 终端:减小字体大小 (工作台.终端.字体缩小)
  • 终端:重置字体大小 (工作台.终端.字体缩放重置)

源代码管理

在Windows标题中包含仓库或分支名称

用户可以使用以下内容来自定义Windows标题Windows标题设置。在这一迭代中,我们添加了两个可以与该设置一起使用的新的变量:${活动仓库名称},和${活动仓库分支名称}这些变量分别被活动仓库和活动分支的名称所替换。

提交输入验证改进

在这一迭代中,我们探索了使用语言诊断来为编写提交信息提供更好的输入验证。使用语言诊断使我们能够暴露出可以调用以解决输入验证警告的代码操作。我们添加了代码操作以删除空白字符,基于硬换行符对行进行硬换行。git.输入验证主题长度,和git.输入验证长度设置,并且我们希望在未来添加更多的代码操作。

要启用它,请切换git.输入验证设置。我们有一些问题需要解决,才能默认启用此功能,但在那之前,您可以启用它并告诉我们您的反馈。

入站/出站更改设置管理

我们继续优化入站/出站部分的源控制视图。在这一版本中,我们在“入站/出站”分隔符中添加了一个设置操作,允许用户切换scm显示传入更改scm显示更改,和scm.显示更改摘要 更轻松地设置。这些操作也可以在 收发 菜单中找到 请输入具体的网页文本内容,以便我进行翻译。源代码管理视图标题栏的菜单。

关闭所有未修改的编辑器命令

为了帮助管理编辑器,我们在命令面板中添加了关闭所有未修改的编辑器命令,该命令将关闭所有包含未修改文件的编辑器。该命令不会关闭有未保存更改的编辑器。

笔记本电脑

笔记本的缩进设置

我们现在通过 支持 notebook 特定的缩进设置。笔记本编辑器选项自定义设置。此设置允许用户通过设置特定的缩进样式来为笔记本指定特定的缩进样式,通过编辑器.标签大小编辑器缩进大小,和编辑器插入空格设置。

用户还会注意到一个名为Notebook Indentation的状态栏条目,该条目显示当前笔记本编辑器的缩进设置。此条目有一个快速选择菜单,可以在不打开设置编辑器的情况下管理缩进设置。这是在编辑器中也可以找到的相同快速选择菜单。

调试

支持新断点模式

VS Code 支持了调试适配器协议 (DAP) 的一项新功能,允许您设置不同类型的断点“模式”。这种功能通常会被本地代码的调试器使用,例如,设置硬件断点还是软件断点。断点的模式可以通过其上下文菜单中的编辑模式操作进行更改。

断点上下文菜单现在有一个“编辑模式...”选项来更改断点模式

远程开发

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

亮点包括:

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

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

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

对扩展的贡献

GitHub Copilot

重命名建议

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

内联聊天无障碍视图

内联聊天现在有一个无障碍视图,该视图与无障碍差异查看器一样显示代码更改。无障碍视图在您使用屏幕阅读器模式时启用。您还可以通过使用 来配置它始终处于启用或禁用状态。内联聊天.可访问差异视图设置。

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

内联聊天的默认模式

我们已经退休了实时预览模式并创建直播内联聊天的默认模式。这意味着建议直接应用在编辑器中,并通过内联差异突出显示更改。

麦克风图标始终可见

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

聊天输入中的麦克风图标

如果您对这个功能不感兴趣,或者您只希望通过键盘快捷键来使用它,您可以将该功能从上下文菜单中隐藏:

在聊天输入中隐藏麦克风图标

语音支持代理和斜线命令

当你使用VS Code Speech扩展通过语音填充聊天输入框时,诸如“at workspace”或“slash fix”等短语现在会翻译成相应的代理和斜线命令。这在聊天视图和内联聊天中都有效。

对讲机模式无处不在

当你使用 VS Code Speech 扩展时,命令 Voice: Start Voice Chat (⌘I (Windows, Linux Ctrl+I)) 现在在任何地方都能正常工作,并根据你的焦点位置弹出语音聊天(在编辑器中的内联聊天,否则为面板聊天)。

要启用对讲模式,请按住快捷键。语音识别将一直有效,直到您松开按键,之后请求将自动提交。

Copilot:解释这个基于光标位置

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

预览:#代码库变量

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

在这个例子中,你可以认为#代码库正在询问@工作区先提出问题,然后将回答添加到你所提出的问题中。@终端输入:.

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

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

终端工作区上下文

终端不再自动拉取工作区上下文,这可能需要一些时间。相反,你需要通过使用来明确包含它#代码库变量。

终端聊天位置

有一个新的设置github.copilot.chat.terminalChatLocation,控制终端聊天体验。默认值是聊天视图,且可以配置为快速聊天如果你更喜欢以前的行为。

朱庇特

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

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

远程Jupyter服务器的语言功能失败

这一迭代,Jupyter扩展检测连接的Jupyter服务器是本地还是远程。这使得Pylance扩展能够根据安装的包(在本地Python环境中)提供更丰富的语言功能。

远程 Jupyter 服务器的语言特性

Python

为Python REPL实现外壳集成

我们现在通过 WSL 扩展 在 Mac、Linux 和 Windows 上启用了 Python REPL 的 shell 集成。当你在 Python REPL 中执行命令时,彩色圆圈装饰符表示命令是否成功或失败。此外,我们还支持 终端:运行最近的命令… 命令,使你可以查看和利用 REPL 的命令历史记录。

我们现在也支持所有操作系统上的 Python 命令历史记录,可通过 终端:运行最近的命令 访问。

降低被忽视的首次命令风险

之前,一些Python REPL用户注意到他们向Python REPL发送的第一个命令存在问题(例如,使用Shift+Enter)。他们的Python命令要么被忽略,没有发送到Python REPL,要么命令在启动Python REPL的外壳中被多次粘贴,而不是在Python REPL本身中。这种行为尤其发生在使用Windows的用户或使用较旧机器的用户身上。

在这一版本中,我们努力减轻和减少这种行为的发生风险。用户现在在将Python命令发送到VS Code内部的第一个REPL实例时,其第一个命令丢失的情况减少了。

改进添加缺失的导入

Pylance扩展提供了一个添加导入代码操作,用于添加缺失的导入。在Pylance的预发布版本中,我们改进了这个代码操作。Pylance现在使用启发式方法,仅显示三个高置信度的导入选项,优先级基于以下标准:最近使用的导入项、同一模块的符号、标准库的符号、用户模块的符号、第三方包的符号,并最终按模块和符号名称排序。

此外,引入了两种新的代码操作: 搜索其他导入匹配,它显示一个快速选择菜单,允许您搜索与缺失的导入符号前缀匹配的导入选项,以及 更改拼写,它为由于拼写错误导致的缺失导入提供导入建议。

您现在可以启用此行为python分析添加导入启发式设置。我们计划尽快将此设置为新的默认行为,并在未来的版本中弃用该设置。

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

现在,使用Python调试器扩展可以更方便地开发和测试您的Python网络应用程序!通过设置自动启动浏览器:真在你的launch.json配置:

{
  "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
}

修复了符号链接工作区中的pytest错误。

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

GitHub 拉取请求

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

  • 从“GitHub 拉取请求和问题”重命名到“GitHub 拉取请求”
  • 与合并或压缩提交相关的电子邮件可以在合并/压缩时选择
  • 设定githubPullRequests.标签已创建可以用于配置自动添加到创建的PR上的标签
  • “Owner level” PR 模板现在已支持
  • 项目可以在 PR 和问题创建时添加

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

预览功能

对于扩展作者:预览@vscode/本地化开发和 Azure AI 翻译器

在这一版本中,我们引入了一个新命令,是 的一个子命令@vscode/本地化开发,这允许您使用Azure AI Translator来翻译您的字符串。

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

```plaintext
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/测试命令行包。

通过传递命令行参数可以在命令行上生成覆盖信息--覆盖 在运行测试时使用标志,并在 VS Code 用户界面中使用 带代码覆盖运行 动作。

在 launch.json 中测试配置

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

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

各种参数之前所需的参数会为你生成,但传递的任何额外参数将附加到 VS Code 的命令行。

在问题报告器中提交附加数据

最后迭代,我们添加了字段用于数据统一资源标识符工作台.操作.打开问题报告器命令。这使得扩展可以直接打开本地问题报告器,并填充更多信息。

为了使扩展在此情况下能够受益于通过导航正常问题报告流程帮助:记者问题...扩展可以贡献一个自定义命令(该命令将调用打开问题报告器) 和一个菜单贡献点到问题/报告者输入:.

一个贡献的命令和菜单示例贡献package.json输入::

"commands": [
    {
        "command": "extension.myCommand",
        "title": "报告问题"
    }
],
    "menus": {
        "issue/reporter": [
            {
                "command": "extension.myCommand"
            }
        ]
    }

订阅 第196863期 以获取有关API的更新或更改打开问题报告器命令。

提议的API

聊天和语言模型APIs即将完成

我们一直在致力于支持扩展以贡献聊天视图和语言模型的一般使用。我们现已在最终确定以下API的阶段,非常希望听到您的反馈:

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

FindFiles2 API

我们增加了一个新的提议扩展API,这是现有版本的改进版工作区.查找文件API。新的工作区.查找文件2API 引入了新的选项,允许工作区文件搜索执行以下操作:

  • 尊重files.exclude搜索.排除设置
  • 尊重忽略文件
  • 执行模糊搜索
  • 跟踪符号链接

您可以在此处查看新的API

请注意查找文件2是一个试探性的名称,并且此功能可能会作为的另一个重载实现。查找文件在未来。

测试覆盖 API

在这一迭代中,测试覆盖API和编辑器内体验已经具备了所有功能。我们鼓励扩展作者在VS Code 1.88版本发布前尝试并提供反馈。

Java扩展包已经采用了测试覆盖API。开发者已经可以看到运行Java测试的覆盖结果。现在,你可以通过选择运行带有覆盖的测试按钮来获取测试覆盖,并在测试探索者视图中查看测试覆盖面板。了解更多关于扩展包中Java测试覆盖的信息,请参阅团队的十二月一月更新。

虽然这个API太长无法在此处包含,但我们认为它相当简单,并且欢迎你对问题 #123713中的提案提出意见。

调试可视化器 API

我们有一个新的API,使扩展能够为变量贡献可视化工具。这些可视化工具可能是运行命令的动作,例如打开新的编辑器,或者是嵌入到调试视图中的树,取代数据的默认表示。

您可以在此处查看新的API

新的符号名称提供者 API

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

重要修复

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

谢谢

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

问题跟踪

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

拉取请求

贡献于Visual Studio Code输入::

贡献于vscode-黑色代码格式化器输入::

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

贡献于vscode-isort输入::

贡献于vscode语言服务器节点输入::

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

贡献于语言服务器协议输入::

贡献于节点-pty输入::