2024年6月(版本1.91)
更新 1.91.1:更新解决了这些问题。
下载: Windows: x64 Arm64 | Mac: 通用 Intel 硅 | Linux: deb rpm tarball Arm snap
欢迎来到2024年6月的Visual Studio Code发布版本。这个版本有很多更新,我们希望你会喜欢,其中一些主要亮点包括:
- 预览:即将到来的/已发出的更改图 - 在源控制视图中可视化即将到来的和已发出的更改。
- Python 环境 - 通过 python-environment-tools 增强的环境发现。
- 原生REPL中的智能发送 - 在原生REPL中流畅地运行代码块。
- GitHub Copilot 可扩展性 - VS Code 稳定版中提供 Chat 和语言模型 API。
- 预览:配置文件编辑器 - 在一个地方管理您的配置文件。
- 自定义标签 - 更多可变选项和对多个扩展的支持。
- TypeScript 5.5 - 对正则表达式和其他语言特性的语法检查。
- JavaScript 调试器 - 在调试 JavaScript 时检查被隐藏的变量。
如果您想在线阅读这些发行说明,请访问 更新 页面 code.visualstudio.com。 内部测试者: 想尽快尝试新功能吗?您可以下载 内部测试者 夜间构建版本,并在最新更新发布后立即尝试。
无障碍
编辑器悬停的无障碍视图
为了在编码时提高可访问性,无障碍视图和无障碍帮助菜单现在可以显示编辑器悬停信息的内容。根据悬停的聚焦部分,它们显示有关聚焦部分或整个悬停内容的信息。

链接下划线
为了使链接在工作区中更容易与普通文本区分开来,您可以启用该设置无障碍。下划线链接强调链接。

工作台
搜索
我们添加了一个新设置搜索.ripgrep.最大线程这使您能够限制 ripgrep 搜索引擎使用的线程数量。此设置无论搜索是否通过核心产品或扩展 API 使用均适用。
设置搜索.ripgrep.最大线程设置为非零值来配置线程数量。请谨慎操作,因为将此设置固定为特定值可能会使 ripgrep 变慢。
调整允许的编码以进行猜测
使用新的设置files.candidateGuessEncodings,您可以配置一组编码,这些编码在处理时应被考虑files.autoGuessEncoding已启用。配置的顺序决定优先级。此功能使您能够将可能检测到的编码限制为较小的集合,并将一种编码置于另一种编码之上。
配置文件编辑器预览
在这个里程碑中,我们引入了一个新的配置文件编辑器,使您能够从一个地方管理配置文件。此体验包括创建新配置文件、编辑和删除现有配置文件以及导入和导出配置文件以与他人分享。在创建新配置文件时,您可以预览配置文件并在保存之前进行自定义。配置文件编辑器还允许您使用特定配置文件打开新Windows,或设置配置文件为新Windows的默认配置文件。

配置文件编辑器作为实验性功能提供在 behind工作台.实验性.启用新配置文件界面设置。启用后,您可以通过Windows左下角的设置齿轮图标访问配置文件编辑器。

尝试一下,并告诉我们我们如何进一步改善这一体验。
带有配置文件菜单项的新Windows
除了配置文件编辑器,我们还向文件菜单添加了操作,以打开一个带有特定配置文件的新Windows。使用文件 > 带有配置文件的新Windows 菜单以打开一个带有特定配置文件的新Windows。

扩展安装选项
我们增加了更多的选项,以便在安装扩展时为您提供更多的灵活性:
- 安装一个不同步的扩展。
- 安装特定版本的扩展。以前,您必须先安装扩展的最新版本,然后才能选择特定版本。
这些操作在扩展视图的扩展上下文菜单中可用:

访问自定义标签中的文件扩展名
当您定义自定义标签时,您现在可以通过使用${文件扩展名(N)}语法。此外,${文件扩展名(N)}还支持负索引以按反向顺序捕获文件扩展名。要获取整个文件扩展名,请使用${extname}输入:.
例如,对于文件测试/编辑器测试.ts输入:
${filename}=>编辑器${extname}=>测试.ts${extname(0)}=>输入:ts${extname(1)}=>测试${extname(-1)}=>测试${extname(-2)}=>输入:ts
合并来自多个扩展的自定义标签模式
当两个扩展为该设置提供默认配置时工作台.编辑器.自定义标签.模式在他们的配置默认值贡献的模式被合并在一起。
|
|
| 扩展1的默认贡献 | 扩展2的默认贡献 |
|
| 生成的自定义标签图案 |
取消设置主题颜色
如果一个主题设置的颜色或边框是你不喜欢的,你现在可以使用默认将其恢复到原始值:
"workbench.colorCustomizations":{
"diffEditor.removedTextBorder":"default"
}
更改折叠占位符颜色
折叠占位符(省略号)现在可以使用颜色进行主题化。编辑器.折叠占位符前景输入:.
编辑器
保存时的代码操作
随着编辑器.保存时代码操作设置中,您可以配置一组代码操作,这些操作会在保存文件时自动应用,例如整理导入项。我们通过提供基于您的工作区文件和活动扩展的可用代码操作列表来改进了用于配置此设置的IntelliSense。
注意:请意识到虽然
真和假的在当前仍然是有效的配置,但将被弃用以 favor of明确的,总是,和从不。查看 保存文档的代码操作 以获取示例。
快速关闭只读文件状态
如果您已通过该文件配置为只读文件.只读包含设置,您现在可以快速从只读编辑器消息中切换 off 文件的只读状态。

源代码管理
收入/支出变化图预览
我们一直在探索使用一种替代的可视化方法来显示进入和离开的更改。这个里程碑包括一个实验性功能,该功能使用图表来可视化进入和离开的更改。图表包含当前分支、当前分支的上游分支和一个可选的基分支。图表的根是这些分支的公共祖先。
您可以通过使用来启用此新可视化scm.experimental.showHistoryGraph设置。尝试一下并告诉我们您的想法,同时我们会继续改进和扩展此可视化功能。

笔记本电脑
在文本选择中查找
The Notebook Find 控制现在具有“在选定内容中查找”功能,用于文本选择和单元格选择。此行为默认启用,并可通过控制栏中的按钮进行控制。根据您的选择上下文,切换此按钮将使查找查询限制在选定的一个或多个单元格或单元格内的行。
复制或打开上下文菜单中的文本输出
在笔记本中处理文本输出时,现在可以使用文本输出的上下文菜单来复制输出值或在新编辑器中打开输出。这个功能让审查大型流输出变得更加容易。
终端
支持复制和粘贴转义序列 (OSC 52)
操作系统命令 (OSC) 52 逃逸序列现在已支持。这可以被终端中运行的任何东西使用,但主要用途是剪贴板访问tmux输入:.
新的自定义字形
终端现在支持为分支、行号和锁定的Powerline符号自定义字形。像我们支持的其他自定义字形一样,这些符号在GPU加速启用时无需配置字体即可使用。

这些符号在调整字体大小、行高或字母间距时也能完美地与单元格一起缩放。

调试
JavaScript 调试器
JavaScript 调试器现在在悬停在它们上和内联值中显示被遮蔽变量的正确值(通过 调试内联值设置),基于程序的范围。

主题: Codesong (预览于 vscode.dev)
语言
TypeScript 5.5
我们现在包含 TypeScript 5.5。这个重要的更新带来了许多新的语言特性和工具改进。查看 TypeScript 5.5 博客文章 了解此版本的详细信息。
正则表达式语法检查
借助 TypeScript 5.5,我们现在可以报告许多 JavaScript 和 TypeScript 正则表达式字面量的语法错误。这包括未闭合的分组、不正确的后向引用或无效的转义等错误:


查看 TypeScript 5.5 博客文章以获取更多详细信息.
对扩展的贡献
GitHub Copilot
紧凑型内联聊天
内联聊天渲染现在更加紧凑,这使得更容易阅读和理解建议。我们还在通过 试验一种更具叙述性的按钮文本风格,您可以启用此功能。内联聊天实验性文本按钮输入:.

终端初始提示
终端中显示了一个新提示,以帮助发现内联聊天。

此提示仅在安装Copilot扩展且只有一个终端没有进行任何交互时显示。通过右键单击可以永久忽略该消息。第一次使用终端内联聊天后,该消息也会被忽略。
应用代码块
在聊天视图中的代码块上使用在编辑器中应用命令会使用语言模型来确定对当前编辑器应用更改的最佳方法。

Python
使用python-environment-tools发现Python环境
我们很高兴地介绍一个新工具,python-environment-tools,该工具旨在显著提高检测全局Python安装和Python虚拟环境的速度。这个工具使用Rust来确保快速和准确的发现过程。
我们目前正在测试这个新功能,将其与现有的支持并行运行,以评估Python扩展中的新发现性能。因此,您将看到一个名为的新日志通道。Python 定位器这显示了使用这个新工具的发现时间。
此增强是我们持续努力优化 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分析支持结构化文本输入:.

尝试此更改,并在Pylance GitHub 仓库中报告任何问题或反馈。
注意:此设置是实验性的,未来可能会被移除,当我们稳定此新功能并默认启用它时。
GitHub 拉取请求和问题
在GitHub Pull Requests扩展上取得了更多进展,该扩展使您能够处理、创建和管理拉取请求和问题。新功能包括:
- 提交日期显示在提交子树中,对于已检出的PRs。
- 众多的错误修复。
查看0.92.0版本的更新日志,了解其他亮点。
ESLint
ESLint 扩展现在支持 扁平配置文件格式。扩展仍然支持 eslintrc文件,你可以使用eslint使用扁平配置设置以控制使用哪种配置文件格式。
查阅ESLint扁平配置发布计划,以了解ESLint关于弃用和移除对eslintrc文件格式。
扩展编写
聊天和语言模型API
上个月,我们确定了允许扩展参与聊天和访问语言模型的API,但它们仅在VS Code Insiders中可用。在此次发布中,这些API现在完全在VS Code Stable中可用。
查看我们的公告博客文章,了解这些API的更多信息,并查看一些早期采用者如何使用它们。
处理对象设置的默认值
当多个扩展为相同的对象设置提供默认值时,这些默认值现在会被合并。这防止了扩展之间的冲突。
最终确定调试会话选项的测试运行应用程序编程接口
从测试运行中启动调试会话的扩展现在可以将该运行传递到调试会话选项当他们打电话时vscode.debug.startDebugging当通过时,生命周期操作(如重新启动调试会话)也会创建一个新的测试运行。
调试适配器协议
对 调试适配器协议 作出了几处显著的更改:
- 新返回值的表示
Scope.presentationHint = 返回值选项。 - 添加源位置到
评估请求。VS Code 实现了这一点,并在评估悬停和内联值时传递位置。
提议的API
语言模型的工具和函数
我们增加了一个API提案,该API能够启用工具或函数调用。API包含两个主要部分:
-
扩展程序注册一个“工具”的能力。工具是供语言模型使用的一段功能。例如,读取文件的Git历史记录。
-
语言模型支持工具的机制,例如:扩展在请求时传递工具,语言模型请求工具调用,以及扩展将工具调用的结果传达回来。
该提案可以找到 vscode.proposed.lmTools.d.ts.
注意:该 API 仍在积极开发中,情况可能会发生变化。同时,也预计 VS Code 会配备合理的默认工具。
认证获取会话现在是获取账户
虽然我们支持多账户身份验证提供商,但一直缺失的能力是获取所有会话并采取针对特定会话的行动。之前,我们有一个获取会话API提案试图解决这个问题,但在实验和使用流行的认证库的灵感后,我们采取不同的方法来解决这个问题。
我们离开了之前提议的获取会话API 到一个将“账户”和“会话”概念分开的东西。
希望消耗认证会话的扩展作者可以运行以下代码以获取认证会话账户信息用户登录的账户:
常量 账户 = vscode.认证.获取账户('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,可以按测试逐个跟踪测试覆盖情况。这使用户可以看到哪些测试运行了哪些代码,过滤器可以同时过滤编辑器中显示的覆盖情况和测试覆盖视图中的覆盖情况。
查看 vscode#212196 以获取更多信息和更新。
工程
将 NLS 从 AMD 加载器中解耦
这个里程碑,我们开始使用我们提供的异步模块定义(AMD)加载器来移除 VS Code 对核心本地语言支持(NLS)的依赖。我们未来的目的是使用 ECMAScript 模块(ESM)加载,并完全放弃 AMD。为了朝着这个方向前进,我们移除了我们的 AMD 加载器插件依赖。您不应注意到任何行为上的差异,我们以前支持的所有翻译在网页和桌面版本中仍然得到支持。
重要修复
谢谢
最后但同样重要的,向VS Code的贡献者们致以深深的谢意。
问题跟踪
对我们的问题跟踪的贡献:
- @gjsjohnmurray (约翰·默里)
- @IllusionMH (安德烈·迪耶耶夫)
- @架子龙 (架子龙)
- @星弹5 (星弹)
- @spartanatreyu (杰登·皮尔斯)
- @RedCMD (红命令)
拉取请求
贡献于Visual Studio Code输入:
- @bsShoham (Shoham Ben Shitrit):允许使用
扩展名(N)自定义标签中的模板 PR #213033 - @CGNonofr (Loïc Mangeonjean):在更改个人资料时更新偏好标记PR #214353
- @cobey (科迪·拜尔)
- 更新文件以包含py和js的ai和向量db库PR #216771
- 添加auzre ai包标记用于jsPR #216857
- 将缺失的 azure ai py 包添加到标记中PR #216861
- @危险人 (Anees Ahee):在开发容器中使用节点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 (约翰·默里):页面在多供应商时间线上正确(修复 #213452)PR #213453
- @grgar (George Garside):修复合并表格单元格在扩展市场README渲染中未合并的问题PR #211666
- @hecticme (H. Ngọc Minh):修复:点击时不要显示活动栏的聚焦边框PR #217837
- @its-meny:修复: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 (穆罕默德·巴克尔):使 collapsedText 可以成为主题 PR #173203
- @powersagitar:添加 C++20 模块接口单元的文件扩展名 PR #214800
- @r-sargento (Rafael Sargento):为 vscode 实现显示变量类型设置 (#_210258) PR #214315
- @rehmsen (奥莱)
- 修复CellComment重用时泄漏的评论线程。PR #214589
- 修复 #214589 中的两个错误,解决 #213535。PR #218357
- @remcohaszing (雷姆科·哈兹ing)
- 替换
移除子元素与移除公关 #213465 - 修复打开选择框PR #214348
- 替换
- @SimonSiefke (西蒙·西夫克)
- 功能:将 electron File.path 替换为 electron webUtilsPR #213031
- 在设置中完成颜色键时,填写当前值PR #213451
- 功能:使 ripgrep 线程数可配置PR #213511
- 功能:允许在设置中取消设置颜色主题值PR #213512
- 修复设置编辑器内存泄漏PR #216763
- 修复:在SettingTreeRenderers中可能存在的内存泄漏PR #216768
- 修复:在 SettingEnumRenderer 的 renderElement 函数中将 disposable 添加到 elementDisposables 而不是 templateDisposablesPR #216855
- @swordensen (Michael Sorensen):修复 #182449:在拖放事件中按 Shift 重新启用网页视图PR #209211
- @Timmmm (Tim Hutt):修复在终端中用列号打开链接PR #210898
- @tisilent (xiejialong):在IFindInFilesArgs中添加showIncludesExcludesPR #212347
- @werat (Andy Hippo):修正错误信息格式PR #214900
- @xiaoxianBoy (Snoppy):琐事:修正错别字PR #216562
- @y0sh1ne (y0sh1ne):更新 language-configuration.json(修复 #215999)PR #216394
- @yutotnh (yutotnh):添加在猜测编码时指定候选编码列表的功能 (#_36951) PR #208550
贡献于vscode-css-languageservice输入:
- @wkillerud (威廉·Killerud):功能:增加对Sass的支持
包:进口商 PR #384
贡献于vscode扩展示例输入:
- @AllanJard (Allan Jardine):修复 #863 - 自动开始语言 PR #864
贡献于vscode-HTML-语言服务输入:
- @johnsoncodehk (Johnson Chu)的惰性求值
空元素公关 #187
贡献于vscode语言服务器节点输入:
- @remcohaszing (Remco Haszing):使用客户端ID作为诊断收集的备用方案PR #1445
贡献于vscode-python-tools-extension-template输入:
- @caelean (凯利恩·巴恩斯):在README中一致地引用文件路径PR #208
贡献于节点-jsonc-解析器输入: