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 会话期间活动的任何键盘快捷方式都不会应用于新配置文件。
在使用复制自下拉菜单从配置文件模板或现有配置文件复制时,您也可以创建部分配置文件。
您还可以通过在编辑配置文件 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 存储库,方法是使用 --path-format
选项,该选项已添加到 2.31
版本的 rev-parse
Git 命令中。从这个版本开始,当打开这样的存储库时,所有源代码管理功能(例如,源代码管理视图、存储库检测、添加/修改/删除行编辑器装饰等)都应该按预期工作。
调试
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 功能依赖项。
您可以在 远程开发发行说明中了解新的扩展功能和错误修复。
对扩展的贡献
GitHub Copilot
快速聊天用户体验改进
快速聊天体验在此迭代中得到了改进。
像以前一样,您可以使用 ⇧⌥⌘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% 的 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 扩展的 Dev Container
现在有一个 Python 扩展的 Dev Container,它使用了微软官方的 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 Pull Requests and Issues 扩展取得了更多进展,该扩展允许您处理、创建和管理拉取请求和问题。本次迭代,我们专注于更新创建视图,使其更清晰、更有用。
创建视图的改进包括:
- 该视图会尝试为您的 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-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) 发布选项 --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):添加 TwinCAT 文件对结构化文本 (st) 语言的支持 PR #3315
- @remcohaszing (Remco Haszing)