2023年7月(版本1.81)
更新 1.81.1: 此次更新解决了这些问题。
下载:Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
欢迎来到2023年7月发布的Visual Studio Code。此版本中有许多更新,我们希望您会喜欢,一些关键亮点包括:
- 可访问性改进 - 支持通知、聊天响应和悬停的可访问视图。
- VS Code 配置文件 - 通过部分配置文件和“应用于所有配置文件”选项进行更精细的控制。
- 新的差异编辑器功能 - 折叠未更改的区域,更好的差异区域文本对齐。
- Git repositories with symlinks - 支持带有符号链接的仓库路径。
- Notebook 更新 - 在关闭的笔记本中搜索文本,"sticky scroll" 显示 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+[)) 命令,用于在聊天面板和通知列表之间轻松导航。
面包屑符号信息
使用Focus and Select Breadcrumbs (breadcrumbs.focusAndSelect
)命令后,Breadcrumb导航现在包含了屏幕阅读器的符号信息。
输入控制和结果导航一致性
在扩展视图、键盘快捷键编辑器以及评论、问题和调试控制台面板之间导航输入控件(例如搜索或筛选输入)及其结果时的体验现在是一致的,使用(⌘↓ (Windows, Linux Ctrl+Down))和(⌘↑ (Windows, Linux Ctrl+Up))。
可访问的差异查看器
在差异编辑器中,差异审查面板已更名为无障碍差异查看器。无障碍差异查看器解决了差异编辑器在无障碍性方面的不足,可以通过F7或差异编辑器更多操作菜单中的打开无障碍差异查看器命令来打开。除了更名外,我们还修复了一些错误并添加了一些新功能,例如能够从查看器启动无障碍帮助对话框或跳转到修改后的编辑器。
配置文件
支持部分配置文件
您现在可以创建一个配置文件,其中仅自定义一部分配置(设置、键盘快捷键、代码片段、任务和扩展)。例如,您可以创建一个包含所有配置但不包括键盘快捷键的配置文件,当此配置文件处于活动状态时,VS Code 会应用默认配置文件中的键盘快捷键。
在下面的创建新配置文件截图中,键盘快捷键未被选中,并且显示了使用默认配置文件的消息。在该VS Code会话期间激活的任何键盘快捷键都不会应用于新配置文件。
您还可以在从配置文件模板或现有配置文件复制时,使用复制自下拉菜单创建部分配置文件。
您还可以通过编辑编辑配置文件界面中的配置文件,将现有配置文件配置为使用默认配置文件的配置。
导出部分配置文件时,您可以选择仅导出配置文件中自定义的配置,或者还包括默认配置文件中的配置。
将设置应用于所有配置文件
您现在可以通过在设置编辑器中选择应用于所有配置文件的设置选项,将设置应用于所有配置文件。
这将设置的值应用于所有配置文件。任何配置文件对此设置的更新都将应用于所有配置文件。您可以通过取消选中将设置应用于所有配置文件选项来恢复此同步。
将扩展应用到所有配置文件
现在,您可以通过在扩展视图中选择将扩展应用于所有配置文件选项,在所有配置文件中包含扩展。
这使得此扩展在所有配置文件中可用。您可以通过取消选中将扩展应用于所有配置文件选项来恢复此设置。
在非默认配置文件上调整的Settings 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仓库
根据社区反馈,现在支持在路径上具有符号链接的Git仓库,通过使用--path-format
选项,该选项已添加到rev-parse
Git命令中,版本为2.31
。从这个版本开始,所有源代码控制功能(例如,源代码控制视图、仓库检测、添加/修改/删除的行编辑器装饰等)在打开此类仓库时应该按预期工作。
调试
JavaScript 调试器
支持快速节点(版本)管理器
JavaScript 调试器现在在其运行时版本中支持 Fast Node Manager (fnm)。fnm 的用户现在可以设置 launch.json
的 runtimeVersion
属性来选择 Node.js 版本。
笔记本
关闭笔记本的富内容搜索
在之前的版本中,我们为打开的笔记本引入了丰富内容工作区搜索。现在,预览支持也可以查看关闭笔记本的丰富内容结果。
当你在搜索视图中搜索文本时,来自笔记本的结果预览应该与打开笔记本编辑器时字符串的外观相匹配。请注意,这仅在笔记本关闭时显示输入的结果。要尝试此功能,请在设置中启用search.experimental.closedNotebookRichContentResults
。
大型流输出性能改进
我们已经对执行期间流式传输的大单元格输出进行了性能改进。这减少了渲染活动的数量,但目前仅适用于可滚动的单元格输出。
笔记本粘性滚动
此版本为笔记本编辑器带来了“粘性滚动”的首次迭代。笔记本编辑器顶部的粘性滚动显示当前可见的单元格或单元格输出的Markdown标题。选择粘性滚动“行”会聚焦该单元格,使您能够快速浏览笔记本。此功能可通过notebook.stickyScroll.enabled
设置或视图:切换笔记本粘性滚动命令启用。
网页版VS Code
始终加载内置扩展的最新版本
vscode.dev 现在总是加载内置扩展的最新版本。这意味着当你打开 vscode.dev 时,你将不再看到“需要重新加载”的通知来将内置扩展更新到最新版本。
远程开发
Remote Development extensions 允许您使用 Dev Container、通过 SSH 连接的远程机器或 Remote Tunnels,或者 Windows Subsystem for Linux (WSL) 作为全功能的开发环境。
亮点包括:
- 从VS Code安装远程隧道作为服务。
- 简化了 @devcontainers/cli 的安装。
- 在锁文件中记录开发容器功能的依赖项。
您可以在远程开发发布说明中了解新扩展功能和错误修复。
对扩展的贡献
GitHub Copilot
快速聊天用户体验改进
本次迭代中,快速聊天体验已进行了全面改进。
和之前一样,你可以使用 ⇧⌥⌘L (Windows, Linux Ctrl+Shift+Alt+L) 来切换这个视图。具体的改进包括:
- 对话聊天: 快速聊天体验现在显示您的完整对话,同时仍然保持最后一个问题和答案的焦点。
- 斜杠命令补全:现在当你输入
/
时,会有斜杠命令的补全。
此外,还有一个实验性设置,chat.experimental.defaultMode
,用于控制聊天中显示哪些部分。它有三个选项:
chatView
- 在活动栏中显示聊天图标以在聊天视图中启动聊天(默认)。quickQuestion
- 在标题栏中显示聊天图标以启动快速聊天。both
- 两个聊天图标都可见,允许您打开任一聊天界面。
我们想了解您对这个设置以及Quick Chat体验的总体看法,所以请不要犹豫,打开issues提供反馈。
斜杠命令改进
我们对面板、内联和快速聊天中的斜杠命令进行了以下可用性改进:
- 斜杠命令现在呈现为块,并且可以通过一次退格键删除。
- 从建议列表中接受斜杠命令,例如
/clear
和/help
,现在会执行该命令,无需在接受补全后显式提交聊天请求。 - 在首次在问题中使用后,
/createWorkspace
面板聊天斜杠命令会在聊天输入中重新填充,使得询问有关工作区的后续问题变得容易。
以下录音展示了所有三项改进:
迭代修复
在使用/fix
命令时,您可以通过设置github.copilot.editor.iterativeFixing
来启用迭代修复。当启用迭代修复时,如果在第一次修复后,选择中仍然存在诊断错误,则会再次运行修复。此设置默认启用。
笔记本生成改进
在生成笔记本时,有一些额外的步骤可以提高生成代码的质量,并修复语言扩展在生成代码中检测到的诊断问题。默认情况下,此功能是禁用的,但可以通过以下设置启用:
"github.copilot.notebook": {
"iterativeFixing": true,
"iterativeImproving": true
}
内联聊天
在使用内联聊天时,您现在可以通过设置inlineChat.showDiff
来启用和禁用差异视图。您可以右键单击内联聊天以显示上下文菜单来更改此设置。
终端上下文
Copilot Chat 现在知道活动终端的缓冲区和选择。
Python
容错的pytest发现
作为我们新测试架构推出的一部分,Test Explorer 面板现在支持容错的 pytest 发现。当 pytest 在发现过程中抛出可以处理的错误时,例如来自未知导入的错误,所有其他测试仍将在包含错误的文件之外被发现。此功能仅在新的测试重写中可用,该重写仍处于实验阶段。重写目前对 100% 的 Insiders 用户和 25% 的 Stable 用户有效,但很快将普遍采用。在此期间,您可以使用 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扩展,使用微软官方的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服务器。
继续处理未提交的更改
您可以通过选择笔记本工具栏中的继续按钮切换到基础代码空间,工作区中任何未提交的更改都会被带到代码空间。
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+向下箭头和Ctrl+向上箭头推广到大多数输入结果小部件(修复 #179967) PR #187077
- 修复上下文菜单定位不准确的问题 PR #187157
- @jeanp413 (Jean Pierre)
- 修复了升级后扩展激活失败并出现错误:无法找到模块 'vscode' PR #187090
- 修复了关闭查找小部件后无法在终端中使用 cmd+上/下键的问题 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 (易良)
- fix: typos PR #186607
- fix: Close #187788, recovery tree view state 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): 功能:用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页面工作流 PR #4000
- @leandrocp (Leandro Pereira): Elixir - 添加对多字母大写符号的支持 PR #4041
- @philippleidig (PhilippLe): 为结构化文本(st)语言添加TwinCAT文件支持 PR #3315
- @remcohaszing (Remco Haszing)