2023 年 7 月 (1.81 版本)
更新 1.81.1:此更新解决了这些问题。
下载:Windows:x64 Arm64 | Mac:通用 Intel Apple 芯片 | Linux:deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 2023 年 7 月版。此版本中有许多更新,希望您会喜欢,其中一些主要亮点包括
- 辅助功能改进 - 对通知、聊天响应和悬停的辅助视图支持。
- VS Code 配置文件 - 通过部分配置文件和“应用于所有配置文件”选项实现更精细的控制。
- 新差异编辑器功能 - 折叠未更改区域,更好的差异区域文本对齐。
- 支持带有符号链接的 Git 仓库 - 支持带有符号链接的仓库路径。
- 笔记本更新 - 搜索已关闭笔记本中的文本,“粘性滚动”显示 Markdown 标题。
- Python 测试发现 - 容错 pytest 发现继续跨所有文件。
- 访问 GitHub Codespaces 中的 Jupyter 服务器 - 连接到 codespace 中的远程 Jupyter 服务器。
- GitHub 拉取请求创建 - 更好的基础分支检测,记住以前创建的 PR 选项。
- 预览:GitHub Copilot 用户体验 - 快速聊天改进,迭代 /fix 命令。
如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新页面。
内测版:想尽快尝试新功能?您可以下载每晚的内测版构建,并尽快尝试最新的更新。
辅助功能
辅助视图改进
打开辅助视图 (⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2)) 命令允许屏幕阅读器用户逐字符、逐行检查内容。上一个迭代中,我们为编辑器悬停和聊天面板响应添加了辅助视图。
现在,通知、内联聊天响应、Jupyter 笔记本输出和工作台悬停也提供了辅助视图。
当一个提供辅助视图的元素获得焦点时,ARIA 标签中会提供一个提示。该提示可以通过 accessibility.verbosity 设置针对每个功能禁用。
有在辅助视图中显示下一个 (⌥] (Windows, Linux Alt+])) 和在辅助视图中显示上一个 (⌥[ (Windows, Linux Alt+[)) 命令,以便在聊天面板和通知列表中的元素之间轻松导航。
面包屑符号信息
在使用聚焦并选择面包屑 (breadcrumbs.focusAndSelect) 命令后,面包屑导航现在包含屏幕阅读器的符号信息。
输入控件和结果导航一致性
现在,在使用 (⌘↓ (Windows, Linux Ctrl+Down)) 和 (⌘↑ (Windows, Linux Ctrl+Up)) 导航扩展视图、键盘快捷方式编辑器以及注释、问题和调试控制台面板中的输入控件(例如,搜索或筛选输入)及其结果时,体验现在一致。
可访问的差异查看器
在差异编辑器中,差异审查窗格已重命名为可访问的差异查看器。可访问的差异查看器解决了差异编辑器的辅助功能不足,可以通过 F7 或差异编辑器更多操作菜单中的打开可访问的差异查看器命令打开。除了重命名,我们还修复了一些错误并添加了一些新功能,例如能够启动辅助功能帮助对话框或从查看器跳转到修改后的编辑器。
配置文件
支持部分配置文件
您现在可以创建一个配置文件,在该配置文件中仅自定义一部分配置(设置、键盘快捷方式、代码片段、任务和扩展)。例如,您可以创建一个包含除键盘快捷方式之外所有配置的配置文件,当此配置文件处于活动状态时,VS Code 会应用默认配置文件中的键盘快捷方式。
在下面的创建新配置文件截图中,键盘快捷方式未选中,并显示使用默认配置文件消息。在该 VS Code 会话期间活动的任何键盘快捷方式都不会应用于新配置文件。

您还可以通过使用复制自下拉菜单从配置文件模板或现有配置文件复制时创建部分配置文件。

您还可以通过在编辑配置文件用户界面中编辑配置文件来配置现有配置文件以使用默认配置文件中的配置。

导出部分配置文件时,您可以选择仅导出配置文件中自定义的配置,或者也包括默认配置文件中的配置。

将设置应用于所有配置文件
您现在可以通过在“设置”编辑器中选择“将设置应用于所有配置文件”选项来将设置应用于所有配置文件。

这将把设置的值应用于所有配置文件。任何配置文件对此设置的更新都将应用于所有配置文件。您可以通过取消选中“将设置应用于所有配置文件”选项来恢复此同步。
将扩展应用于所有配置文件
您现在可以通过在“扩展”视图中选择“将扩展应用于所有配置文件”选项,将扩展包括到所有配置文件中。

这将使此扩展在所有配置文件中可用。您可以通过取消选中“将扩展应用于所有配置文件”选项来恢复此操作。
非默认配置文件上的设置 JSON 文件命令 ID 已调整
当用户使用非默认配置文件时,首选项:打开用户设置 (JSON) (workbench.action.openSettingsJson) 命令现在将打开特定于配置文件的设置 JSON 文件。要显示应用程序范围的设置,请使用首选项:打开应用程序设置 (JSON) (workbench.action.openApplicationSettingsJson) 命令。
工作台
即将到来的更新的发行说明
每当每月稳定更新准备好安装时,您现在可以通过“活动栏”底部“管理”菜单(齿轮按钮)中的“显示更新发行说明”命令预览发行说明。
编辑器
将 Markdown 粘贴 URL 作为格式化链接
markdown.editor.pasteUrlAsFormattedLink 设置现在有一个新选项 smart。smart 粘贴功能可以检测您何时粘贴到可能不希望自动 Markdown 链接格式化的文本中。smart 粘贴忽略的一些情况包括粘贴在 Markdown 链接内、覆盖另一个 Markdown 链接以及在代码块内粘贴。
默认情况下,pasteUrlAsFormattedLink 功能目前处于关闭状态 (never),但您可以将设置更改为 smart 或 always (始终创建格式化的 URL 链接)。
异步标记化推出
在1.76 更新中,我们在 web worker 上实现了编辑器文档异步标记化,以提高渲染器进程的性能。自那时以来,我们修复了由罕见的竞态条件引起的一些错误,并在本次发布中,我们开始向稳定版用户推出此功能。
如果您不想等待,可以将 editor.experimental.asyncTokenization 设置为 true,以立即获取异步标记化。
差异编辑器
在本次迭代中,我们继续开发新的差异编辑器,并计划逐步将其推广到稳定版用户。您可以通过设置 "diffEditor.experimental.useVersion2": true 立即试用。新的差异编辑器包括下面描述的几个新功能和错误修复。
折叠未更改区域
使用 diffEditor.experimental.collapseUnchangedRegions 可以在新的差异编辑器中隐藏未更改区域。此功能在审查包含大量未更改行的大型差异时非常有用。
可以拖动或单击隐藏行块的边框,以显示底部或顶部的文本。

差异区域对齐
新的差异编辑器现在会在差异区域内对齐文本,从而更轻松地审查缩进已更改且已插入行的差异。
之前(未启用差异区域对齐和空格差异)

之后(启用差异区域对齐)

新的差异算法现已默认启用
我们已经完成了新差异算法的推广,它现在是 VS Code 中的默认算法。您可以在过去的发行说明中阅读有关一些算法改进的信息。
差异降噪
在此更新中,我们为新的差异算法添加了启发式方法,以降低匹配不相关单词的概率。
这是差异编辑器以前的样子(请注意 this 在两侧都匹配,即使匹配没有帮助)

这是现在启发式改进后的样子(请注意,不相关的匹配更少)

切换侧
当使用新差异编辑器的并排视图时,现在有一个新命令差异编辑器:切换侧,允许您从一侧跳转到另一侧。切换侧时,活动编辑器中的光标位置和当前选择会映射到另一侧。
还有更多
查看1.80 发行说明,以获取新差异编辑器更改的更详细描述!
终端
内联终端选项卡中的自定义悬停
当只有一个终端时显示的面板内联终端选项卡现在使用自定义悬停,以实现更一致的外观并支持嵌入链接。

源代码管理
支持带有符号链接的 Git 仓库
根据社区反馈,现在支持路径中包含符号链接的 Git 仓库,方法是使用版本 2.31 中添加到 rev-parse Git 命令的 --path-format 选项。从本次发布开始,当打开此类仓库时,所有源代码控制功能(例如,源代码控制视图、仓库检测、已添加/已修改/已删除行编辑器装饰等)都应该按预期工作。
调试
JavaScript 调试器
支持 Fast Node (Version) Manager
JavaScript 调试器现在在其运行时版本中支持Fast Node Manager (fnm)。fnm 用户现在可以设置 launch.json 的 runtimeVersion 属性来选择 Node.js 版本。
Notebook
已关闭笔记本的富内容搜索
在之前的版本中,我们为打开的笔记本引入了富内容工作区搜索。现在,还支持预览已关闭笔记本的富内容结果。
当您在“搜索”视图中搜索文本时,来自笔记本的结果预览应与您打开笔记本编辑器时字符串的外观匹配。请注意,这仅在笔记本关闭时显示输入的结果。要试用此功能,请在设置中启用 search.experimental.closedNotebookRichContentResults。
大型流式输出的性能改进
我们对执行期间流式传输的大型单元格输出进行了性能改进。这减少了渲染活动量,但目前仅适用于可滚动单元格输出。
笔记本粘性滚动
此版本带来了笔记本编辑器的第一个“粘性滚动”迭代。笔记本编辑器顶部的粘性滚动显示当前可见的单元格或单元格输出的 Markdown 标题。选择粘性滚动“行”会聚焦该单元格,让您可以快速导航笔记本。此功能通过 notebook.stickyScroll.enabled 设置或视图:切换笔记本粘性滚动命令启用。
Web 版 VS Code
始终加载最新版本的内置扩展
vscode.dev 现在始终加载最新版本的内置扩展。这意味着当您打开 vscode.dev 时,您将不再看到“需要重新加载”通知以将内置扩展更新到最新版本。
远程开发
远程开发扩展允许您通过 SSH 或远程隧道使用开发容器、远程机器或适用于 Linux 的 Windows 子系统 (WSL) 作为功能齐全的开发环境。
亮点包括:
- 从 VS Code 将远程隧道作为服务安装。
- 简化 @devcontainers/cli 安装。
- 将 Dev Container 功能依赖项记录在 lockfile 中。
您可以在远程开发发行说明中了解新的扩展功能和错误修复。
对扩展的贡献
GitHub Copilot
快速聊天用户体验改进
快速聊天体验在此次迭代中得到了改进。
像以前一样,您可以使用 ⇧⌥⌘L (Windows, Linux Ctrl+Shift+Alt+L) 切换此视图。具体改进包括
- 对话式聊天:快速聊天体验现在显示您的完整对话,同时仍然将最后一个问题和答案保持在焦点位置。
- 斜杠命令完成:当您键入
/时,现在会显示斜杠命令的完成。
此外,还有一个实验性设置 chat.experimental.defaultMode,用于控制显示哪些聊天部分。它有三个选项
chatView- 在活动栏中显示聊天图标,以在聊天视图中启动聊天(默认)。quickQuestion- 在标题栏中显示聊天图标,以启动快速聊天。both- 两个聊天图标都可见,允许您打开任一聊天用户界面。
我们希望了解您对此设置以及快速聊天体验的总体看法,因此请随时通过问题提供反馈。
斜杠命令改进
我们对面板、内联和快速聊天中的斜杠命令进行了以下可用性改进
- 斜杠命令现在以块的形式呈现,并且可以使用单个退格键删除。
- 接受建议列表中的斜杠命令(例如
/clear和/help)现在会执行该命令,从而无需在接受完成后明确提交聊天请求。 /createWorkspace面板聊天斜杠命令在首次在问题中使用后会重新填充到聊天输入中,从而可以轻松地询问有关工作区的后续问题。
以下录像演示了所有三项改进
迭代修复
在使用 /fix 命令时,您可以使用设置 github.copilot.editor.iterativeFixing 启用迭代修复。如果启用迭代修复,在第一次修复后,如果选择中仍存在诊断错误,则会再次运行修复。此设置默认启用。
笔记本生成改进
在生成笔记本时,还会采取额外的步骤来提高生成代码的质量,并修复语言扩展在生成代码中检测到的诊断。此功能默认禁用,但可以通过以下设置启用
"github.copilot.notebook": {
"iterativeFixing": true,
"iterativeImproving": true
}
内联聊天
在使用内联聊天时,您现在可以使用设置 inlineChat.showDiff 启用和禁用差异视图。您可以右键单击内联聊天以显示上下文菜单来更改此设置。
终端上下文
Copilot Chat 现在了解活动终端的缓冲区和选择。
Python
容错 pytest 发现
作为我们新测试架构推出的一部分,“测试资源管理器”面板现在支持容错 pytest 发现。当 pytest 在发现期间抛出可处理的错误时(例如,来自未知导入的错误),所有其他测试仍将在有错误的文件之外被发现。此功能仅在新测试重写中可用,该重写仍处于实验阶段。该重写目前对 100% 的 Insiders 用户和 25% 的稳定版用户处于活动状态,但很快将普遍采用。在此期间,您可以使用 pythonTestAdapter 设置选择启用或禁用。
使用参数运行文件的调试器配置
新的 Debugpy 扩展现在提供了带参数的 Python 文件 launch.json 配置,当您希望为 Python 文件提供不同的输入值而无需每次运行时修改代码或调试器配置时,这非常有用。
要使用此配置,请确保已安装 Debugpy 扩展。按 ⇧⌘D (Windows, Linux Ctrl+Shift+D) 打开运行和调试视图,然后选择创建 launch.json 文件或齿轮图标以访问 launch.json 文件。选择Debugpy,然后从可用配置中选择Python:带参数的文件。
现在,当您想要调试 (F5) 需要命令行参数的 Python 文件时,会出现一个提示,允许您输入要传递给 Python 文件的所需参数。
输入参数后,按 Enter,调试器将启动,让您逐步执行代码。
主题:Catppuccin Macchiato(在 vscode.dev 上预览)
Python 扩展 API 的 npm 包
Python 扩展现在提供了一个 npm 包,使其他扩展作者更容易访问和跟踪 Python 扩展 API 中的更改。查看 @vscode/python-extension npm 模块,以处理用户机器上可用的 Python 环境。
Python 扩展的开发容器
现在有一个带 Microsoft 官方 Node.js 镜像的 Python 扩展开发容器。有了这个自定义开发容器,用户可以在 GitHub Codespace 中打开Python 扩展仓库,并立即开始开发和测试 Python 扩展,无需安装。预装了 Python 3.7、3.8、3.9、3.10 和 3.11 版本,因此用户可以使用 pyenv 轻松切换 Python 版本。
Jupyter
连接到 Codespace 上的 Jupyter 服务器
在 github.dev 上处理 Jupyter 笔记本时,您现在可以通过内核选择器连接到在 GitHub Codespace 实例上运行的 Jupyter 服务器。
继续处理未提交的更改
您可以通过选择笔记本工具栏中的继续按钮切换到底层 codespace,工作区中所有未提交的更改都将带到 codespace 中。
GitHub 拉取请求和议题
GitHub 拉取请求和问题扩展取得了更多进展,它允许您处理、创建和管理拉取请求和问题。本次迭代中,我们专注于更新创建视图,使其更简洁、更有用。
创建视图的改进包括
- 视图尝试为您的 PR 检测最佳可能的基础分支,而不是始终使用默认分支。
- 您可以从创建视图向 PR 添加审阅者、受让人、标签和里程碑。
- 默认情况下,您的最后一个“创建选项”会被记住(例如,草稿或自动合并)。
- 视图性能更快。
- 您可以在发布分支之前查看差异。
- 分支发布后,您还可以查看提交(对于未发布的分支,此功能即将推出)。

查看扩展 0.70.0 版本的更新日志以了解其他亮点。
GitHub 身份验证
注销时撤销 GitHub OAuth 令牌
以前,当您在 VS Code 中注销 GitHub 帐户时,它只会从密钥存储中删除 OAuth 令牌。令牌仍然有效,并且能够向 GitHub 的 API 发出请求。为了提高令牌管理的安全性,我们现在尝试删除后端上的令牌,使令牌在注销后不再有效。
扩展创作
revealSetting 和 focusSearch 已添加到 IOpenSettingsActionOptions
扩展现在可以将 revealSetting 对象和 focusSearch 布尔值传递给接受 IOpenSettingsActionOptions 参数的命令,例如 workbench.action.openSettingsJson。
例如,以下命令
vscode.commands.executeCommand('workbench.action.openSettingsJson', {
revealSetting: { key: 'editor.renderWhitespace' }
});
打开用户设置 JSON 文件,然后显示 editor.renderWhitespace 设置(如果存在)。
新的 TestController.invalidateTestResults 方法
测试扩展可以调用新的方法 TestController.invalidateTestResults,以向用户指示一个或多个测试的任何结果可能不再适用。例如,扩展可能会执行以下操作
onFileChange(uri => {
// invalidate tests in a file when a file changes:
testController.invalidateTestResults(getTestsInFile(uri));
});
onConfigurationChange(() => {
// invalidate results for all tests:
testController.invalidateTestResults();
});
网络代理的 Kerberos 认证
使用 https Node.js 模块的扩展现在可以使用需要 Kerberos 认证的网络代理。本地机器需要配置 Kerberos,但扩展无需执行任何操作即可使用此功能。
在自动选择的服务主体名称不起作用的情况下,用户可以使用 http.proxyKerberosServicePrincipal 设置提供一个

QuickPickItem 中的图标已完成
QuickPickItem 中图标的 API 已完成。您现在可以使用 iconPath 属性在 QuickPickItem 中显示图标。
![]()
工程
通过名称重整缩小 VS Code
最近的工程工作将 VS Code 发布 JavaScript 的大小减少了 20%。在通过名称混淆缩小 VS Code 博客文章中,您可以了解 VS Code 工程师 Matt Bierner 和 Johannes Rieken 如何研究标识符名称混淆以优化代码大小,并提出使用 TypeScript 的有效解决方案。
更多 pty 主机改进
在上个月对 pty 主机的改进基础上,以下改进已经完成
- 性能
- pty 主机现在只在需要时启动,因此从未打开终端的用户将节省约 50-100 MB。
- 进一步并行化终端重新连接,加快终端初始化时间。
- 终端输出消息现在被缓冲,减少了从 pty 主机到托管终端的窗口的流量。
- 诊断
- 在跟踪日志级别时,会记录每个进程之间的延迟统计信息。
- 窗口 ID 会记录到终端输出通道中的所有日志。
- pty 主机 RPC 日志记录现在会记录因异常而失败的响应。
值得注意的修复
感谢
最后但同样重要的是,向 VS Code 的贡献者们致以衷心的感谢。
问题跟踪
对我们问题跟踪的贡献
拉取请求
对 vscode 的贡献
- @a-stewart (Anthony Stewart):将动作小部件的最大宽度增加到浏览器宽度的 80% PR #186157
- @abhijit-chikane (Abhijit Chikane):修复断点占位符的大小写 PR #185753
- @andrewbranch (Andrew Branch):[typescript-language-features] 更新 autoImportFileExcludePatterns 描述 PR #186528
- @colombod (Diego Colombo):添加提议的 API 以支持语言配置中的自动关闭对 PR #186567
- @Dromantor (Andreas Pareis):修复 #173858 迷你地图滑块未滚动到顶部 PR #180728
- @EhabY (Ehab Younes):在 TreeView API 中公开聚焦元素和更改事件 PR #184268
- @gjsjohnmurray (John Murray)
- 为测试输出内联操作使用
go-to-filecodicon(修复 #186369) PR #188472 - 在测试视图进度区域显示占位符文本(修复 #141181) PR #188484
- 为测试输出内联操作使用
- @hsfzxjy
- 将 Ctrl+DownArrow 和 Ctrl+UpArrow 推广到大多数输入-结果小部件(修复 #179967) PR #187077
- 修复上下文菜单位置不准确的问题 PR #187157
- @jeanp413 (Jean Pierre)
- 修复升级后扩展激活失败,出现错误:找不到模块“vscode” PR #187090
- 修复关闭查找小部件后无法在终端中使用 cmd+up/down PR #187781
- 修复工具提示中缺失的终端查找小部件快捷方式 PR #187787
- @lkct (Rickey K. Liang):恢复 Python 文档字符串颜色 PR #184938
- @m-ou-se (Mara Bos):接受 --goto 格式中的尾随冒号。 PR #186174
- @mwerschy (Malte Werschy):实现缩进指南颜色选项。 PR #178112
- @rielAsh24 (Ashriel):修复 #182014:ISO 日期格式 PR #185587
- @ssigwart (Stephen Sigwart):修复 Typescript 和 PHP 的单行 if/else 和循环缩进 PR #136577
- @SvanT (Svante Boberg):处理
TerminalWordLinkDetector侦听器 PR #187083 - @weartist (Hans):修复 #187223 PR #188144
- @yiliang114 (易良)
- 修复:拼写错误 PR #186607
- 修复:关闭 #187788,恢复树视图状态 PR #187902
- @yshaojun
- 修复:颜色提示可能显示两次(#_175476) PR #186926
- 修复:防止重复原因(#_186206) PR #187985
- 修复:修改编辑器宽度(#_175397) PR #188012
对 vscode-extension-samples 的贡献
- @dsanders11 (David Sanders):修复 EACCES 错误代码名称 PR #847
对 vscode-hexeditor 的贡献
对 vscode-js-debug 的贡献
- @zardoy (Vitaly):修复成员表达式完成 PR #1758
对 vscode-pull-request-github 的贡献
- @mgyucht (Miles Yucht):正确地向后迭代跨文件的差异 PR #5036
对 vscode-vsce 的贡献
- @drewbrokke (Drew Brokke):(#_868) 发布选项 --skip-duplicate 不考虑目标平台 PR #873
对 inno-updater 的贡献
- @panekj (Jakub Panek):特性:用 windows-sys 替换未维护的 winapi PR #18
对 language-server-protocol 的贡献
- @c-claeys (Cristopher Claeys):将通过
textDocument/rangesFormatting的多范围格式化添加到规范 PR #1759 - @gundermanc (Christian Gunderman):语义令牌 LSIF 规范。 PR #1754
- @semanticart (Jeffrey Chupp):修复拼写错误 PR #1774
对 monaco-editor 的贡献
- @claylibrarymarket:修复 Twig 的纯文本类表达式 PR #4063
- @FossPrime (Ray Foss):使用新的 GitHub Pages 工作流 PR #4000
- @leandrocp (Leandro Pereira):Elixir - 添加对多字母大写 Sigil 的支持 PR #4041
- @philippleidig (PhilippLe):为结构化文本 (st) 语言添加 TwinCAT 文件支持 PR #3315
- @remcohaszing (Remco Haszing)