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 月版本。此版本中包含许多我们希望您会喜欢的更新,其中一些主要亮点包括:
- 辅助功能改进 - Accessible View 支持通知、聊天回复和悬停提示。
- VS Code 配置文件 - 通过部分配置文件和“应用到所有配置文件”选项进行更精细的控制。
- 新的差异编辑器功能 - 折叠未更改区域,更好的差异区域文本对齐。
- 带符号链接的 Git 仓库 - 支持带有符号链接的仓库路径。
- 笔记本更新 - 在关闭的笔记本中搜索文本,“sticky scroll”显示 Markdown 标题。
- Python 测试发现 - 容错的 pytest 发现会继续扫描所有文件。
- 在 GitHub Codespaces 中访问 Jupyter 服务器 - 连接到 codespace 中的远程 Jupyter 服务器。
- GitHub pull request 创建 - 更好的基础分支检测,记住上次创建 PR 的选项。
- 预览:GitHub Copilot 用户体验 - Quick Chat 改进,迭代 /fix 命令。
如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新页面。
Insiders:想尽快试用新功能吗?您可以下载每夜构建的 Insiders 版本,并在最新更新可用时立即试用。
辅助功能
Accessible View 改进
打开 Accessible View (⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2)) 命令允许屏幕阅读器用户逐字符、逐行检查内容。上一个迭代中,我们为编辑器悬停提示和聊天面板回复添加了 Accessible View。
现在,通知、内联聊天回复、Jupyter 笔记本输出和工作台悬停提示都有 Accessible View。
当一个提供 Accessible View 的元素被聚焦时,ARIA label 中会提供一个提示。可以通过 accessibility.verbosity
设置按功能禁用此提示。
有在 Accessible View 中显示下一个 (⌥] (Windows, Linux Alt+])) 和在 Accessible View 中显示上一个 (⌥[ (Windows, Linux Alt+[)) 命令,用于在聊天面板和通知列表中的元素之间轻松导航。
面包屑符号信息
使用聚焦并选择面包屑 (breadcrumbs.focusAndSelect
) 命令后,面包屑导航现在包含屏幕阅读器的符号信息。
输入控件和结果导航一致性
现在,使用 (⌘↓ (Windows, Linux Ctrl+Down)) 和 (⌘↑ (Windows, Linux Ctrl+Up)) 键,在扩展视图、键盘快捷方式编辑器以及注释、问题和调试控制台面板中的输入控件(例如,搜索或筛选输入)及其结果之间导航的体验现在保持一致。
Accessible Diff Viewer
在差异编辑器中,差异审查窗格已更名为 Accessible Diff Viewer。Accessible Diff Viewer 解决了差异编辑器的辅助功能不足之处,可以通过 F7 键或从差异编辑器的更多操作菜单中选择打开 Accessible Diff Viewer 命令来打开。除此次更名外,我们还修复了一些 bug 并添加了一些新功能,例如能够启动辅助功能帮助对话框或从查看器跳转到已修改的编辑器。
配置文件
支持部分配置文件
现在,您可以创建一个仅自定义部分配置(设置、键盘快捷方式、代码片段、任务和扩展)的配置文件。例如,您可以创建一个包含所有配置但不包含键盘快捷方式的配置文件,并且当此配置文件处于活动状态时,VS Code 会应用 Default Profile 中的键盘快捷方式。
在下面的创建新配置文件屏幕截图中,键盘快捷方式未选中,并显示使用 Default Profile 消息。在该 VS Code 会话期间激活的任何键盘快捷方式都不会应用于新的配置文件。
在使用复制自下拉菜单时,您也可以在从配置文件模板或现有配置文件复制时创建部分配置文件。
您还可以通过在编辑配置文件 UI 中编辑配置文件,将现有配置文件配置为使用 Default Profile 中的配置。
导出部分配置文件时,您可以选择仅导出在配置文件中自定义的配置,或者同时包含 Default Profile 中的配置。
将设置应用到所有配置文件
现在,您可以通过在设置编辑器中选择将设置应用到所有配置文件选项,将设置应用到所有配置文件。
这将把设置的值应用到所有配置文件。从此设置在任何配置文件中的任何更新都会应用到所有配置文件。您可以通过取消选中将设置应用到所有配置文件选项来恢复此同步。
将扩展应用到所有配置文件
现在,您可以通过在扩展视图中选择将扩展应用到所有配置文件选项,将扩展包含在所有配置文件中。
这使得此扩展在所有配置文件中可用。您可以通过取消选中将扩展应用到所有配置文件选项来恢复此更改。
非默认配置文件中的设置 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 上实现了编辑器文档的异步标记化,以提高渲染器进程的性能。自那时以来,我们修复了一些由罕见的竞态条件引起的 bug,并且在此版本中,我们开始将此功能逐步推广给稳定版用户。
如果您不想等待,可以将 editor.experimental.asyncTokenization
设置为 true
以立即获得异步标记化。
差异编辑器
在此迭代中,我们继续开发新的差异编辑器,并计划逐步将其推广给稳定版用户。您可以通过将 "diffEditor.experimental.useVersion2": true
设置来立即试用。新的差异编辑器包含下面描述的几个新功能和 bug 修复。
折叠未更改区域
使用 diffEditor.experimental.collapseUnchangedRegions
可以启用在新差异编辑器中隐藏未更改区域。此功能在审查包含大量未更改行的大差异时非常有用。
隐藏行块的边框可以拖动或点击以显示底部或顶部的文本。
差异区域对齐
新的差异编辑器现在会使差异区域内的文本对齐,从而更容易审查缩进已更改且插入了行的差异。
之前(未启用差异区域对齐和空白差异)
之后(启用差异区域对齐)
新的差异算法现已默认启用
我们已完成新的差异算法的推广,该算法现已成为 VS Code 中的默认设置。您可以在过去的发行说明中阅读有关算法改进的一些信息。
差异降噪
在此更新中,我们为新的差异算法添加了启发式算法,以降低匹配不相关单词的概率。
这是差异编辑器之前的样子(请注意 this
如何在两侧匹配,即使这种匹配没有帮助)
这是现在经过启发式改进后的样子(请注意不相关的匹配项更少了)
切换侧边
当使用新的差异编辑器的并排视图时,现在有一个新命令差异编辑器:切换侧边,允许您从一侧跳转到另一侧。切换侧边时,活动编辑器中的光标位置和当前选择会映射到另一侧。
还有更多内容
请查看1.80 发行说明,以获取关于新差异编辑器更改的更详细描述!
终端
内联终端选项卡中的自定义悬停提示
当只有一个终端时显示的面板内联终端选项卡现在使用自定义悬停提示,以获得更一致的外观并支持嵌入式链接。
源代码管理
支持带符号链接的 Git 仓库
根据社区反馈,通过使用在 Git 2.31
版本中添加到 rev-parse
Git 命令中的 --path-format
选项,现在支持其路径中带有符号链接的 Git 仓库。从这个版本开始,打开此类仓库时,所有源代码管理功能(例如,源代码管理视图、仓库检测、已添加/已修改/已删除行编辑器装饰等)都应按预期工作。
调试
JavaScript 调试器
支持 Fast Node (Version) Manager
JavaScript 调试器现在支持 Fast Node Manager (fnm) 的运行时版本。fnm 用户现在可以设置 launch.json
的 runtimeVersion
属性来选择 Node.js 版本。
笔记本
关闭的笔记本的富文本内容搜索
在之前的版本中,我们引入了对打开的笔记本进行富文本内容工作区搜索的功能。现在还有预览支持,也可以看到关闭的笔记本的富文本内容结果。
在搜索视图中搜索文本时,来自笔记本的结果预览应该与打开笔记本编辑器时字符串的样子相匹配。请注意,这仅在笔记本关闭时显示输入结果。要尝试此功能,请在设置中启用 search.experimental.closedNotebookRichContentResults
。
大型流式输出的性能改进
我们对执行期间流式传输的大型单元格输出进行了性能改进。这减少了渲染活动量,但目前仅适用于可滚动的单元格输出。
笔记本 sticky scroll
此版本带来了笔记本编辑器的“sticky scroll”的首次迭代。笔记本编辑器顶部的 sticky scroll 显示了当前可见的单元格或单元格输出的 Markdown 标题。选择一个 sticky scroll“行”会聚焦该单元格,从而可以快速导航笔记本。此功能通过 notebook.stickyScroll.enabled
设置或视图:切换笔记本 Sticky Scroll 命令启用。
Web 版 VS Code
始终加载最新版本的内置扩展
vscode.dev 现在始终加载最新版本的内置扩展。这意味着当您打开 vscode.dev 时,将不再看到“需要重新加载”通知以更新内置扩展到最新版本。
远程开发
远程开发扩展允许您使用 Dev Container、通过 SSH 或 Remote Tunnels 连接的远程机器,或者 适用于 Linux 的 Windows 子系统 (WSL) 作为功能齐全的开发环境。
亮点包括:
- 从 VS Code 安装 Remote Tunnels 作为服务。
- 简化了 @devcontainers/cli 的安装。
- 在 lockfile 中记录 Dev Container Feature 依赖项。
您可以在远程开发发行说明中了解新的扩展功能和 bug 修复。
对扩展的贡献
GitHub Copilot
Quick Chat 用户体验改进
Quick Chat 体验在此迭代中得到了改进。
与以前一样,您可以使用 ⇧⌥⌘L (Windows, Linux Ctrl+Shift+Alt+L) 切换此视图。具体改进包括:
- 对话式聊天:Quick Chat 体验现在会显示您的完整对话,同时仍将最后一个问题和答案保持在焦点位置。
- 斜杠命令补全:现在输入
/
时会提供斜杠命令的补全。
此外,还有一个实验性设置 chat.experimental.defaultMode
,用于控制显示哪些聊天部分。它有三个选项:
chatView
- 在活动栏中显示聊天图标,以在聊天视图中启动聊天(默认)。quickQuestion
- 在标题栏中显示聊天图标,以启动 Quick Chat。both
- 两个聊天图标都可见,以便您可以打开任一聊天 UI。
我们想了解您对此设置和整体 Quick Chat 体验的看法,因此请随时提交问题并提供反馈。
斜杠命令改进
我们对面板、内联和 Quick Chat 中的斜杠命令进行了以下可用性改进:
- 斜杠命令现在会以块的形式渲染,并且可以使用单个退格键删除。
- 从建议列表中接受斜杠命令(例如
/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
现在有一个带有 Microsoft 官方 Node.js 镜像的 Python 扩展 Dev Container。使用此自定义 dev container,用户可以在 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 Pull Requests and Issues
对 GitHub Pull Requests and Issues 扩展方面取得了更多进展,该扩展允许您处理、创建和管理 pull requests 和 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 主机和托管终端的窗口之间的流量。
- 诊断
- 在 trace 日志级别下,会记录各个进程之间的延迟统计信息。
- 窗口 ID 会记录到终端输出通道的所有日志中。
- pty 主机 RPC 日志现在会记录因异常而失败的响应。
重要修复
感谢
最后但同样重要的是,非常感谢 VS Code 的贡献者们。
问题跟踪
对问题跟踪的贡献
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 minimap 滑块无法滚动到顶部 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 (易良)
- 修复:typos 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):语义化 Token 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)