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
立即试用。新的差异编辑器包含以下描述的几个新功能和错误修复。
折叠未更改区域
使用 diffEditor.experimental.collapseUnchangedRegions
在新差异编辑器中启用隐藏未更改区域。此功能在审查具有大量未更改行的大型差异时非常有用。
隐藏行块的边框可以拖动或单击以显示底部或顶部的文本。
差异区域对齐
新的差异编辑器现在会对齐差异区域内的文本,从而使审查缩进已更改且已插入行的差异变得更加容易。
之前(未启用差异区域对齐和空白差异)
之后(启用差异区域对齐)
新差异算法现在默认启用
我们已经完成了新差异算法的推广,该算法现在是 VS Code 中的默认算法。您可以在过去的发布说明中阅读有关算法改进的一些信息。
差异降噪
在此更新中,我们为新的差异算法添加了启发式方法,以降低匹配不相关单词的可能性。
这是差异编辑器以前的样子(请注意 this
如何在两侧匹配,即使匹配没有帮助)
这是现在使用启发式改进后的样子(请注意,不相关的匹配更少)
切换侧
当使用新差异编辑器的并排视图时,现在有一个新命令差异编辑器:切换侧,允许您从一侧跳到另一侧。切换侧时,活动编辑器中的光标位置和当前选择会映射到另一侧。
还有更多
查看1.80 发布说明,了解新差异编辑器中更改的更详细描述!
终端
内联终端选项卡中的自定义悬停
当只有一个终端时显示的面板内联终端选项卡现在使用自定义悬停,以实现更一致的外观并支持嵌入式链接。
源代码管理
支持带有符号链接的 Git 仓库
根据社区反馈,现在通过使用 --path-format
选项(添加到 rev-parse
Git 命令在版本 2.31
中)支持其路径上带有符号链接的 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 安装。
- 在锁定文件中记录开发容器功能依赖项。
您可以在远程开发发布说明中了解新的扩展功能和错误修复。
对扩展的贡献
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: File with Arguments。
现在,当您想要调试 (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 笔记本时,您现在可以通过内核选择器连接到在 GitHub Codespace 实例上运行的 Jupyter 服务器。
继续处理未提交的更改
您可以通过选择笔记本工具栏中的继续处理按钮切换到底层 codespace,工作区中任何未提交的更改都会带到 codespace。
GitHub 拉取请求和议题
GitHub 拉取请求和问题扩展取得了更多进展,该扩展允许您处理、创建和管理拉取请求和问题。本次迭代中,我们专注于更新创建视图,使其更简洁、更有用。
创建视图的改进包括:
- 视图会尝试为您的 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 docstring 颜色 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): 添加对结构化文本 (st) 语言的 TwinCAT 文件支持 PR #3315
- @remcohaszing (Remco Haszing)