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

2023 年 11 月(版本 1.85)

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

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

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


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

如果您想在线阅读这些发行说明,请访问 更新 on code.visualstudio.com.

内部人员:想尽快尝试新功能?您可以下载夜间 内部人员 构建并尽快尝试最新更新。

GitHub Universe、Copilot 和 VS Code

如果您能够观看或参加今年的 GitHub Universe,您会发现 GitHub Copilot 是舞台的中心。Copilot 出现在 开幕主题演讲 和分会场,例如 GitHub Copilot:今天和明天的 AI 配对程序员

VS Code 团队一直在努力将 Copilot 集成到编辑器中,您可以在最新的 追求 VS Code 中的“极度智能” 博客文章中了解有关团队进展的更多信息。这篇文章详细介绍了 Copilot Chat 代理的开发,这些代理充当代码库和技术的主题专家,并描述了扩展作者如何能够为 VS Code 贡献他们自己的自定义代理。

辅助功能

无障碍视图

在上一个迭代中,我们引入了在按下键时自动关闭 无障碍视图 的功能,以便在 UI 组件与其无障碍视图之间实现无缝流动。在某些情况下,这种行为可能并不理想,现在可以通过 accessibility.accessibleView.closeOnKeyPress 设置禁用它。

如果您发现自己在终端及其无障碍视图之间切换,您可能需要启用 terminal.integrated.accessibleViewFocusOnCommandExecution,该设置会在终端中执行命令后自动打开无障碍视图。

在键盘焦点上显示工具提示

为了改善键盘用户的体验,现在在具有自定义悬停的项目(例如活动栏和状态栏项目)上显示键盘焦点上的工具提示。

Tooltip for Extensions view icon in the Activity Bar

语音检测超时

新的设置 accessibility.voice.speechTimeout 控制在静默状态下等待多长时间才能接受语音输入,例如对 Copilot Chat。默认情况下,在 1.2 秒的静默后会自动提交语音输入。您可以将其设置为 0 以完全禁用接受语音输入。

工作台

浮动编辑器窗口

我们很高兴地宣布,在此版本中,您可以将编辑器从主窗口移动到它们自己的轻量级窗口中。对一个窗口中的编辑器的更改会立即应用到所有其他打开该编辑器的窗口。

创建浮动编辑器窗口最简单的方法是将编辑器从当前窗口拖出并将其放到桌面上空的区域。

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

新的 workbench.editor.dragToOpenWindow 设置可以禁用此行为。

还有一些新的全局和上下文命令可以将编辑器和编辑器组移动或复制到它们自己的窗口中

  • 视图:将编辑器复制到新窗口workbench.action.editor.copyWithSyntaxHighlightingAction
  • 视图:将编辑器移动到新窗口workbench.action.editor.moveEditorToNextWindow
  • 视图:将编辑器组复制到新窗口workbench.action.editor.copyGroupToNextWindow
  • 视图:将编辑器组移动到新窗口workbench.action.editor.moveGroupToNextWindow
  • 视图:新建空编辑器窗口workbench.action.newWindow

浮动窗口中的编辑器区域可以使用您想要的任何 复杂布局 进行排列。由于终端和搜索结果都可以作为编辑器打开,因此您现在也可以将这些功能分别放在单独的窗口中!

Terminal and Search as editors in a floating window

尝试一下此新功能,并报告您遇到的任何问题。请务必 查看我们现有的问题 并对缺失的功能投出您的投票。

文件资源管理器中的原生粘贴支持

VS Code 现在支持将操作系统资源管理器中的文件原生粘贴到 VS Code 文件资源管理器中。

扩展自动更新控制

您现在可以选择要自动更新的扩展。如果您不想自动更新所有扩展,而只想选择要自动更新的扩展,这将非常有用。您可以从发布者那里选择一个扩展或所有扩展。如果您选择自动更新发布者的所有扩展,那么您随后可以取消选择该发布者的单个扩展。

Choose extensions to auto update

为了使用此功能,您应该禁用自动更新()或为选定的扩展启用自动更新(选定的扩展)。

Auto update mode options with Selected Extensions checked

新的个人资料图标

以下新的个人资料图标可用于添加到您的个人资料中。

New Profile icons

  • vr
  • 钢琴
  • 咖啡
  • 机器人
  • 游戏
  • 芯片
  • 音乐

设置编辑器搜索改进和错误修复

设置编辑器已恢复按匹配类型对搜索结果进行排序,而不是仅按目录进行排序。换句话说,标题和关键字匹配显示在顶部,因此您无需向下滚动即可找到标题匹配的设置。

Settings editor showing the windows.titleBarStyle setting appearing first when searching "title bar style"

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

设置编辑器仍然按目录对设置进行排序,以便进行决胜局,这意味着扩展作者的 order 键将在诸如 @ext:<extension-id> 之类的搜索查询中得到尊重。

此迭代中还修复了许多设置编辑器回归,包括由于网络问题而导致设置编辑器无法加载以及在某些搜索查询中挂起。

编辑器

保存和自动执行代码操作

您现在可以在编辑器中启用保存时的代码操作和自动执行代码操作,并且 编辑器:保存时的代码操作(editor.codeActionsOnSave)设置已迁移到相应的枚举值。当设置为 always 时,代码操作可以在您保存或自动保存时运行,并在窗口更改(onWindowChange)或焦点更改(onFocusChange)时运行。要启用此功能,请选中 编辑器:保存时的代码操作(editor.codeActionsOnSave),并将每个代码操作的设置更改为 always

设置值的更新如下,以前布尔值将被弃用,改为使用相应的字符串值。

选项如下

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

多文档突出显示

多文档高亮功能现在得到了一个新的提议的 MultiDocumentHighlightProvider API 的额外支持。现在,TypeScript 语言内置了对语义出现高亮的支持,可以通过将 **编辑器:出现高亮** (editor.occurrencesHighlight) 设置值从 singleFile 更改为 multiFile 来启用。对于除 TypeScript 之外的语言,多文档出现高亮基于文本出现而不是语义出现,直到实现更多特定于语言的提供程序。

源代码管理

传入/传出更改

在本里程碑中,我们在源代码管理视图中引入了一个新的 **传入/传出** 部分,以显示当前分支与远程分支相比的传入和传出更改。新部分显示了单个更改(以及更改的资源数量、插入和删除),以及一个 **所有更改** 条目,它汇总了所有更改中所有资源的摘要。可以使用 scm.showIncomingChangesscm.showOutgoingChanges 设置控制新部分的可见性。这两个设置都支持以下值:alwaysauto(默认)和 never

Incoming/Outgoing changes in the Source Control view

输入最大行数

以前,源代码管理输入会自动增长以显示最多 6 行文本,这对于大多数提交消息来说足够了。但是,在某些情况下,需要更多空间,现在有一个新的设置 scm.inputMaxLines,它控制源代码管理输入的最大行数。

终端

粘性滚动

粘性滚动已登陆终端!使用从 Shell 集成 中提供的知识,视窗顶部命令的提示会粘贴到终端的顶部,类似于 粘性滚动在编辑器中的工作方式

Running 'ls' command in the terminal will show the 'ls' prompt at the top of the terminal

单击粘性滚动元素将滚动到终端缓冲区的该部分。

目前默认情况下禁用此功能,但可以通过设置 "terminal.integrated.stickyScroll.enabled": true 来启用。我们计划在将来默认启用此功能,届时您将可以通过右键单击并将其关闭来选择退出。

命令高亮

将鼠标悬停在终端中的命令上现在会在其左侧显示一个高亮条。这对于纯终端提示很有用,在纯终端提示中,不清楚一个命令从哪里开始,另一个命令从哪里结束。

Hovering a command will show a line to the left that highlights the command and its output

Shell 集成和命令导航改进

随着粘性滚动的引入,对 Shell 集成进行了许多改进。特别是对于在 Windows 上运行的终端,从 Shell 集成接收的标记并不完全可靠。现在有一个逻辑可以智能地扫描终端内容并在使终端命令可用之前调整标记。

Shell 集成现在还可以检测提示的各个部分;提示及其输入。这将确定使用粘性滚动时显示命令的哪一部分。这还将从提示顶部修剪空行,通常用于将输出分隔开,并使终端更易于阅读。

现有的 命令导航 功能也有所改进,因为您可以导航到用于粘性滚动的更可靠的提示,而不是不太可靠的提示行。

之前

Before only a single line would be highlighted

之后

When navigating commands, the entire prompt is now highlighted

改进的下划线渲染

终端中的虚线和点线下划线现在以像素完美的模式渲染。

Dotted and dashed underlines are now pixel perfect

The underline improvements also work when zoomed in

Git pull 快速修复

如果 Git 分支结帐可以快速转发,则一个新的终端快速修复提供了运行 git pull 的选项。

任务

npm.packageManager 设置现在可以设置为 bun,以启用对 package.json 中定义的 Bun 脚本的检测和运行。

调试

JavaScript 调试器

可视化堆快照

V8 堆快照(保存为 .heapsnapshot)现在可以在 VS Code 中可视化。既有传统的表格视图,也有给定内存对象的保留者的图形表示。

Graphical view of a heap snapshot showing references to a specific memory object

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

堆快照可以使用 **获取性能概要** 命令在调试任何 JavaScript 代码时捕获。它们也可以通过浏览器 DevTools 中的 **内存** 选项卡捕获。

改进的事件监听器断点视图

在调试 Microsoft Edge 或 Google Chrome 浏览器时显示的 **事件监听器断点** 视图已得到改进。现在它是一个复选框列表,并支持根据 URL 在 XHR/fetch 请求上暂停。

Event Listener Breakpoints view with "XHR/fetch URL" checked and "Add new URL" option highlighted

使用 Rust 进行 WebAssembly 调试

VS Code 和 wasm-bindgen 都进行了更改,允许将 Rust 编译为 WebAssembly 在 VS Code 中调试。有关更多信息,请参阅有关 WebAssembly 调试 的文档。

测试

**测试结果** 视图终端现在支持 **查找** 控件。

语言

TypeScript 5.3

此版本包含 TypeScript 5.3。此主要更新增加了对导入属性、更好的类型缩减等的支持。它还包括新的语言工具功能和错误修复。

您可以在 TypeScript 博客 中阅读有关 TypeScript 5.3 的更多信息。

转到工作区中的符号 现在默认情况下会排除 node_modules 中的符号。这使得在不因安装包中的符号而不知所措的情况下,更容易在您的代码中查找符号。

您可以通过设置 "typescript.workspaceSymbols.excludeLibrarySymbols": false 来恢复包含项目中所有符号的先前行为。

转到内联提示的定义

JavaScript 和 TypeScript 内联提示 中的类型现在是交互式的。通过将鼠标悬停在类型上并在按住 Windows 和 Linux 上的 Ctrl 或 macOS 上的 Cmd 的同时单击,可以快速跳转到类型的定义。

Inlay hint hover showing Go to Definition by using Ctrl/Cmd + click

优先使用 'type' 进行自动导入

仅类型导入 允许您导入类型,同时确保导入在运行时完全被擦除。如果您希望始终默认使用 type 导入,您现在可以设置 "typescript.preferences.preferTypeOnlyAutoImports": true,自动导入将使用仅类型导入。此设置默认情况下处于关闭状态。

远程开发

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

重点包括

  • 在开发容器中自动安装 GitHub Copilot拉取请求和问题 扩展。
  • 更精细地控制在开发容器中安装哪些扩展。
  • 在本地开发容器和 WSL 会话中重用本地机器证书。

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

对扩展的贡献

GitHub Copilot

内联聊天 UI 改进

内联聊天提示历史记录现在会跨 VS Code 会话持久化。查看上一个和下一个提示的键盘快捷键也已更改为 UpDown,以与 VS Code 中其他上一个和下一个项目快捷键保持一致。

当内联聊天建议创建新文件(例如,使用 /test 斜杠命令时),您现在可以通过从 **创建** 下拉菜单中选择 **创建为** 来选择文件名和位置。

Create and Create As actions for newly suggested files from inline chat

最后,内联聊天有一个新的 **实验性** 轻量级 UI 模式。它提供了更流畅的流式传输体验,并且仅按需渲染差异。您可以通过 "inlineChat.mode": "live3" 设置启用它。

Inline chat lightweight mode with diff on demand

用于修复的内联聊天显示摘要和后续操作

当使用内联聊天进行修复 (/fix) 时,您现在还会获得一个简短的摘要,说明修复内容。如果还有错误,您可以通过单击提供的后续操作来细化修复。

Inline chat with summary

内联聊天中的渐进式消息渲染

内联聊天现在使用与聊天视图相同的渐进式渲染。

Inline chat progressive rendering

终端生成提交消息快速修复

上一个版本,将 Copilot 生成提交消息“闪耀” 添加到了源代码管理视图输入框中。对于终端用户,现在有一个快速修复,可以在运行 git add... 命令后在终端中生成可编辑的提交消息。

终端代理和命令建议改进

所有与终端相关的功能已移至 @terminal 代理。这样做是为了明确终端代理可能不会提取工作区信息,以整合功能,并使其更方便使用。

以下是旧提示到新提示的映射

@workspace /terminal 如何列出文件? @terminal 如何列出文件?
@workspace /explain #terminalSelection @terminal #terminalSelection
@workspace /explain #terminalLastCommand @terminal #terminalLastCommand

此外,命令建议在本版本中得到了显着改进。终端命令建议现在了解所使用的操作系统和 Shell。工作区信息也会根据 Copilot 是否认为问题与工作区相关而有条件地提取。工作区上下文收集应该会进一步改进,包括速度和确切的引用内容。

Progress is displayed while fetching workspace details

请注意,在这个示例中,@terminal 代理知道在 microsoft/vscode 存储库中使用文件路径时如何形成文件路径。

The terminal agent is capable of answering questions that need knowledge about file naming standards in the repository

还有方便的后续操作来解释建议的命令,这些后续操作以蓝色闪耀链接形式显示在聊天输入框上方。

The blue sparkle link just before the input box explains the suggestion

激活 **解释** 后续操作将详细解释建议的命令。

The detailed explanation typically explains the command and each argument

在私有存储库上使用 GitHub 远程搜索功能时,进行身份验证升级对话框

如果您的用户帐户已启用,当您使用 @workspace 代理时,Copilot 聊天将使用远程搜索功能搜索您的工作区。为了使用私有存储库的远程搜索,需要具有更多权限的身份验证令牌。如果没有具有所需权限的令牌,系统会提示您进行更多权限。

Authentication dialog when searching the workspace

您只会看到此对话框一次,将来对 @workspace 代理的查询将使用缓存的令牌。

更轻松地向 @workspace 发送请求

由于 @workspace 代理用于许多 Copilot 查询,因此我们希望确保尽可能轻松地激活它。您现在可以在聊天输入框中输入一个问题,然后按 ⌘Enter (Windows、Linux Ctrl+Enter) 来发送问题并自动添加前缀 @workspace

使用 Copilot 解释 Rust 代码

当您要求 Copilot 解释 Rust 代码并已安装 Rust 语言服务扩展(如 rust-analyzer)时,Copilot 聊天现在将从您的代码库中收集跨文件上下文。要查看 Copilot 说明,请在活动编辑器中选择一些代码,然后使用上下文菜单中的 **Copilot > 解释此内容** 或内联聊天或聊天视图中的 /explain

Copilot > Explain This action in the editor context menu

代码块中的潜在漏洞检测

我们希望确保您了解 Copilot 生成的源代码中可能存在的问题。因此,我们现在通过代码漏洞检测模型运行 Chat 视图代码块中的代码,并标记任何检测到的问题。您可能一开始不会看到此功能,但我们将逐步将其推广到 Copilot Chat 用户,并调整检测到的漏洞类型。

当确定代码块包含可能的漏洞时,将在代码块底部进行标注。漏洞检测模型是我们正在试点的,因此请务必在审查 Copilot 的建议和任何潜在漏洞时做出最佳判断。

Copilot code vulnerability warning displayed in the Chat view

Copilot 视频和直播会议

不要错过最近的 VS Code Copilot YouTube 视频。了解 最新的 Copilot Chat 功能Copilot "变得更加智能" 的方式。

如果您还没有收看 VS Code 直播,那么您需要观看 1.84 版本发布派对 中展示的 Copilot 演示。

Python

使用 Pylance 显示类型层次结构

使用 Pylance 时,您现在可以更方便地探索和浏览 Python 项目中的类型关系。这在处理具有复杂类型关系的大型代码库时很有帮助。

右键单击符号时,可以选择 **显示类型层次结构** 以打开类型层次结构视图。从那里您可以浏览符号的子类型以及超类型。

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

运行按钮菜单下的可配置调试选项

Python 调试器 扩展现在在 **运行** 按钮菜单下有一个可配置的调试选项。当您选择 **Python 调试器:使用 launch.json 调试** 并且您的工作区中存在 launch.json 时,它会显示所有可用的调试配置,您可以选择它们来启动调试器。如果没有配置,系统将提示您选择一个调试配置模板以用于为您的 Python 应用程序创建 launch.json 文件。

Python Debugger: Debug using launch.json option under the Run button menu

使用环境变量激活时支持停用命令

Python 扩展有一个新的激活机制,可以在您的默认终端中激活选定的环境,而无需运行任何显式的激活命令。此功能目前处于实验性标志之后,可以通过以下 **用户** 设置启用:"python.experiments.optInto": ["pythonTerminalEnvVarActivation"]

但是,此激活机制的一个初始缺点是它不支持 deactivate 命令。我们收到了反馈,指出这是某些用户工作流程的重要组成部分,因此我们在选定的默认终端为 PowerShell 或命令提示符时添加了对 deactivate 的支持。我们计划将来为更多终端添加支持。

REPL 智能发送的警告消息和设置

当尝试在包含无效或已弃用代码的 Python 文件中使用 智能发送(通过 Shift+Enter)时,现在会显示一条警告消息,并且可以选择停用 REPL 智能发送。用户可以通过 **Python.REPL:启用 REPL 智能发送** (python.REPL.enableREPLSmartSend) 设置更改其特定于用户和工作区的 REPL 智能发送行为。

Settings editor entry for Python REPL Smart Send

测试架构重写

Python 测试适配器重写实验 已推广到 100% 的用户。目前,您可以通过在您的 settings.json 中添加 "python.experiments.optOutFrom" : "pythonTestAdapter" 来选择退出,但我们很快就会删除此实验性标志并采用这种新架构。

GitHub 拉取请求和问题

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

  • 现在在 PR 说明和 **创建** 视图中支持合并队列。
  • 新的设置 "githubPullRequests.allowFetch": false 可以防止运行 fetch
  • 改进了子模块支持。

查看 扩展 0.78.0 版的变更日志,了解其他亮点。

预览功能

树中的粘性滚动

基于编辑器中粘性滚动的成功,我们将此功能扩展到所有树视图,使用户能够更轻松地导航项目树。可以通过设置 workbench.tree.enableStickyScroll: true 来启用树的粘性滚动。为了确保粘性滚动不会占用太多空间,它只能占用视图高度的 40%。此外,用户可以通过配置 workbench.tree.stickyScrollMaxItemCount 来自定义粘性元素的最大数量,默认情况下设置为 7。

为了获得更佳的树导航体验,可以选择一个粘性元素直接跳到树中的该元素,或者按父元素的箭头以隐藏其所有子元素。此外,启用粘性滚动后,访问复选框和操作项会更容易。

多文件差异编辑器

此版本附带 **多差异编辑器** 的预览版。多差异编辑器使您能够在一个可滚动视图中查看多个文件中的更改。

要启用多差异编辑器,请设置 "multiDiffEditor.experimental.enabled": true。目前,多差异编辑器可用于查看本地更改、暂存更改、传入/传出更改以及拉取请求中的更改。请注意,多差异编辑器尚未完全开发,可能无法在所有情况下使用。

韩语的备用字符过滤

对于整个工作区中使用过滤功能的各种功能,VS Code 现在还会搜索 QWERTY 键盘等效项,因为经常会不小心忘记切换语言输入法编辑器 (IME)。这与搜索引擎类似,但它是实时的。例如,在韩语 IME 中键入 debugㅇ듀ㅕㅎ,这是没有意义的。

Searching for a "ㅇ듀ㅕㅎ" command will now present results for "debug"

目前,从单词中间进行过滤时,此功能不起作用。

隐藏问题装饰

有一个新的设置可以在编辑器中以及整个工作区(排除“问题”视图)隐藏问题装饰。**问题:可见性** (problems.visibility) 设置默认情况下已启用,以显示所有问题。

**问题:可见性** 关闭时,某些问题 UI 设置将被禁用。

  • **大纲 > 问题:徽章** (outline.problems.badges)
  • **大纲 > 问题:颜色** (outline.problems.colors)
  • **大纲 > 问题:已启用** (outline.problems.enabled)
  • **问题 > 装饰:已启用** (problems.decorations.enabled)

当 **问题:可见性** 关闭时,状态栏中会显示一条警告消息。

Problems: Visibility off Status Bar item and hover

建议的 API

每个里程碑都会带来新的 API 建议,扩展作者可以试用它们。与往常一样,我们希望得到您的反馈。以下是如何试用 API 建议的步骤。

  1. 找到您想要尝试的建议 并将其名称添加到 package.json#enabledApiProposals 中。
  2. 使用最新的 @vscode/dts 并运行 npx @vscode/dts dev。它会将相应的 d.ts 文件下载到您的工作区。
  3. 现在您可以针对该建议进行编程。

您无法发布使用 API 建议的扩展。在下一次发布中可能会发生重大更改,我们不希望破坏现有扩展。

测试覆盖率

在此迭代中,我们恢复了测试覆盖率的工作,包括初始 UI 集成以及对长期 API 建议的一些小幅更新。虽然 API 太长,无法在此处包含,但我们认为它非常直观,并欢迎您在 问题 #123713 中提供对该建议的反馈。

聊天代理

正如我们最近的博客文章中所述,VS Code 中追求“极度智能”,我们正在开发一个模型,用于扩展到 Copilot Chat 视图中提供聊天代理。聊天代理 API 已经提出,但您可以尝试现在添加自己的聊天代理。订阅 问题 #199908 以获取更新。

多文档突出显示 API

如前一个版本中介绍的那样,VS Code 中现在支持多文档突出显示。在此迭代中,我们添加了一个 建议的多文档突出显示提供程序 API 来注册多文档突出显示提供程序。这增加了为特定编程语言提供语义发生突出显示的能力。提供程序返回一个新的 MultiDocumentHighlight 结构,其中包含一个 URIDocumentHighlight 的映射。反馈和进一步更新可以跟踪 问题 #196354

工程

新的 CDN

我们正在推广到一个新的 CDN 终结点:vscode.download.prss.microsoft.com。对于系统管理员,请确保配置网络规则以允许来自此终结点的流量。

macOS 10.13 和 10.14 支持已结束

VS Code 1.85 是最后一个支持 macOS 10.13 (macOS High Sierra) 和 10.14 (macOS Mojave) 的版本。有关更多信息,请参阅我们的 常见问题解答

值得注意的修复

  • 195796 在设置编辑器中不支持本地化后的文本搜索
  • 197319 vscode://file// 链接不再有效
  • 194094 鼠标移出选择器时不要关闭配置文件图标选择器
  • 197070 支持在自定义标题栏上定位调试工具栏

感谢

最后但并非最不重要的是,对 VS Code 的贡献者表示衷心的感谢!

问题跟踪

对我们问题跟踪的贡献

拉取请求

vscode 的贡献

vscode-css-languageservice 的贡献

vscode-pull-request-github 的贡献