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

使用“从...复制” (Copy from) 下拉菜单,在从配置文件模板或现有配置文件复制时,也可以创建部分配置文件。

您还可以通过在“编辑配置文件” UI 中编辑现有配置文件,配置该配置文件以使用“默认配置文件”中的配置。

导出部分配置文件时,可以选择仅导出配置文件中自定义的配置,也可以选择包含“默认配置文件”中的配置。

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

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

这使得此扩展在所有配置文件中都可用。您可以通过取消选中“应用于所有配置文件”选项来撤销此操作。
非默认配置文件上的设置 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 工作器上实现了编辑器文档异步标记化,以提高渲染进程的性能。从那时起,我们修复了由罕见的竞态条件引起的几个错误,并且在此版本中,我们开始向 Stable 用户推出此功能。
如果您不想等待,可以将 editor.experimental.asyncTokenization 设置为 true 以立即获得异步标记化。
差异编辑器
在此迭代中,我们继续研究新的差异编辑器,并计划逐步向 Stable 用户推出。您可以通过设置 "diffEditor.experimental.useVersion2": true 立即试用它。新的差异编辑器包括下面描述的几项新功能和错误修复。
折叠未更改的区域
使用 diffEditor.experimental.collapseUnchangedRegions 在新的差异编辑器中启用隐藏未更改的区域。此功能在审查具有大量未更改行的较大差异时非常有用。
可以通过拖动或单击隐藏行块的边框来从底部或顶部显示文本。

差异区域对齐
新的差异编辑器现在会使差异区域内的文本对齐,从而更容易审查缩进发生变化和行被插入的差异。
之前(未启用差异区域对齐和空白差异)

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

新的差异算法现已默认启用
我们已完成新差异算法的推出,它现在是 VS Code 中的默认设置。您可以在以前的发行说明中阅读有关算法改进的一些信息。
差异噪音减少
在此更新中,我们向新差异算法添加了启发式方法,以降低匹配无关词语的可能性。
这是差异编辑器以前的样子(注意 this 是如何在两侧匹配的,即使匹配没有帮助)

这是启发式改进后的样子(注意无关的匹配更少)

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

GitHub 身份验证
登出时撤销 GitHub OAuth 令牌
以前,当您在 VS Code 中登出 GitHub 帐户时,只会从秘密存储中删除 OAuth 令牌。该令牌仍然有效,可以向 GitHub API 发出请求。为提高令牌管理的安全性,我们现在会尝试在后端删除令牌,使令牌在登出后不再有效。
扩展创作
在 IOpenSettingsActionOptions 中添加 revealSetting 和 focusSearch
扩展现在可以将 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 host 改进
在上个月对 pty host 进行改进的基础上,我们做出了以下改进
- 性能
- pty host 现在仅在需要时才启动,因此从不打开终端的用户可以节省大约 50-100 MB。
- 进一步并行化终端重新连接,加快初始化终端的速度。
- 终端输出消息现在被缓冲,减少了从 pty host 和托管终端的窗口之间的流量。
- 诊断
- 在跟踪日志级别下,会记录每个进程之间的延迟统计信息。
- 窗口 ID 会记录到“终端”输出通道的所有日志中。
- Pty host 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-file codicon(修复 #186369) PR #188472
- 在测试视图进度区域显示占位符文本(修复 #141181) PR #188484
- @hsfzxjy
- 将 Ctrl+DownArrow 和 Ctrl+UpArrow 通用于大多数输入-结果小部件(修复 #179967) PR #187077
- 修复上下文菜单定位不准确 PR #187157
- @jeanp413 (Jean Pierre)
- 修复升级后无法激活扩展,出现 Error: Cannot find module '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) publish 选项 --skip-duplicate 不考虑目标平台 PR #873
对 inno-updater 的贡献
- @panekj (Jakub Panek):feat:用 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 - 添加对多字母大写 sigils 的支持 PR #4041
- @philippleidig (PhilippLe):为结构化文本 (st) 语言添加 TwinCAT 文件支持 PR #3315
- @remcohaszing (Remco Haszing)