2023 年 7 月(版本 1.81)
更新 1.81.1:此更新解决了这些问题。
下载:Windows:x64 Arm64 | Mac:通用 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 pull request 创建 - 更好的基本分支检测,记住以前的创建 PR 选项。
- 预览:GitHub Copilot UX - 快速聊天改进,迭代式 /fix 命令。
如果您想在线阅读这些发行说明,请访问 Updates 上的 code.visualstudio.com。
Insiders: 想尽快试用新功能吗?您可以下载每晚构建的 Insiders 版本,并在最新更新可用时立即试用。
辅助功能
辅助功能视图改进
打开辅助功能视图 (⌥F2 (Windows Alt+F2,Linux Shift+Alt+F2)) 命令允许屏幕阅读器用户逐字符、逐行检查内容。在上一次迭代中,我们为编辑器悬停提示和聊天面板回复添加了辅助功能视图。
现在,通知、内联聊天回复、Jupyter notebook 输出和工作台悬停提示都具有辅助功能视图。
当焦点位于提供辅助功能视图的元素上时,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 中编辑配置文件,将现有配置文件配置为使用默认配置文件中的配置。
导出部分配置文件时,您可以选择仅导出配置文件中自定义的配置,或者也包括默认配置文件中的配置。
将设置应用于所有配置文件
现在,您可以通过在设置编辑器中选择 将设置应用于所有配置文件 选项,将设置应用于所有配置文件。
这会将设置的值应用于所有配置文件。从任何配置文件对此设置进行的任何更新都将应用于所有配置文件。您可以通过取消选中 将设置应用于所有配置文件 选项来还原此同步。
将扩展应用于所有配置文件
现在,您可以通过在扩展视图中选择 将扩展应用于所有配置文件 选项,将扩展包含在所有配置文件中。
这会使此扩展在所有配置文件中都可用。您可以通过取消选中 将扩展应用于所有配置文件 选项来还原此操作。
在非默认配置文件上调整了设置 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
设置为 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 版本。
Notebooks
对关闭的 notebook 进行富内容搜索
在以前的版本中,我们为打开的 notebook 引入了富内容工作区搜索。现在有预览支持,也可以查看关闭的 notebook 的富内容结果。
当您在搜索视图中搜索文本时,来自 notebook 的结果预览应与您打开 notebook 编辑器时字符串的外观相匹配。请注意,这只会显示 notebook 关闭时的输入结果。要试用此功能,请在您的设置中启用 search.experimental.closedNotebookRichContentResults
。
改进了大型流式输出的性能
我们对在执行期间流式传输的大型单元格输出进行了性能改进。这减少了渲染活动量,但目前仅适用于可滚动的单元格输出。
Notebook 粘性滚动
此版本为 notebook 编辑器带来了“粘性滚动”的首次迭代。notebook 编辑器顶部的粘性滚动显示当前可见的单元格或单元格输出的 Markdown 标题。选择粘性滚动“行”会聚焦该单元格,使您可以快速导航 notebook。此功能通过 notebook.stickyScroll.enabled
设置或 视图:切换 Notebook 粘性滚动 命令启用。
VS Code Web 版
始终加载内置扩展的最新版本
vscode.dev 现在始终加载内置扩展的最新版本。这意味着当您打开 vscode.dev 时,您将不再看到“需要重新加载”通知来将内置扩展更新到最新版本。
远程开发
远程开发扩展允许您使用 开发容器、通过 SSH 或 远程隧道的远程计算机或 Windows Subsystem for Linux (WSL) 作为功能齐全的开发环境。
亮点包括
- 从 VS Code 将远程隧道安装为服务。
- 简化的 @devcontainers/cli 安装。
- 在锁文件中记录开发容器功能依赖项。
您可以在 远程开发发行说明中了解新的扩展功能和错误修复。
扩展贡献
GitHub Copilot
快速聊天 UX 改进
快速聊天体验在本迭代中已得到改进。
与之前一样,您可以使用 ⇧⌥⌘L (Windows、Linux Ctrl+Shift+Alt+L) 切换此视图。具体改进包括
- 会话式聊天:快速聊天体验现在显示您的完整对话,同时仍将最后一个问题和答案保持在焦点中。
- 斜杠命令完成:当您键入
/
时,现在可以完成斜杠命令。
此外,还有一个实验性设置 chat.experimental.defaultMode
,用于控制显示聊天的哪些部分。它有三个选项
chatView
- 在活动栏中显示聊天图标,以在聊天视图中启动聊天(默认)。quickQuestion
- 在标题栏中显示聊天图标,以启动快速聊天。both
- 两个聊天图标都可见,允许您打开任一聊天 UI。
我们想了解您对此设置和总体快速聊天体验的看法,因此请随时打开 issue 以提供反馈。
斜杠命令改进
我们对面板、内联和快速聊天中的斜杠命令进行了以下可用性改进
- 斜杠命令现在呈现为块,可以使用单个退格键删除。
- 从建议列表中接受斜杠命令(例如
/clear
和/help
)现在会执行该命令,从而无需在接受完成提示后显式提交聊天请求。 /createWorkspace
面板聊天斜杠命令在首次在问题中使用后会在聊天输入中重新填充,从而可以轻松地询问有关您的工作区的后续问题。
以下录像说明了所有三项改进
迭代式修复
在使用 /fix
命令时,您可以使用设置 github.copilot.editor.iterativeFixing
启用迭代式修复。启用迭代式修复后,如果在第一次修复后,所选内容中仍然存在诊断错误,则会再次运行修复。此设置默认启用。
Notebook 生成改进
在生成 notebook 时,有其他步骤来提高生成的代码质量,并修复语言扩展在生成的代码中检测到的诊断。默认情况下禁用此功能,但可以使用以下设置启用
"github.copilot.notebook": {
"iterativeFixing": true,
"iterativeImproving": true
}
内联聊天
在使用内联聊天时,您现在可以使用设置 inlineChat.showDiff
启用和禁用差异视图。您可以右键单击内联聊天以显示上下文菜单来更改此设置。
终端上下文
Copilot 聊天现在了解活动终端的缓冲区和选择。
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 扩展的开发容器
现在有一个适用于 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 工具栏中选择 继续处理 按钮切换到基础 codespace,并且工作区中任何未提交的更改都会被带到 codespace。
GitHub Pull Requests 和 Issues
在 GitHub Pull Requests 和 Issues 扩展上取得了更多进展,该扩展允许您处理、创建和管理 pull request 和 issue。在此迭代中,我们专注于更新 创建 视图,使其更简洁、更有用。
创建 视图的改进包括
- 该视图尝试检测 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 的贡献者。
Issue tracking
对我们的 issue tracking 的贡献
Pull requests
对 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 中公开焦点元素和 change 事件 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)
- 修复升级后扩展激活失败,错误信息: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 option --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): 语义 Tokens 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)