现已推出!阅读 10 月份的更新内容,包括新功能和修复。

2023 年 9 月(版本 1.83)

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

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


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

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

内部人员:希望尽早试用新功能?您可以下载夜间 内部人员 构建版本,并在新功能可用后立即尝试最新更新。

辅助功能

GitHub 拉取请求和问题评论改进

GitHub 拉取请求和问题 扩展程序允许您处理、创建和管理拉取请求和问题,在本迭代中对评论和审查体验进行了许多辅助功能改进。

当屏幕阅读器用户打开包含评论范围的编辑器时,会收到通知。新的辅助功能帮助对话框 (editor.action.accessibilityHelp) 提供有关评论线程和范围之间导航命令的见解。

此外,评论控件现在已可访问。在该上下文中,也提供了帮助对话框 (editor.action.accessibilityHelp) 以告知用户应期待什么以及如何使用此功能。还有一些新的命令:评论:转到下一个评论范围 (⌘K ⌥⌘↓(Windows、Linux Ctrl+K Ctrl+Alt+Down) 和 评论:转到上一个评论范围 (⌘K ⌥⌘↑(Windows、Linux Ctrl+K Ctrl+Alt+Up),用于在评论范围之间导航。

工作台

命令面板中的类似命令结果

查找所需的命令可能很困难。仅在 VS Code 中就有超过 2000 个命令... 而且使用您最喜欢的扩展,这个数字还会大幅增加。我们想要介绍一种方法来帮助您找到所需内容,同时仍然保持命令面板提供的速度。为此,我们在命令面板结果中添加了一个名为“类似命令”的新部分。以下是几个示例

查询不再需要“模糊”匹配才能显示在结果中。例如“切换自动保存”。

'turn on auto save' and 'Toggle Auto Save' showed up in a similar results section

如果有模糊结果,这些结果仍会显示在顶部,而类似命令则排在后面。

user searched for 'change language' and 'Configure Display Language' showed up in a similar results section

扩展贡献的命令也会被选中。

user searched for 'show git blame' and 'toggle file blame' showed up in a similar results section

我们认为,这将真正帮助那些难以记住确切命令名称的人... 说实话,我们几乎所有人都会在某个时候遇到这种情况。

这只是此新功能的初步尝试,仍然需要匹配命令名称中的确切词语。将来,您可以期待以下改进

  • 基于命令的不可见描述进行匹配的命令。
  • 更好地处理基本同义词(“切换”和“打开/关闭”,“显示”和“显示”等)。

请告诉我们您的想法!

配置文件图标

您现在可以将图标与配置文件关联。此图标将显示在活动栏中,以代替“管理”齿轮图标。如果您有多个配置文件,并且想要快速识别当前活动的配置文件,这将非常有用。

下图显示了创建新配置文件时的图标选择对话框。

Icon selection dialog

活动配置文件图标随后会显示在活动栏中。

Active profile icon in the Activity bar

编辑器选项卡高度密度

window.density.editorTabHeight 设置允许用户将选项卡高度缩减为更紧凑的尺寸。

默认编辑器选项卡高度

Editor tabs with default height

紧凑型编辑器选项卡高度

Editor tabs with compact height

固定编辑器选项卡在单独的行上

添加了一个新的设置 workbench.editor.pinnedTabsOnSeparateRow。启用此设置后,固定选项卡 将显示在其他选项卡上方的一行上。编辑器选项卡在拖放到选项卡行之间时会自动固定或取消固定。

Moving editor tabs between the two tab rows

设置编辑器搜索调整

设置编辑器现在会为给定搜索查询显示更少的搜索结果,以减少噪音。如果您安装了 GitHub Copilot Chat 扩展,除了通过关键字匹配找到的设置外,还将选择排名前五的 Copilot Chat 设置匹配项,而不是排名前十五的匹配项。

现在,搜索结果也按设置编辑器目录表排序,以便在顶部显示常用设置,并按其原始顺序显示已筛选的扩展设置。若要恢复按匹配类型和分数对搜索结果进行排序,请将 workbench.settings.settingsSearchTocBehavior 设置设置为 "hide",清除搜索查询,然后开始另一个搜索。

Searching "default formatter" in the Settings editor results in the editor.defaultFormatter setting appearing at the top.

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

改进的编辑器操作溢出行为

当编辑器操作的数量超过可用空间时,这些操作将溢出到 ... 更多操作 菜单中。此逻辑已得到改进,并且某些重要操作(如“关闭”或“拆分编辑器”)现在被例外。这意味着,即使可用空间有限,它们始终可见。

颜色主题选择器现在显示主题标识符

颜色主题选择器现在会显示颜色主题的本地化名称及其字符串标识符。这样做是为了帮助使用非英语语言包但只知道主题的英语名称的用户。

Color Theme Picker in Korean displaying English theme identifiers next to the localized name

评论

评论编辑器用于 GitHub 拉取请求和问题 等扩展,在这些扩展中,它显示拉取请求评论。

评论编辑器大小

评论编辑器现在会随着添加行而扩展,直到最大高度取决于包含评论的编辑器的大小。

Comment editor expanding as lines are added

在未解决的评论上打开评论视图

comments.openView 设置有一个新的可能值 firstFileUnresolved。将 firstFileUnresolved 设置为该值会导致评论视图在每次会话中打开包含未解决评论的文件时首次打开。

自动折叠已解决的评论

默认情况下,当您解决评论线程时,它现在会折叠。您可以使用 "comments.collapseOnResolve" 设置禁用此功能。

编辑器

保存和自动保存时的代码操作

您现在可以在编辑器中启用自动保存时的代码操作。当您保存或自动保存窗口更改 (onWindowChange) 或焦点更改 (onFocusChange) 时,这会触发代码操作。若要启用此功能或更新当前设置,请选中“编辑器:保存时的代码操作”(editor.codeActionsOnSave)并更改每个代码操作的设置以使其为 always

设置值也已更新,当前的布尔值将被弃用,转而使用字符串等效项。

选项包括

  • explicit:在显式保存时触发代码操作。与 true 相同。
  • always:在显式保存以及由于窗口或焦点更改而进行自动保存时触发代码操作。
  • never:在保存时从不触发代码操作。与 false 相同。

此版本中仍支持布尔值。

笔记本

在笔记本中转到符号

启用 notebook.gotoSymbols.showAllSymbols 后,转到符号 快速选择会填充笔记本中的所有代码符号。

单元格执行时的滚动

您现在可以使用 notebook.scrolling.revealNextCellOnExecute 设置配置运行 notebook.cell.executeAndSelectBelow 时显示下一个单元格的多少内容 (Shift+Enter )

  • fullCell - 整个下一个单元格(默认值)。
  • firstLine - 仅第一行。
  • none - 根本不滚动。

下面显示了 "notebook.scrolling.revealNextCellOnExecute": "firstLine"

支持空白修剪

笔记本现在尊重现有的三个与空白相关的设置

  • files.trimTrailingWhitespace - 保存文件时修剪尾随空白。
  • files.trimFinalNewlines - 修剪文件末尾最终换行符后面的所有换行符。
  • files.insertFinalNewline - 在文件末尾自动插入最终换行符。

这些设置在保存时应用,包括自动保存。

最终确定笔记本代码操作 API

笔记本现在完全支持贡献的代码操作,并拥有一个专用的代码操作类型来支持它们。如果扩展作者定义了一个带有前缀为notebook.source.kind的操作,则在保存时,笔记本编辑器会对整个笔记本运行该提供的操作,而不是对每个单元格单独运行。要编辑将在保存时运行的代码操作,您可以在设置编辑器中设置**笔记本:保存时的代码操作**或编辑settings.json文件中的"notebook.codeActionsOnSave"

代码操作的当前启用方式已更新,之前的布尔值已弃用,取而代之的是枚举等效项。选项包括

  • "explicit":在显式保存时触发代码操作。与true相同。
  • "never":保存时从不触发代码操作。与false相同。

第三个选项"always"即将推出,以完全匹配编辑器代码操作,允许用户在自动保存设置onFocusChangeonWindowChange时触发笔记本代码操作。

语言

Perl 6/Raku

Perl 6 语言已重命名为 Raku(语言标识符raku),并且 Raku 将自动选择为.raku文件的语言。

调试

JavaScript 调试器

WebAssembly 调试

JavaScript 调试器现在可以调试编译成 WebAssembly 的代码,只要它包含DWARF调试信息。例如,使用Emscripten编译的 C++ 代码可以调试

Debugger stopped on a breakpoint in C++ source code

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

要启用此功能,您需要安装WebAssembly DWARF 调试扩展,它连接到内置的 JavaScript 调试器。有关此内容的更多信息,请参阅调试 WebAssembly

WebAssembly 调试基于来自 Chromium 作者的C/C++ 调试扩展,并在他们的支持下得以实现。

改进的调用堆栈视图

**调用堆栈**视图中的方法和函数现在将包含函数(this)上下文的名称。例如,类 Foo 上方法 bar 的调用堆栈现在显示为 Foo.bar

远程开发

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

此版本添加了使用隧道连接到开发容器的功能,类似于通过 SSH 连接。您可以在远程开发发行说明中了解更多关于此新功能的信息。

对扩展的贡献

GitHub Copilot

对 /tests 的改进

我们改进了GitHub Copilot Chat扩展提供的聊天视图和内联聊天的/tests/test 斜杠命令现在更善于检测您使用的测试框架,并会以相同的风格生成新的测试。此外,它在建议新的测试文件名称方面应该会更好,例如,对于foo.py使用test_foo.py,对于bar.js使用bar.test.js

内联聊天变为多轮

内联聊天现在会保留当前会话的所有提示,这使您可以参考以前的消息并回复问题。

在下面的简短视频中,内联聊天会记住用户说过他们位于东京,并在提供用于计算当地时间和与苏黎世时间差的代码片段时。

询问 GitHub Copilot 默认使用聊天视图

几个月前,我们在命令面板中引入了**询问 GitHub Copilot**选项,这样您就可以将您的查询输入命令面板,并在命令面板没有提供有用的答案时将其打开到 Copilot 聊天中。

我们收集了有关**询问 GitHub Copilot**应打开的偏好体验的反馈:侧边栏中的聊天视图或快速聊天。为了使首次体验更加熟悉,我们选择了聊天视图。

也就是说,如果您希望**询问 GitHub Copilot**在快速聊天中打开,可以使用askChatLocation设置更改行为

"workbench.commandPalette.experimental.askChatLocation": "quickChat"

命令面板类似命令

在本迭代中,我们在命令面板中发布了类似命令功能。Copilot Chat 用户获得了更好的类似命令体验,因为我们可以使用 Copilot AI 来确定相似性。这些智能有助于处理同义词和意图,并且在我们的测试中,Copilot 能够处理跨语言的相似性。在命令面板中找到您要查找的确切命令从未如此简单!

Jupyter

为扩展作者最终确定 Jupyter 服务器提供程序 API

Jupyter扩展的 API 用于贡献 Jupyter 服务器已最终确定。扩展可以使用此 API 提供自定义 Jupyter 服务器的列表,以在内核选择器中显示。

可以在Jupyter 服务器提供程序示例中找到 API 使用的示例。JupyterHub 扩展也使用相同的 API。

npm 包@vscode/jupyter-extension包含所有 TypeScript 类型定义。

JupyterHub 扩展

现在有一个JupyterHub 扩展,支持登录JupyterHub,并对笔记本或 VS Code 中的交互式窗口中的内核执行代码。此扩展还可以在vscode.devgithub.dev的浏览器中运行。

如果您在使用此新扩展时遇到任何问题,或希望提供反馈,可以在JupyterHub 扩展 GitHub 存储库中提交问题。

Selecting an existing JupyterHub server in the Kernel Picker

Python

Python 调试器更新

Debugpy 扩展(几个月前宣布)已重命名为Python 调试器,以便在市场中更容易找到。

此扩展现在包含一个新的用户设置debugpy.debugJustMyCode,当禁用此设置时,它允许您逐步进入所有应用程序的系统或第三方库代码(默认情况下,调试器只逐步进入您自己的 Python 代码中定义的代码)。这是一个很受欢迎的功能请求,因为有些人希望更方便地将justMyCode禁用到所有项目中,而不是必须在所有项目的launch.json调试配置中手动配置它。

要试用它,请确保已安装Python 调试器扩展。然后打开设置编辑器 (⌘, (Windows, Linux Ctrl+,)),搜索“debugJustMyCode”,并禁用复选框

Searching "debugJustMyCode" in the Settings editor results in the debugpy.debugJustMyCode setting appearing at the top.

现在,当您创建一个launch.json文件时,扩展默认使用debugpy.debugJustMyCode的值,只要launch.json中没有指定justMyCode。请注意,当在launch.json中指定justMyCode时,它的值优先于debugpy.debugJustMyCode设置。

Pylint 扩展的按更改 lint 选项

默认情况下,Pylint扩展只在保存文件时报告错误和警告。现在有一个名为pylint.lintOnChange的新设置,如果将其设置为true,则指示扩展在您键入时报告错误和警告,无需保存文件。

Mypy 扩展报告范围和守护进程模式

Mypy 类型检查器扩展现在有两个新设置,允许您指定 Mypy 的报告范围以及是否使用 Mypy 的守护进程。

第一个是mypy-type-checker.reportingScope,它可以设置为file(默认值)以仅启用对工作区中打开文件的报告问题,或设置为workspace以启用对工作区中所有文件的报告。

第二个是mypy-type-checker.preferDaemon,当设置为true时,它使用Mypy 的守护进程dmypy)而不是 Mypy 本身(mypy)来执行类型检查,这在某些情况下可以更快。

关于调用参数内联提示设置的更新

以前,Pylance的设置用于启用对部分调用参数的内联提示(python.analysis.inlayHints.callArgumentNames),它只能设置为truefalse以启用或禁用对调用参数的类型提示。此设置已修改,以允许对显示在调用参数上的类型提示进行更精细的控制。

它现在可以设置为partial以禁用对仅位置仅关键字参数的提示,设置为all以启用它们,或设置为off以完全禁用它们。

弃用 Python 3.7 支持

正如我们2023 年 7 月发布博客中提到的,我们在Python扩展中取消了对 Python 3.7 的官方支持。我们没有计划主动删除对 Python 3.7 的支持,因此我们预计该扩展在可预见的将来将继续非官方地与 Python 3.7 一起使用。

请记住,所有其他版本的 Python 现在都采用年度发布节奏,因此,我们预计一旦 Python 版本在下一日历年的第一个扩展版本中达到 EOL,我们将停止对它的官方支持(例如,Python 3.8 预计在 2024 年 10 月达到 EOL,因此 2025 年的第一个扩展版本将停止官方支持)。

GitHub Pull 请求和问题

GitHub Pull 请求和问题扩展有了更多进展,该扩展允许您处理、创建和管理 Pull 请求和问题。

  • 改进了审查 PR 的可访问性。
  • 即使分支尚未发布,也会在创建视图中显示提交。

查看扩展程序的 更改日志 (0.74.0 版本) 以了解其他亮点。

预览功能

最近的快速修复键盘快捷键

现在有一个新设置,用于在您光标位于该行的任何位置时,从 ⌘. (Windows、Linux Ctrl+.) (命令 ID editor.action.quickFix) 激活最近的快速修复。

该命令会突出显示将使用快速修复重构或修复的源代码。正常的代码操作和非修复重构仍然可以在光标位置激活。要启用此功能,请选中 代码操作小部件:包括附近的快速修复 (editor.codeActionWidget.includeNearbyQuickfixes)。

Example of new Quick Fix behavior, showing activation on nearest errors, and showing how all Code Actions can still be utilized at the cursor location

源代码管理同步视图

此里程碑版本包含 源代码管理同步 视图的早期版本。新视图提供了有关未推送到远程分支(传出)的本地更改以及未从远程分支本地拉取的更改(传入)的详细信息。该视图还允许您发布分支并将更改(拉取/推送)与远程分支同步。新视图仍处于实验阶段,我们将根据用户反馈在接下来的里程碑中继续对其进行改进。您可以通过 scm.experimental.showSyncView 设置显示新视图。请试用并提供反馈,问题 #192290 中有更多信息。

Source Control Sync view showing a diff view of an incoming change

命令中心和调试工具栏

现在有一个新的实验性设置,用于在命令中心内显示调试工具栏。确保已启用命令中心并配置 debug.debugToolbarLocation 设置。

"debug.toolBarLocation": "commandCenter"

Debug controls inside the Command Center

主题:GitHub Light Colorblind (Beta)(在 vscode.dev 上预览)

扩展编写

支持用于字符串设置验证的 Unicode 字符类转义

现在在正则表达式中支持 Unicode 字符类转义 以验证字符串和字符串数组设置。换句话说,字符串和字符串数组设置现在可以指定一个 pattern 字段,其值例如为 "\\p{Letter}+",允许仅包含字母的字符串值。

目前,对象设置的字符串值不支持 Unicode 字符类转义。

为终端菜单做出贡献

现在有两个新的菜单可以贡献给 terminal/contextterminal/title/context,它们分别在终端上下文菜单和终端选项卡上下文菜单中添加条目。示例用法

{
  "contributes": {
    "menus": {
      "terminal/context": [
        { "command": "terminalTest.sendText" }
      ],
      "terminal/title/context": [
        { "command": "terminalTest.sendText" }
      ]
    }
    }
}

新的 env.onDidChangeShell 事件

现在有一个新的 env.onDidChangeShell: Event<string> 事件,当 env.shell 的值发生变化时触发。

keytar 已从 VS Code 中移除

早在 6 月份,我们就将 SecretStorage API 改为使用 Electron 的 safeStorage,并包括了 弃用和移除计划,将现在已存档且未维护的 keytar 模块从 VS Code 中移除。我们最初没有移除 keytar,因为一些扩展程序仍然直接导入/需要 keytar(这是在 SecretStorage API 存在之前推荐的做法,但在 SecretStorage API 发布后不再推荐)。

根据产品遥测数据和没有 keytar 的 Insiders 版本,keytar 的使用量已下降,我们已准备好完全从 VS Code 中移除 keytar

这对我的扩展程序意味着什么?

如果您使用 SecretStorage API,则 没有任何影响。自 6 月以来,我们一直在将密钥从 keytar 中迁移出去,因此如果您在两个月内使用过这些密钥,那么它们应该已经被迁移了。

如果您仍在扩展程序中直接使用 keytar,则可以考虑以下几种选择。

  • (推荐) 使用 VS Code 在 ExtensionContext 上提供的 SecretStorage API。此 API 是跨平台的,可以在 VS Code 支持的所有平台上使用。它也由 VS Code 团队维护,将继续维护,并且多年来一直是 VS Code API 的一部分。
  • (不推荐) 您可以在扩展程序中捆绑 keytar 模块。请记住,keytar 是一个本机节点模块,这意味着您需要为要支持的每个平台 发布一个平台特定扩展程序

--disable-keytar 已重命名为 --use-inmemory-secretstorage

--disable-keytar 标志在使用 SecretStorage API 时禁用在机器上持久保存密钥。这主要用于经常没有配置密钥环的 CI 环境,因为如果没有密钥环,VS Code 在没有可用密钥环的情况下使用 SecretStorage API 时会抛出错误。

由于我们已经移除了 keytar,因此该标志需要一个新的名称。我们现在已将 --disable-keytar 标记为已弃用,并建议使用 --use-inmemory-secretstorage。将来,我们将考虑移除 --disable-keytar,但在短期内不会移除。

最后,我们要感谢所有迅速行动、放弃 keytar 并确保用户在 VS Code 中拥有安全可靠的密钥体验的出色扩展程序作者!

语言服务器协议

语言服务器协议 npm 包的新版本已发布 ([email protected][email protected][email protected])。

发布的重点是

  • 添加了建议的内联完成请求。

  • 添加了建议的格式化范围请求。

  • 添加了对折叠范围的建议刷新请求。由于 API 需要公开事件发射器,因此这改变了折叠范围功能的形状,并且是一个重大更改。要获取提供程序,现在需要使用以下代码

    client.getFeature(lsclient.FoldingRangeRequest.method).getProvider(document)?.provider;
    
  • 各种 错误修复

工程

浮动编辑器窗口探索

我们已开始探索如何将编辑器从工作台窗口中拉出到自己的窗口中。此功能是我们投票数最多的 功能请求,我们计划在 10 月份为 Insiders 用户提供一个第一个可用的版本。

所有窗口中的所有编辑器都使用相同的底层编辑器模型,因此在一个窗口中进行的更改会实时反映在所有其他窗口中。您可以在浮动窗口中创建任何编辑器布局,并打开任何您喜欢的编辑器,并以任何数量的窗口打开。

对于我们的第一个可用版本,我们设想状态栏也会出现在浮动窗口中,以便显示编辑器信息(例如行号和选择范围)。请在接下来的几个月中继续关注我们开发的更多信息!

vscode.dev 现在支持跨域隔离

现在为 vscode.dev 启用了跨域隔离。这将支持新的强大功能,例如共享数组缓冲区,它们是跨文件 TypeScript 支持、Python 在 Web 中执行以及 vscode-wasm-wasi 的一般基础。

设置同步故障排除

我们添加了一个新的开发人员命令 开发人员:下载设置同步活动,该命令会下载您所有 设置同步 活动(包括云端和本地机器上的活动),包括日志。这将有助于我们对设置同步问题进行故障排除。我们还创建了一个新视图来浏览下载的活动。您可以通过运行命令 设置同步:显示同步数据 并启用 同步活动(开发人员) 视图来打开该视图。您可以通过选择视图中的 加载同步活动 按钮来加载下载的同步活动,如下所示。

Sync activity (developer) view with Load Sync Activity button

值得注意的修复

  • 190679 主题颜色图标 foreground 不一致,无法与 .svg 一起使用

感谢您

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

问题跟踪

对我们的问题跟踪做出贡献

拉取请求

vscode 做出贡献

vscode-css-languageservice 的贡献

vscode-html-languageservice 的贡献

vscode-languageserver-node 的贡献

vscode-pull-request-github 的贡献