2024 年 6 月(版本 1.91)
更新 1.91.1:此更新解决了这些 问题。
下载:Windows:x64 Arm64 | Mac:通用 Intel 硅 | Linux:deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 的 2024 年 6 月版本。此版本中包含许多更新,我们希望您喜欢,一些主要亮点包括
- 预览:传入/传出更改图 - 在源代码管理视图中可视化传入和传出更改。
- Python 环境 - 使用 python-environment-tools 增强环境发现。
- 在原生 REPL 中智能发送 - 在原生 REPL 中平滑地运行代码块。
- GitHub Copilot 可扩展性 - VS Code 稳定版中提供了聊天和语言模型 API。
- 预览:配置文件编辑器 - 在一个地方管理您的配置文件。
- 自定义选项卡标签 - 更多变量选项和对多个扩展的支持。
- TypeScript 5.5 - 对正则表达式和其他语言功能进行语法检查。
- JavaScript 调试器 - 在调试 JavaScript 时检查阴影变量。
如果您想在线阅读这些发行说明,请访问 更新,网址为 code.visualstudio.com。内部人员:想要尽快尝试新功能?您可以下载 nightly 内部人员 版本,并在这些更新可用时立即尝试。
辅助功能
编辑器悬停的无障碍视图
为了在编码时提高无障碍性,无障碍视图 和 无障碍帮助菜单 现在可以显示编辑器悬停信息的內容。根据悬停的聚焦部分,它们会显示有关聚焦部分或整个悬停内容的信息。
链接下划线
为了使链接在工作台中的普通文本中更容易区分,您可以启用设置 accessibility.underlineLinks
来为链接添加下划线。
工作台
搜索
我们添加了一个新的设置 search.ripgrep.maxThreads
,它使您能够限制 ripgrep 搜索引擎使用的线程数量。此设置适用于核心产品或通过扩展 API 使用搜索。
将 search.ripgrep.maxThreads
设置为非零值以配置线程数量。请谨慎操作,因为将此设置固定到特定值可能会降低 ripgrep 的速度。
调整允许的编码以进行猜测
使用新的设置 files.candidateGuessEncodings
,您可以配置一组编码,当 files.autoGuessEncoding
启用时,应考虑这些编码。配置顺序决定了优先级。此功能使您能够将可以检测到的可能的编码限制为更小的集合,并将一个编码优先于另一个编码。
配置文件编辑器预览
在此里程碑中,我们引入了一个新的配置文件编辑器,它使您能够从一个地方管理 配置文件。此体验包括创建新配置文件、编辑和删除现有配置文件以及导入和导出配置文件以与他人共享。在创建新配置文件时,您可以在保存之前预览配置文件并根据需要进行自定义。配置文件编辑器还使您能够使用特定配置文件打开新窗口,或将配置文件设置为新窗口的默认配置文件。
配置文件编辑器作为 workbench.experimental.enableNewProfilesUI
设置后的实验性功能提供。启用后,您可以从窗口左下角的“设置”齿轮图标访问配置文件编辑器。
试一试,并告诉我们如何进一步改进此体验。
带有配置文件菜单项的新窗口
除了配置文件编辑器之外,我们还在“文件”菜单中添加了操作以使用特定配置文件打开新窗口。使用文件 > 使用配置文件打开新窗口菜单使用特定配置文件打开新窗口。
扩展安装选项
我们添加了更多选项,让您在安装扩展时拥有更多灵活性
- 安装扩展而不进行同步。
- 安装扩展的特定版本。以前,您必须先安装扩展的最新版本,然后才能选择特定版本。
这些操作在“扩展”视图中扩展的上下文菜单中提供
在自定义标签中访问文件扩展名
当您定义 自定义标签 时,您现在可以使用 ${extname(N)}
语法更灵活地访问单个文件扩展名。此外,${extname(N)}
也支持负索引以反向顺序捕获文件扩展名。要获取整个文件扩展名,请使用 ${extname}
。
例如,对于文件 tests/editor.test.ts
${filename}
=>editor
${extname}
=>test.ts
${extname(0)}
=>ts
${extname(1)}
=>test
${extname(-1)}
=>test
${extname(-2)}
=>ts
合并来自多个扩展的自定义标签模式
当两个扩展在它们的 configurationDefaults
中为设置 workbench.editor.customLabels.patterns
贡献默认配置时,贡献的模式将合并在一起。
|
|
扩展 1 的默认贡献 | 扩展 2 的默认贡献 |
|
生成的自定义标签模式 |
取消设置主题颜色
如果主题设置了您不喜欢的颜色或边框,您现在可以使用 default
将其恢复为原始值
"workbench.colorCustomizations": {
"diffEditor.removedTextBorder": "default"
}
更改折叠占位符颜色
折叠占位符(省略号)现在可以使用颜色 editor.foldPlaceholderForeground
进行主题化。
编辑器
保存时的代码操作
使用 editor.codeActionsOnSave
设置,您可以配置一组在您保存文件时自动应用的代码操作,例如组织导入。我们通过提供基于您的工作区文件和活动扩展的可用代码操作列表,改进了配置此设置的 IntelliSense。
注意:请注意,虽然
true
和false
目前仍然是有效的配置,但它们将被弃用,取而代之的是explicit
、always
和never
。有关示例,请参阅 保存时的代码操作文档。
快速关闭只读文件状态
如果您已通过 files.readonlyInclude
设置将文件配置为只读,您现在可以从只读编辑器消息中快速切换文件的只读状态。
源代码管理
传入/传出更改图预览
我们一直在探索使用传入和传出更改的替代可视化。此里程碑包含一个实验性功能,它使用图表来可视化传入和传出更改。图表包含当前分支、当前分支的上游分支以及可选的基础分支。图表的根是这些分支的共同祖先。
您可以使用 scm.experimental.showHistoryGraph
设置启用此新可视化。试一试,并告诉我们您的想法,因为我们将继续改进和扩展此可视化中提供的功能。
笔记本
在文本选择中查找
笔记本查找控件现在具有“在选择中查找”,用于文本选择和单元格选择。此行为默认启用,可以通过控件中的按钮进行控制。根据您的选择的上下文,切换此按钮会将您的查找查询范围缩小到一个或多个选定单元格或单元格中的行。
从上下文菜单中复制或打开文本输出
在使用笔记本中的文本输出时,您现在可以使用文本输出的上下文菜单来复制输出值或在新的编辑器中打开输出。此功能使查看大型流式输出变得更加容易。
终端
支持复制和粘贴转义序列 (OSC 52)
现在支持操作系统命令 (OSC) 52 转义序列。这可用于在终端中运行的任何内容,但主要用例是 tmux
的剪贴板访问。
新的自定义字形
终端现在支持分支、行号和锁定 Powerline 符号的自定义字形。与我们支持的 其他自定义字形 一样,这些符号在启用 GPU 加速 时无需配置字体即可使用。
这些符号在调整字体大小、行高或字母间距时,也会与单元格完美缩放。
调试
JavaScript 调试器
JavaScript 调试器现在会显示阴影变量的正确值,当将鼠标悬停在它们上面以及在内联值中(通过 debug.inlineValues
设置启用)时,根据程序的范围。
主题:Codesong(在 vscode.dev 上预览)
语言
TypeScript 5.5
我们现在包含 TypeScript 5.5。此主要更新带来了许多新的语言功能和工具改进。查看 TypeScript 5.5 博客文章,了解有关此版本的详细信息。
对正则表达式进行语法检查
感谢 TypeScript 5.5,我们现在可以在 JavaScript 和 TypeScript 正则表达式字面量中报告许多语法错误。这包括诸如未关闭的组、不正确的反向引用或无效的转义等错误。
查看 TypeScript 5.5 博客文章以了解更多详细信息。
对扩展的贡献
GitHub Copilot
紧凑的内联聊天
内联聊天渲染现在更加紧凑,这使得更容易阅读和理解建议。我们还在试验一种更具叙述性的按钮文本样式,您可以通过 inlineChat.experimental.textButtons
启用。
终端初始提示
终端中显示了一个新的提示,以帮助发现内联聊天。
此提示仅在安装了 Copilot 扩展且只有一个终端尚未进行任何交互时才会显示。您可以通过右键单击它来轻松地永久性地关闭该消息。当您首次使用终端内联聊天时,该消息也会关闭。
应用代码块
聊天视图中代码块上的 **在编辑器中应用** 命令使用语言模型来确定将更改应用于当前编辑器的最佳方法。
Python
使用 python-environment-tools 发现 Python 环境
我们很高兴地介绍一种新工具,python-environment-tools,旨在显着提高检测全局 Python 安装和 Python 虚拟环境的速度。该工具使用 Rust 来确保快速准确的发现过程。
我们目前正在测试此新功能,并与现有支持并行运行,以评估 Python 扩展中新的发现性能。因此,您将看到一个名为 Python Locator
的新日志记录通道,它显示了使用此新工具的发现时间。
此增强功能是我们不断努力优化 VS Code 中 Python 支持的性能和效率的一部分。访问 python-environment-tools 存储库 以了解有关此功能、正在进行的工作以及提供反馈的更多信息。
本地 REPL 中的智能发送
Python 扩展现在在 VS Code 本地 REPL 中启用了 智能发送。
以前,当您将光标放在 Python 代码行上并按下 Shift+Enter 时,Python 扩展会将该行的确切内容发送到本地 REPL,即使它会失败,例如因为它是一条多行命令的一部分。
现在,Shift+Enter 在非嵌套场景中发送最小的可执行代码,或在嵌套场景中发送最高级别的代码块。这使用户能够快速地 Shift+Enter 浏览他们的文件,以最少的努力运行最大量的可执行代码。
支持 reStructuredText 文档字符串
Pylance 现在支持在悬停时渲染 reStructuredText 文档字符串(docstrings)!
此功能处于早期阶段,目前处于一个标志之后,因为我们正在努力确保它能够有效地处理各种 Sphinx、GoogleDoc 和 Epytext 场景。要尝试它,您可以启用实验性设置 python.analysis.supportRestructuredText
。
尝试此更改,并在 Pylance GitHub 存储库 中报告任何问题或反馈。
注意:此设置是实验性的,未来可能会被移除,因为我们稳定了此新功能并默认启用它。
GitHub 拉取请求和问题
GitHub 拉取请求 扩展取得了更多进展,该扩展使您能够处理、创建和管理拉取请求和问题。新功能包括
- 签出 PR 的 **提交** 子树中显示提交日期。
- 大量错误修复。
查看 扩展的 0.92.0 版本的变更日志 以了解其他亮点。
ESLint
ESLint 扩展现在支持 扁平配置文件格式。该扩展仍然支持 eslintrc
文件,您可以使用 eslint.useFlatConfig
设置来控制使用哪种配置文件格式。
查阅 ESLint 扁平配置推出计划 以了解 ESLint 的计划,即弃用和删除对 eslintrc
文件格式的支持。
扩展创作
聊天和语言模型 API
上个月,我们最终确定了使扩展能够参与聊天并访问语言模型的 API,但它们仅在 VS Code Insiders 中可用。在此版本中,这些 API 现在在 VS Code Stable 中完全可用。
查看我们的 公告博客文章,以了解有关这些 API 的更多信息,并了解一些早期采用者如何使用它们。
处理对象设置的默认值
当多个扩展为同一个对象设置贡献默认值时,这些默认值现在将被合并。这可以防止扩展之间发生冲突。
最终确定 DebugSessionOptions.testRun
API
从测试运行启动调试会话的扩展现在可以将该运行传递到 DebugSessionOptions
中,并在调用 vscode.debug.startDebugging
时传递。在传递时,生命周期操作(如重启调试会话)也会创建一个新的测试运行。
调试适配器协议
对 调试适配器协议 进行了一些值得注意的更改。
- 通过新的
Scope.presentationHint = returnValue
选项来表示返回值。 - 在
evaluate
请求中添加源位置。VS Code 实现了这一点,并在评估悬停和内联值时传递位置。
建议的 API
语言模型的工具和函数
我们添加了一个 API 提案,该提案允许调用工具或函数。该 API 包含两个主要部分。
-
扩展能够注册一个“工具”。工具是旨在由语言模型使用的功能。例如,读取文件的 Git 历史记录。
-
语言模型支持工具的机制,例如:扩展在发出请求时传递工具、语言模型请求工具调用以及扩展将工具调用的结果传回。
该提案可以在 vscode.proposed.lmTools.d.ts 中找到。
注意:该 API 仍在积极开发中,将来会发生变化。还要预期 VS Code 将附带合理的默认工具。
身份验证 getSessions
现在是 getAccounts
虽然我们支持多帐户身份验证提供者,但一直缺少的是获取所有会话并对特定会话采取行动的能力。以前,我们有一个 getSessions
API 提案试图解决这个问题,但在进行实验并借鉴流行的身份验证库的启发后,我们采取了一种不同的方法来解决这个问题。
我们从之前的 getSessions
API 提案转向了将“帐户”和“会话”概念分开的方案。
想要使用身份验证会话的扩展作者可以运行以下代码以获取用户登录的帐户的 AuthenticationSessionAccountInformation
。
const accounts = vscode.authentication.getAccounts('microsoft');
从那里,您可以使用这些帐户专门为这些帐户创建会话。
const session = vscode.authentication.getSession('microsoft', scopes, {
account: accounts[0]
});
注意:要使其正常工作,身份验证提供者需要处理一个新的参数,您可以在下面的 API 提案中了解。
我们认为这是一种处理多个身份验证会话的更清晰的方法,并且能够处理我们以前无法支持的各种场景。
该提案可以在 vscode.proposed.authGetSessions.d.ts 中找到,它使用了此提案的旧名称,以防止破坏依赖此提案的现有代码。
评论线程显示
我们添加了一个 API 提案,使提供评论的扩展能够在编辑器中显示他们自己的评论线程。此 API 提供了选项,用于在显示线程时是否保留焦点,或将焦点设置到线程的回复框中。
该提案可在 vscode.proposed.commentReveal.d.ts 中找到。
可归因的测试覆盖率
我们正在开发一个 API,该 API 使得能够按测试对测试覆盖率进行归因。这使用户能够查看哪些测试运行了哪些代码,从而过滤在编辑器中显示的覆盖率以及在 **测试覆盖率** 视图中显示的覆盖率。
查看 vscode#212196 以获取更多信息和更新。
工程
将 NLS 与 AMD 加载器解耦
在本里程碑中,我们开始删除 VS Code 中的核心本机语言支持 (NLS) 对我们提供的异步模块定义 (AMD) 加载器的依赖关系。我们未来的目标是使用 ECMAScript 模块 (ESM) 加载并完全放弃 AMD。为了朝这个方向取得进展,我们删除了我们的 AMD 加载器插件依赖关系。您不应该注意到任何行为上的差异,并且我们以前支持的所有翻译仍然在 Web 和桌面中都得到支持。
重要修复
感谢您
最后但并非最不重要的一点是,要向 VS Code 的贡献者表示衷心的 感谢。
问题跟踪
对我们的问题跟踪的贡献
- @gjsjohnmurray (John Murray)
- @IllusionMH (Andrii Dieiev)
- @shelvesdragon (Shelves The Dragon)
- @starball5 (starball)
- @spartanatreyu (Jayden Pearse)
- @RedCMD (RedCMD)
拉取请求
对 vscode
的贡献
- @bsShoham (Shoham Ben Shitrit):允许在自定义标签中使用
extname(N)
模板 PR #213033 - @CGNonofr (Loïc Mangeonjean):在配置文件更改时更新首选项标记 PR #214353
- @cobey (Cody Beyer)
- 更新文件以包含用于 py 和 js 的 ai 和向量数据库库 PR #216771
- 为 js 添加 auzre ai 包标记 PR #216857
- 将丢失的 azure ai py 包添加到标记中 PR #216861
- @dangerman (Anees Ahee):在开发容器中使用 node 20 PR #215434
- @francescov1 (Francesco Virga):添加递归切换 PR #212218
- @franciscacarneiro (Francisca Carneiro):修复 #182308:在搜索面板中按 PageUp 不会再导致布局发生变化。 PR #213067
- @gabritto (Gabriela Araujo Britto): [typescript-language-features] 基于区域的语义诊断,用于 TypeScript PR #208713
- @gjsjohnmurray (John Murray):在多提供者时间轴上正确翻页(修复 #213452) PR #213453
- @grgar (George Garside): 修复扩展市场自述文件中合并单元格在渲染时未合并的问题 PR #211666
- @hecticme (H. Ngọc Minh): fix: 点击时不显示活动栏的焦点边框 PR #217837
- @its-meny: fix: Markdown 中带有标题的引号无法正确渲染 PR #205227
- @jakebailey (Jake Bailey): 修复 tsc -p ./src,删除 no-default-lib PR #216760
- @jeanp413 (Jean Pierre): 修复在无服务器中配置任务可能会删除整个任务文件的问题 PR #215810
- @mohankumarelec: 添加 http.noProxy 设置,该设置与当前已存在的 NO_PROXY 环境变量值相同 PR #211958
- @mtbaqer (Mohammad Baqer): 使折叠文本可主题化 PR #173203
- @powersagitar: 为 C++20 模块接口单元添加文件扩展名 PR #214800
- @r-sargento (Rafael Sargento): 实现为 vscode 显示变量类型设置 (#_210258) PR #214315
- @rehmsen (Ole)
- 修复当 CellComment 被重复使用时,评论线程泄漏的问题。 PR #214589
- 修复 #214589 中的两个错误,修复了 #213535。 PR #218357
- @remcohaszing (Remco Haszing)
- 用
remove
替换removeChild
PR #213465 - 修复打开选择框 PR #214348
- 用
- @SimonSiefke (Simon Siefke)
- feature: 用 electron webUtils 替换 electron File.path PR #213031
- 在设置中完成颜色键时,填写当前值 PR #213451
- feature: 使 ripgrep 线程数可配置 PR #213511
- feature: 允许在设置中取消设置颜色主题值 PR #213512
- 修复设置编辑器内存泄漏 PR #216763
- fix: SettingTreeRenderers 中可能存在的内存泄漏 PR #216768
- fix: 在 SettingEnumRenderer 的 renderElement 函数中,将 disposable 添加到 elementDisposables 而不是 templateDisposables PR #216855
- @swordensen (Michael Sorensen): 修复 #182449: 在拖放事件期间按 Shift 键重新启用 webview PR #209211
- @Timmmm (Tim Hutt): 修复在终端中打开带有列号的链接 PR #210898
- @tisilent (xiejialong): 在 IFindInFilesArgs 中添加 showIncludesExcludes PR #212347
- @werat (Andy Hippo): 修复错误消息格式 PR #214900
- @xiaoxianBoy (Snoppy): chore: 修复错别字 PR #216562
- @y0sh1ne (y0sh1ne): 更新 language-configuration.json(修复 #215999) PR #216394
- @yutotnh (yutotnh): 添加在猜测编码时指定候选编码列表的功能 (#_36951) PR #208550
对 vscode-css-languageservice
的贡献
- @wkillerud (William Killerud): feat: 添加对 Sass
pkg:
导入器的支持 PR #384
对 vscode-extension-samples
的贡献
- @AllanJard (Allan Jardine): 修复 #863 - 自动启动语言 PR #864
对 vscode-html-languageservice
的贡献
- @johnsoncodehk (Johnson Chu): 对
voidElements
进行延迟评估 PR #187
对 vscode-languageserver-node
的贡献
- @remcohaszing (Remco Haszing): 使用客户端 ID 作为诊断收集的回退 PR #1445
对 vscode-python-tools-extension-template
的贡献
- @caelean (Caelean Barnes): 在 README 中一致地引用文件路径 PR #208
对 node-jsonc-parser
的贡献