2023 年 7 月(版本 1.81)
更新 1.81.1:此更新解决了这些 问题。
下载:Windows:x64 Arm64 | Mac:通用 Intel 硅 | Linux:deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 2023 年 7 月版本。此版本中有许多更新,我们希望您会喜欢,以下是一些主要亮点:
- 无障碍功能改进 - 对通知、聊天回复和悬停提供无障碍视图支持。
- VS Code 配置文件 - 通过部分配置文件和“应用于所有配置文件”选项实现更精细的控制。
- 新的差异编辑器功能 - 折叠未更改的区域,更好的差异区域文本对齐。
- 包含符号链接的 Git 代码库 - 支持具有符号链接的代码库路径。
- 笔记本更新 - 在已关闭的笔记本中搜索文本,“粘性滚动”显示 Markdown 标题。
- Python 测试发现 - 容错的 pytest 发现跨所有文件继续进行。
- 在 GitHub Codespaces 中访问 Jupyter 服务器 - 连接到代码空间中的远程 Jupyter 服务器。
- GitHub 拉取请求创建 - 更好的基础分支检测,记住之前的创建拉取请求选项。
- 预览:GitHub Copilot UX - 快速聊天改进,迭代 /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 会话期间处于活动状态的任何键盘快捷键都不会应用于新配置文件。
您也可以在从配置文件模板或现有配置文件复制时使用从下拉菜单创建部分配置文件。
您还可以通过在编辑配置文件UI 中编辑配置文件,将现有配置文件配置为使用来自默认配置文件的配置。
导出部分配置文件时,您可以选择仅导出在配置文件中自定义的配置,也可以包括来自默认配置文件的配置。
将设置应用于所有配置文件
您现在可以通过在设置编辑器中选择将设置应用于所有配置文件选项,将设置应用于所有配置文件。
这会将设置的值应用于所有配置文件。从任何配置文件对该设置的任何更新都会应用于所有配置文件。您可以通过取消选中将设置应用于所有配置文件选项来还原此同步。
将扩展应用于所有配置文件
您现在可以通过在扩展视图中选择将扩展应用于所有配置文件选项,将扩展包含在所有配置文件中。
这会使此扩展在所有配置文件中可用。您可以通过取消选中将扩展应用于所有配置文件选项来还原此设置。
在非默认配置文件上调整 Settings JSON 文件命令 ID
首选项:打开用户设置 (JSON) (workbench.action.openSettingsJson
) 命令现在将在用户处于非默认配置文件时打开特定于配置文件的 settings JSON 文件。要显示应用程序范围的设置,请改用首选项:打开应用程序设置 (JSON) (workbench.action.openApplicationSettingsJson
) 命令。
工作台
即将发布的更新的发行说明
每当准备好安装每月稳定更新时,您现在可以通过活动栏底部的管理菜单(齿轮按钮)中的显示更新发行说明命令预览发行说明。
编辑器
Markdown 将 URL 粘贴为格式化的链接
markdown.editor.pasteUrlAsFormattedLink
设置现在有一个新的选项 smart
。smart
粘贴功能可以检测您是否正在粘贴到可能不需要自动 Markdown 链接格式化的文本中。smart
粘贴忽略的一些情况包括在 Markdown 链接内、在另一个 Markdown 链接之上以及在代码块内粘贴。
默认情况下,pasteUrlAsFormattedLink
功能当前处于关闭状态 (never
),但您可以将设置更改为 smart
或 always
(始终创建格式化的 URL 链接)。
异步标记化推出
在 1.76 更新 中,我们在 web 工作线程上实现了编辑器文档异步标记化,以提高渲染器进程的性能。从那时起,我们修复了由罕见竞争条件引起的几个错误,在本版本中,我们开始将此功能推广到稳定用户。
如果您不想等待,可以将 editor.experimental.asyncTokenization
设置为 true
,以立即获得异步标记化。
差异编辑器
在本迭代中,我们继续开发新的差异编辑器,并计划将其逐步推广到稳定用户。您可以通过将 "diffEditor.experimental.useVersion2": true
设置为立即尝试它。新的差异编辑器包含以下描述的几个新功能和错误修复。
折叠未更改的区域
使用 diffEditor.experimental.collapseUnchangedRegions
在新的差异编辑器中启用隐藏未更改的区域。此功能在查看包含大量未更改行的较大差异时非常有用。
可以拖动或单击隐藏行块的边界以从底部或顶部显示文本。
差异区域对齐
新的差异编辑器现在对齐差异区域内的文本,这使得审查缩进已更改和已插入行的差异变得更加容易。
之前(没有差异区域对齐和启用空格差异)
之后(启用差异区域对齐)
新的差异算法现在默认启用
我们已完成新的差异算法的推广,该算法现在是 VS Code 中的默认算法。您可以在 过去的发行说明 中阅读有关该算法改进的一些内容。
减少差异噪声
在本更新中,我们在新的差异算法中添加了启发式方法,以降低匹配不相关词语的可能性。
这是差异编辑器之前的显示方式(请注意,this
在两边都匹配,即使匹配没有帮助)
这是现在使用启发式改进后的显示方式(请注意,不相关的匹配更少了)
切换两侧
在使用新的 diff 编辑器并排视图时,现在有一个新的命令 **Diff 编辑器:切换两侧**,允许您在两侧之间跳转。切换两侧时,活动编辑器中的光标位置和当前选择将映射到另一侧。
还有更多
查看 1.80 版本说明 以详细了解新的 diff 编辑器中发生了哪些变化!
终端
内联终端选项卡的自定义悬停
当只有一个终端时显示的面板内联终端选项卡现在使用自定义悬停,以获得更一致的外观并支持嵌入式链接。
源代码管理
支持带有符号链接的 Git 仓库
根据社区反馈,现在支持使用 `--path-format` 选项的 Git 仓库,该选项已添加到 `rev-parse` Git 命令的 `2.31` 版本中。从本版本开始,所有源代码控制功能(例如,**源代码控制** 视图、仓库检测、添加/修改/删除行编辑器装饰等)在打开此类仓库时应按预期工作。
调试
JavaScript 调试器
支持 Fast Node (版本) 管理器
JavaScript 调试器现在在运行时版本中支持 Fast Node Manager (fnm)。fnm 用户现在可以设置 `launch.json` 的 `runtimeVersion` 属性以选择 Node.js 版本。
笔记本
封闭笔记本的富内容搜索
在之前的版本中,我们引入了对开放笔记本的富内容工作区搜索。现在有预览支持,还可以查看封闭笔记本的富内容结果。
当您在搜索视图中搜索文本时,来自笔记本的结果预览应该与您打开笔记本编辑器时字符串的外观相匹配。请注意,这只会显示笔记本关闭时的输入结果。要尝试此操作,请在您的设置中启用 `search.experimental.closedNotebookRichContentResults`。
提高大型流输出的性能
我们已经改进了在执行期间流式传输的大型单元输出的性能。这减少了渲染活动,但目前仅适用于可滚动单元输出。
笔记本粘性滚动
本版本带来了笔记本编辑器“粘性滚动”的第一个迭代。笔记本编辑器顶部的粘性滚动显示显示当前可见的单元或单元输出的 Markdown 标题。选择粘性滚动“行”将使该单元成为焦点,允许您快速浏览笔记本。此功能通过 `notebook.stickyScroll.enabled` 设置或 **视图:切换笔记本粘性滚动** 命令启用。
适用于 Web 的 VS Code
始终加载内置扩展的最新版本
vscode.dev 现在始终加载内置扩展的最新版本。这意味着当您打开 vscode.dev 时,您将不再看到“需要重新加载”通知以将内置扩展更新到最新版本。
远程开发
远程开发扩展 允许您使用 Dev Container、通过 SSH 或 远程隧道 连接到远程机器,或使用 适用于 Linux 的 Windows 子系统 (WSL) 作为功能齐全的开发环境。
亮点包括
- 从 VS Code 安装远程隧道作为服务。
- 简化了 @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` 启用迭代修复。启用迭代修复后,如果在第一次修复后,选择中仍然存在诊断错误,则修复将再次运行。此设置默认启用。
笔记本生成改进
在生成笔记本时,有额外的步骤来提高生成的代码质量,并通过语言扩展修复在生成的代码中检测到的诊断。默认情况下,此功能处于禁用状态,但可以使用以下设置启用它
"github.copilot.notebook": {
"iterativeFixing": true,
"iterativeImproving": true
}
内联聊天
在使用内联聊天时,您现在可以使用设置 `inlineChat.showDiff` 启用和禁用差异视图。您可以右键单击内联聊天以显示上下文菜单以更改此设置。
终端上下文
Copilot Chat 现在了解活动终端的缓冲区和选择。
Python
容错 pytest 发现
作为我们新测试架构推出的一部分,测试资源管理器面板现在支持容错 pytest 发现。当 pytest 在发现过程中抛出可以处理的错误时,例如,来自未知导入的错误,所有其他测试仍将发现错误文件以外的所有测试。此功能仅在新测试重写中可用,该重写仍处于实验阶段。重写目前对 100% 的内部人员和 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 扩展的 Dev Container
现在有一个 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 笔记本时,您现在可以通过内核选择器连接到 GitHub Codespace 实例上运行的 Jupyter 服务器。
使用未提交的更改继续
您可以通过在笔记本工具栏中选择 **继续** 按钮来切换到底层 Codespace,工作区中的任何未提交的更改都将被带到 Codespace。
GitHub 拉取请求和问题
GitHub 拉取请求和问题 扩展取得了更多进展,该扩展允许您处理、创建和管理拉取请求和问题。此次迭代中,我们专注于更新 **创建** 视图,使其更简洁、更有用。
对 **创建** 视图的改进包括
- 该视图尝试为您的 PR 检测最佳的基线分支,而不是始终使用默认分支。
- 您可以在 **创建** 视图中将审阅者、受让人、标签和里程碑添加到您的 PR。
- 默认情况下,您的最后一个“创建选项”会被记住(例如,草稿或自动合并)。
- 视图性能更快。
- 您可以在发布分支之前查看差异。
- 发布分支后,您还可以查看提交(这很快将在未发布的分支中提供)。
查看扩展的变更日志,了解其他重要亮点。
GitHub 身份验证
在注销时撤销 GitHub OAuth 令牌
以前,当您在 VS Code 中注销 GitHub 帐户时,它只会从秘密存储中删除 OAuth 令牌。该令牌仍然有效,并且能够向 GitHub 的 API 发出请求。为了提高令牌管理的安全性,我们现在尝试在后端删除令牌,使令牌在注销后不再有效。
扩展编写
将 revealSetting 和 focusSearch 添加到 IOpenSettingsActionOptions
扩展现在可以将 revealSetting
对象和 focusSearch
布尔值传递到诸如 workbench.action.openSettingsJson
之类的命令中,这些命令接受 IOpenSettingsActionOptions
参数。
例如,以下命令
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-file
codicon(修复 #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) 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 - 添加对多字母大写符号的支持 PR #4041
- @philippleidig (PhilippLe): 为结构化文本 (st) 语言添加 TwinCAT 文件支持 PR #3315
- @remcohaszing (Remco Haszing)