2023 年 6 月(版本 1.80)
更新 1.80.1:此更新解决了以下问题。
更新 1.80.2:此更新解决了此安全问题。
下载:Windows:x64 Arm64 | Mac:通用 Intel silicon | Linux:deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 2023 年 6 月版。此版本包含许多我们希望您喜欢的新功能,其中一些主要亮点包括
- 辅助功能改进 - 辅助功能视图,以获得更好的屏幕阅读器支持,Copilot 音频提示。
- 更好的编辑器组和选项卡大小调整 - 设置最小选项卡大小,避免不必要的编辑器组大小调整。
- 收缩和扩展选择时跳过子词 - 控制是否对选择使用驼峰式大小写。
- 终端图像支持 - 直接在集成终端中显示图像。
- 用于 mypy 和 debugpy 的 Python 扩展 - 用于 VS Code 中的 Python 类型检查和调试。
- 通过隧道远程连接到 WSL - 使用隧道连接到远程计算机上的 WSL 实例。
- 预览:GitHub Copilot 创建工作区/笔记本 - 快速搭建项目和笔记本。
- 新的 VS Code 中 C# 文档 - 了解使用 C# Dev Kit 扩展进行 C# 开发。
如果您想在线阅读这些发行说明,请访问 Updates 上的 code.visualstudio.com。
Insiders: 想要尽快试用新功能吗?您可以下载每晚构建的 Insiders 版本,并在最新更新可用时立即试用。
辅助功能
辅助功能视图
新命令打开辅助功能视图 (⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2)) 允许屏幕阅读器用户逐字符、逐行检查内容。当悬停或聊天面板响应处于焦点时调用此命令。
辅助功能帮助改进
新命令打开辅助功能帮助 (⌥F1 (Windows Alt+F1, Linux Shift+Alt+F1)) 根据当前上下文打开帮助菜单。它目前适用于编辑器、终端、笔记本、聊天面板和内联聊天功能。
禁用辅助功能帮助菜单提示,并从帮助菜单中打开其他文档(如果有)。
笔记本的辅助功能帮助
为笔记本添加了一个新的辅助功能帮助菜单,以提供有关编辑器布局以及导航和与笔记本交互的信息。
聊天音频提示
现在为 GitHub Copilot 聊天体验提供了音频提示,可以通过 audioCues.chatRequestSent
、audioCues.chatResponsePending
和 audioCues.chatResponseReceived
启用。
聊天辅助功能改进
聊天响应会在传入后立即提供给屏幕阅读器,并且内联和聊天面板辅助功能帮助菜单包含有关预期内容以及如何与每个功能交互的更详细信息。
设置编辑器替代文本改进
设置编辑器(可通过首选项:打开设置 (UI) 命令访问)在使用屏幕阅读器导航时,现在不那么冗长。特别是,设置范围切换器会宣布范围的实际名称,而不是文件路径,并且已清理设置描述替代文本,使其不包含原始 Markdown 格式。
工作台
预览视频的自动播放和循环
您现在可以为内置视频文件预览启用视频自动播放和循环。相关设置是
mediaPreview.video.autoPlay
— 启用视频自动播放。自动播放的视频会自动静音。mediaPreview.video.loop
— 启用视频循环播放。
这些设置默认情况下处于关闭状态。
编辑器为只读时提供更多帮助
随着 VS Code 上个里程碑中 只读模式 的引入,编辑器可能由于工作区配置而变为只读。
在此里程碑中,我们增强了当您尝试在只读编辑器中键入时编辑器中的通知消息,并在某些情况下提供了更改 files.readonly
设置的链接。
默认文件对话框位置
新的设置 files.dialog.defaultPath
可以配置文件对话框(例如,在打开或保存文件或文件夹时)打开时应显示的默认位置。仅当没有其他已知位置时,才使用此默认值作为后备,例如在空的 VS Code 窗口中。
禁用双击选项卡时最大化编辑器组
新的设置 workbench.editor.doubleClickTabToToggleEditorGroupSizes
禁用了通过双击该组的选项卡将编辑器组的大小从最大化切换为还原。
控制固定宽度选项卡的最小宽度
新的设置 workbench.editor.tabSizingFixedMinWidth
控制当 workbench.editor.tabSizing
设置为 fixed
时选项卡的最小大小。有关固定选项卡宽度的更详细说明,请参见 1.79 发行说明。
编辑器组拆分大小调整更改为“自动”
名为 auto
的 workbench.editor.splitSizing
设置的新值是新的默认值。在此模式下,仅当没有编辑器组被调整大小时,拆分编辑器组才会将可用大小均匀分配给所有编辑器组。否则,拆分编辑器组的空间将平分并放置在新编辑器组中。
此更改的目的是在您拆分时不要破坏您创建的布局,但仍保留以前的默认行为,即均匀分配大小。
搜索 .gitignore 排除行为
当 search.useIgnoreFiles
设置为 true
时,现在无论工作区是否初始化为 Git 存储库,都将遵守工作区的 .gitignore
。
评论的最大高度
设置 comments.maxHeight
允许您禁用对评论的最大高度限制,例如使用 GitHub Pull Requests and Issues 扩展时为拉取请求显示的评论。
排查 VS Code 中的问题
命令面板中有一个新命令帮助:排查问题,以帮助您排查 VS Code 中的问题。启动的工作流程可帮助您使用特殊的排查配置文件和 VS Code 的 扩展分段 功能来确定问题的原因。扩展分段将在您指示问题是否重现时,以二进制搜索方式启用和禁用您安装的扩展。这缩小了导致问题的扩展范围,并帮助您在报告问题时提供正确的信息。
禁用 Chromium 沙盒
如果您遇到必须以提升的用户身份启动 VS Code 桌面的情况,例如您在 Linux 上使用 sudo
启动 VS Code,或者在 Windows 上的 AppLocker 环境中以管理员身份启动 VS Code,则需要使用 --no-sandbox --disable-gpu-sandbox
命令行选项启动 VS Code,以使应用程序按预期工作。
根据 问题 #184687 中的反馈,现在有两个新设置,以便在您需要禁用 Chromium 沙盒时更轻松
-
新的命令行选项
--disable-chromium-sandbox
用于禁用应用程序中所有进程的 Chromium 沙盒。此新选项可以用作--no-sandbox --disable-gpu-sandbox
的替代项。此选项适用于运行时在未来版本中可能添加的任何新的进程沙盒。 -
要持久禁用跨启动的 Chromium 沙盒,请执行以下操作
- 打开命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P))。
- 运行首选项:配置运行时参数命令。
- 此命令打开一个
argv.json
文件以配置运行时参数。您可能会在那里看到一些默认参数。 - 添加
"disable-chromium-sandbox": true
。 - 重启 VS Code。
注意: 除非您遇到问题,否则不要使用此设置!
编辑器
收缩和扩展选择时跳过子词
现在可以将扩展和收缩选择命令配置为跳过子词。这通过 editor.smartSelect.selectSubwords
设置完成。默认情况下,会选择子词,但现在可以禁用此功能。
true
-> Co|
deEditor 选择[Code]Editor
,然后选择[CodeEditor]
false
-> Co|
deEditor 选择[CodeEditor]
当您频繁地将扩展和收缩选择与多个光标以及在异构词上一起使用时,此设置会派上用场。
改进了 JSX/TSX 中 CSS 模块的 Emmet 支持
Emmet 支持用于 JSX/TSX 文件的一组新缩写。通过在 JSX 或 TSX 文件中键入 ..test
并展开缩写,将添加行 <div styleName={styles.test}></div>
。
可以使用 emmet.syntaxProfiles
设置配置属性名称和值前缀。通过将 emmet.syntaxProfiles
设置配置为如下所示
"emmet.syntaxProfiles": {
"jsx": {
"markup.attributes": {
"class*": "className",
},
"markup.valuePrefix": {
"class*": "myStyles"
}
}
}
然后,在 JSX 或 TSX 文件中展开缩写 ..test
,您将获得缩写 <div className={myStyles.test}></div>
。
可调整大小的内容悬停
现在可以调整内容悬停控件的大小。您可以悬停在控件边框上并拖动窗格来更改悬停的大小。
终端
图像支持
终端中的图像(在上个版本中预览)现在默认启用。终端中的图像通常通过将图像像素数据编码为文本来工作,该文本通过特殊的转义序列写入终端。当前支持的协议是 sixel 和 iTerm 首创的内联图像协议。
要手动测试图像,您可以从 libsixel 存储库下载并 cat
一个 .six
示例文件
或者将 imgcat python 包或 imgcat 脚本与 .png、.gif 或 .jpg 文件一起使用
可以通过设置禁用此功能
"terminal.integrated.enableImages": false
多行和范围链接格式
现在支持新的链接格式,包括需要向上扫描才能找到文件的链接以及具有范围(行到行或字符到字符)的链接。
-
@@ git 范围链接
-
OCAML 的 Dune 样式范围链接
-
ESLint 样式多行链接
-
Ripgrep 样式多行链接
已删除已弃用的 shell 和 shellArgs 设置
设置 terminal.integrated.shell.*
和 terminal.integrated.shellArgs.*
已被 终端配置文件 替换一年多,并且刚刚被删除。如果您仍在使用旧的 shell
和 shellArgs
设置,则这是一个之前/之后示例,可帮助进行迁移
// Before
{
"terminal.integrated.shell.windows": "pwsh.exe",
"terminal.integrated.shellArgs.windows": ["-Login"],
"terminal.integrated.shell.osx": "bash",
"terminal.integrated.shellArgs.osx": ["-l"],
}
// After
{
"terminal.integrated.profiles.windows": {
"PowerShell Login": {
// Source is a special property that will use VS Code's logic to detect
// the PowerShell or Git Bash executable.
"source": "PowerShell",
"args": ["-Login"],
"icon": "terminal-powershell"
},
},
"terminal.integrated.profiles.osx": {
// This will override the builtin bash profile
"bash": {
"path": "bash",
"args": ["-l"],
"icon": "terminal-bash"
}
}
}
测试
终端输出支持
以前,测试结果视图中显示的测试输出始终显示在嵌入式文本编辑器中。这剥夺了它在终端中运行时可能具有的丰富样式,例如颜色、样式和符号。在此版本中,我们在真正的 xterm.js 终端中显示输出。
主题:Codesong(在 vscode.dev 上预览)
现在测试结果视图功能齐全,显示测试输出的命令已重定向为打开测试结果视图,而不是创建临时终端。
源代码管理
关闭存储库改进
过去,用户可以使用 Git:关闭存储库 命令或源代码管理视图中的 关闭存储库 操作来关闭存储库,但是某些操作(例如,从关闭的存储库打开文件)会重新打开关闭的存储库。在此里程碑中,我们进行了一些改进,因此每个工作区现在都会持久保存存储库已关闭的事实。用户可以使用 Git:重新打开已关闭的存储库... 命令重新打开已关闭的存储库。
笔记本
改进了远程开发的保存性能
以前,在 VS Code 的远程扩展中保存笔记本需要将整个笔记本发送到扩展主机,这对于大型笔记本或启用自动保存的慢速网络连接来说可能很慢。我们通过仅将对笔记本的更改发送到扩展主机来提高了性能,从而加快了笔记本的保存和执行速度。虽然此功能默认情况下仍处于禁用状态,但我们相信我们很快就能启用它。要试用它,请将 "notebook.experimental.remoteSave": true
添加到您的设置中。有关更多详细信息,您可以关注 问题 #172345。
笔记本全局工具栏重构
笔记本编辑器的全局工具栏已重写为采用工作台工具栏,从而允许用户更大程度地自定义工具栏操作。用户现在可以右键单击并从工具栏中隐藏操作。右键单击工具栏中的操作会显示隐藏该操作的选项,以及重置菜单并恢复隐藏的操作的选项。
工具栏继续适用于所有三种标签策略:always
、never
和 dynamic
。您可以通过设置 notebook.globalToolbarShowLabel
更改标签策略。
主题:Monokai Pro (Filter Ristretto)(在 vscode.dev 上预览)
交互式窗口备份和还原
Python 交互式窗口现在已与 热退出 功能完全集成,并在 VS Code 重新加载之间还原编辑器状态。interactiveWindow.restore
设置不再有任何效果,并且已被删除。
如果禁用了热退出,则在关闭 VS Code 时会出现提示,让您选择将编辑器状态另存为 .ipynb
文件。
_主题:Bearded Theme feat. Gold D Raynh(在 vscode.dev 上预览)
语言
Markdown 从预览复制图像
Markdown 预览中图像的新上下文菜单允许您从预览中复制图像并将其粘贴到 Markdown 编辑器中。复制图像时,预览编辑器必须处于焦点状态。
Markdown 将粘贴的 URL 格式化为 Markdown 链接
新的 markdown.editor.pasteUrlAsFormattedLink.enabled
设置(默认 false
)允许您将链接插入到 Markdown 编辑器中,这些链接会自动格式化为 Markdown 链接。如果您选择一些文本以替换为粘贴的链接,则所选文本将自动成为链接的标题。如果没有选择文本,则将有一个默认链接标题。此功能适用于外部浏览器链接以及工作区内的文件。
您必须启用 editor.pasteAs.enabled
设置才能使此新设置生效。
远程开发
远程开发扩展允许您使用 Dev 容器、通过 SSH 或 远程隧道 的远程计算机,或 适用于 Linux 的 Windows 子系统 (WSL) 作为功能齐全的开发环境。
您可以在 远程开发发行说明中了解有关新扩展功能和错误修复的信息。
远程菜单
在此里程碑中,我们更新了远程菜单,其中包含帮助您快速安装和开始使用远程连接(SSH、远程隧道、GitHub Codespaces 等)的条目,方法是安装必要的扩展。欢迎页面上还有一个 连接到... 启动条目,以帮助您从 VS Code 桌面开始使用远程连接。
我们还在 vscode.dev 上的欢迎页面上更新了一个启动条目,以连接到远程隧道。
WSL over Tunnels
在上一次迭代中,我们预览了通过 远程隧道 连接到 WSL。此功能在此迭代中现在稳定。如果您在安装了 WSL 的 Windows 计算机上运行远程隧道,则可以选择直接从远程资源管理器连接到 WSL。
主题:Codesong(在 vscode.dev 上预览)
此功能现在在 VS Code 桌面以及 vscode.dev 上均可使用。如果您已经在 Windows 设备上运行隧道,请确保将 VS Code 更新到最新版本以启用此功能。
扩展贡献
GitHub Copilot
我们已在聊天视图中引入了仅预览的斜杠命令,以帮助您创建项目和笔记本,并在工作区中搜索文本。
注意:要访问聊天视图、内联聊天和斜杠命令(例如
/search
、/createWorkspace
),您需要安装 GitHub Copilot Chat 扩展。
创建工作区
您可以使用 /createWorkspace
斜杠命令要求 Copilot 为流行的项目类型创建工作区。Copilot 将首先为您的请求生成目录结构。
然后,您可以使用 创建工作区 按钮创建项目目录并将其作为新工作区打开。
创建笔记本
您可以使用 /createNotebook
斜杠命令要求 Copilot 根据您的要求创建 Jupyter 笔记本。Copilot 将根据您的要求生成笔记本的大纲。
然后,您可以使用 创建笔记本 命令创建笔记本,并根据建议的大纲填写代码单元格。
生成搜索参数
您可以要求 Copilot 自动填充工作区搜索中的搜索参数。为此,请使用 /search
命令,后跟您要在文本中查找的内容的描述。
可以通过将 github.copilot.advanced
设置配置为如下所示来启用这些预览斜杠命令
"github.copilot.advanced": {
"slashCommands": {
"createWorkspace": true,
"createNotebook": true,
"search": true
}
}
Copilot YouTube 播放列表
在 YouTube 上的 VS Code Copilot 系列中,有一个关于 PowerShell 版 Copilot 的新专题。如果您错过了该系列,您还可以找到其他 特定于语言的 讲座和关于使用 Copilot 进行开发时 有效提示 的指导。
Python
Mypy 扩展
现在有一个 Mypy 类型检查器 扩展,该扩展使用 mypy 为 Python 提供类型检查支持,可以作为预发布版本在预览版中使用。这个新扩展为您的整个代码库提供错误和警告,而不仅仅是当前文件。它还使用 dmypy 进行更快的类型检查。
如果您对此新扩展有任何问题或希望提供反馈,可以在 Mypy 扩展 GitHub 存储库中提交问题。
Debugpy 扩展
当 Python 扩展中删除对 Python 2.7 和 Python 3.6 的支持时,我们收到了许多用户的反馈,他们无法将其代码库升级到最新版本的 Python,并且失去了使用最新版本的 Python 扩展调试其应用程序的能力。为了解决这个问题,我们创建了一个单独的 Python 调试器扩展,名为 Debugpy。通过将调试器与 Python 扩展分开,您最终将能够使用最新版本的 Python 扩展,同时使用旧版本的调试器(通过禁用 扩展自动更新)。此扩展作为预发布版本在预览版中提供,使用最新版本的 debugpy。我们计划在不久的将来支持旧版本的 debugpy。
试用一下,如果一切正常,请告诉我们。我们的计划是弃用内置调试功能,而支持此单独的扩展。
Pylance 本地化
Pylance 扩展现在已本地化!这意味着如果您安装了 语言包 并将其设置为在 VS Code 中处于活动状态,则扩展中的设置、命令和其他文本将翻译为您首选的语言。
测试发现和运行重写
本月,我们将继续推出我们的测试重写作为一项实验。提醒一下,此重写重新设计了扩展中 unittest 和 pytest 的测试发现和执行背后的架构。重写目前对 100% 的 VS Code Insiders 用户处于活动状态,并将于本月开始稳定推广。重写将很快被采用,但目前用于选择加入和退出的设置 pythonTestAdapter
仍然存在。
pytest 和 unittest 的动态运行结果
随着新实验的推出,pytest 和 unittest 的动态运行结果也随之推出。以前,我们的测试结果仅在所有测试运行完成后才返回,但现在有了此功能,测试结果将单独交付,使您可以实时查看测试通过和失败。
第三方库的索引持久性
Pylance 对环境中安装的第三方库执行索引,以启用 IntelliSense 功能,例如自动完成、自动导入、代码导航等。以前,Pylance 每次在 VS Code 中打开工作区时都会索引这些库。现在,Pylance 持久保存这些库的索引,从而减少了重复索引过程的需求。
弃用对 Python 3.7 的支持
Python 3.7 于 2023-06-27 达到生命周期结束 (EOL)。因此,Python 扩展对 Python 3.7 的官方支持将在三个月后的扩展 2023.18 版本(对应于 VS Code 2023 年 9 月版本)中停止。目前没有积极删除对 Python 3.7 支持的计划,因此我们预计 Python 扩展在可预见的未来将继续非官方地与 Python 3.7 一起工作。
由于 Python 的所有其他版本现在都采用年度发布节奏,我们预计一旦 Python 版本在下一个日历年的第一个 Python 扩展版本中达到 EOL,就会停止对其的官方支持。例如,Python 3.8 计划于 2024 年 10 月达到 EOL,因此 2025 年的第一个 Python 扩展版本将停止官方支持。
GitHub Pull Requests and Issues
在 GitHub Pull Requests and Issues 扩展方面取得了更多进展,该扩展允许您处理、创建和管理拉取请求和问题。
- 最多可以在拉取请求中加载 1000 个评论线程(之前为 100 个)。
- 用于只读消息的新 VS Code API 提案允许您直接从未检出的差异中检出 PR。
- 树和评论中的头像是圆形而不是方形。
查看扩展的 0.68.0 版本的更新日志,以了解其他亮点。
预览功能
TypeScript 5.2 支持
此更新包括对即将发布的 TypeScript 5.2 版本的支持。查看 TypeScript 5.2 迭代计划,了解有关 TypeScript 团队当前正在进行的工作的更多详细信息。即将推出的工具亮点包括
- 新的 内联常量 重构。
- 新的 移动到文件 重构,可让您将符号移动到现有文件中。
要开始使用 TypeScript 5.2 每晚构建版本,请安装 TypeScript Nightly 扩展。
新的差异编辑器
在此迭代中,我们完成了差异编辑器的重写。重写使我们能够添加一些新功能、提高性能并修复多个错误。
要试用新的差异编辑器,请将 "diffEditor.experimental.useVersion2": true
添加到您的设置中。新的差异编辑器仍处于实验阶段,但最终将在未来的更新中取代当前的差异编辑器。
所有呈现的功能都需要新的差异编辑器。
折叠未更改的区域
使用 diffEditor.experimental.collapseUnchangedRegions
启用在新差异编辑器中隐藏未更改的区域。当查看包含大量未更改代码的大型差异时,此功能很有用。
可以拖动或单击隐藏行块的边框以显示底部或顶部的代码。
显示插入/删除标记
插入/删除标记指示在一行中插入或删除单词的位置,当一行同时包含插入和删除时,这尤其有用。
使用 diffEditor.experimental.showEmptyDecorations
启用/禁用插入和删除标记。
改进的装饰
整行删除/插入现在具有全宽背景颜色。这大大减少了噪音。
这是新差异编辑器如何突出显示更改的示例
这是旧差异编辑器如何呈现装饰的示例(请注意右侧的第 57 行没有全宽背景颜色)
同步差异更新
在新差异编辑器中键入时,更改会立即以启发式方式应用,并在延迟后触发异步差异计算。在旧差异编辑器中,更改不会立即应用,从而在键入时导致可见的闪烁。
新 - 差异在键入时立即更新
旧 - 有一些可见的闪烁
移动检测
此实验性功能检测文件内移动的代码块。使用 diffEditor.experimental.showMoves
将其打开。目前,仅检测到简单的移动,但我们计划在未来改进此功能。一旦选择了移动的代码块,源位置和目标位置将对齐,并显示它们之间的差异。
由于移动检测仍处于实验阶段,预计未来更新中会有重大更改。
扩展编写
SecretStorage API 现在使用 Electron API 而不是 keytar
SecretStorage API 多年来一直是存储密码、访问令牌等机密的推荐方法。在幕后,它一直在使用 keytar,这是一个用于在操作系统密钥链中存储机密的抽象层。由于 keytar 的弃用和存档,我们寻找了该问题的其他解决方案,特别是从我们的运行时 Electron 中寻找解决方案。
在此版本中,我们已开始从 keytar 迁移到 Electron 的 safeStorage API。此切换对您应该是透明的,因为机密是从 keytar 检索的,并通过 Electron 的 safeStorage
API 还原。将来,我们将删除此迁移,以便我们可以完全删除对 keytar 的依赖。
keytar 弃用计划
长期以来,VS Code 一直严重依赖 keytar,这是一个用于在操作系统密钥链中存储机密的抽象层。此外,我们在 VS Code 中包含了一个 keytar shim,扩展在引入 SecretStorage API 之前依赖于该 shim。keytar 本身已正式存档,并且不再维护... 为了通过不依赖于存档的软件来存储机密来促进良好的安全实践,我们正在制定一项计划,以从 VS Code 中删除此 shim。
我们已经直接联系了仍在使用此 keytar shim 的流行扩展的作者,他们正在努力摆脱它。我们想在这里以及在 我们的 GitHub 讨论中传达这一点,以便我们最大限度地减少因这一更改而造成的中断,对于那些我们没有直接联系的人。我们知道这不是最好的消息,因为我们也做了大量工作来删除我们对 keytar 的依赖,但我们相信这是确保扩展使用安全 API 的正确做法。
如果您在扩展中直接使用 keytar,则有几个选项供您考虑
- (推荐) 使用 VS Code 在 ExtensionContext 上提供的 SecretStorage API。此 API 是跨平台的,并且适用于 VS Code 支持的所有平台。它也由 VS Code 团队维护,将继续维护,并且多年来一直是 VS Code API 的一部分。
- (不推荐) 您可以将 keytar 模块与您的扩展捆绑在一起。请记住,keytar 是一个本机节点模块,这意味着您需要为您要支持的每个平台 发布特定于平台的扩展。
时间线:当前计划在 八月初 从 VS Code Insiders 中移除此 shim,这意味着 2023 年 9 月 的稳定版将是第一个不带 shim 的版本。
此项工作的进度在 issue #115215 中跟踪,如果您有任何问题,请随时在我们的 GitHub Discussions 中提出。
改进了本地文件的 vscode.fs.writeFile 性能
当您使用 vscode.fs.writeFile
API 将数据写入文件时(您应该这样做!),对扩展主机本地文件的写入操作现在将更快地完成。
以前,扩展主机将写入操作委托给 VS Code 客户端执行,但现在该操作直接在扩展主机内部执行,从而节省了往返时间。
树形复选框 API
TreeItem
checkboxState
API 已最终确定。默认情况下,具有复选框的树形项目将由 VS Code 管理其选中状态。可以通过将 TreeViewOptions
属性 manageCheckboxStateManually
设置为 true
来更改此行为。当设置 manageCheckboxStateManually
时,扩展负责管理父复选框和子复选框的选中和取消选中状态。
EnvironmentVariableCollection.description
这个新的 API 允许为 EnvironmentVariableCollection
指定描述,该描述在终端选项卡悬停时向用户显示,以解释更改的具体内容。
// Example of what the Git extension could use
context.environmentVariableCollection.description =
'An explanation of what the environment changes do';
您可以在内置的 Git 扩展中看到 API 的实际应用,该扩展现在描述了更改的作用
建议的 API
每个里程碑都附带新的提案 API,扩展作者可以试用它们。与往常一样,我们希望收到您的反馈。以下是试用提案 API 的步骤
- 查找您想要试用的提案,并将其名称添加到
package.json#enabledApiProposals
。 - 使用最新的 @vscode/dts 并运行
npx @vscode/dts dev
。它会将相应的d.ts
文件下载到您的工作区。 - 您现在可以针对该提案进行编程。
您不能发布使用提案 API 的扩展。下一个版本中可能会有重大更改,我们绝不希望破坏现有扩展。
文件系统提供程序的只读消息
当您 registerFileSystemProvider
时,您可以提供只读消息,而不是简单地将文件系统标记为只读。当用户尝试编辑来自该提供程序的文件时,编辑器中会显示以下消息。
工程
导出符号的名称修饰
去年,我们开始修饰私有属性和方法的名称,以减小我们的代码大小。现在,我们也修饰导出的符号名称,这进一步减小了我们主工作台 JavaScript 文件的大小 8%。
我们的名称修饰构建步骤现在总共节省了核心 VS Code 和我们内置扩展中 3.9 MB 的 JavaScript。这种减少加快了下载速度,减小了 VS Code 的安装大小,并加快了每次启动 VS Code 时的代码加载速度。
Node.js、内置扩展和 Electron 的校验和完整性检查
作为我们构建的一部分,我们从其他位置消耗二进制资源,例如用于远程服务器的 Node.js、来自 Marketplace 的内置扩展以及 Electron。在这个里程碑中,我们通过针对已签入 vscode
GitHub 存储库的 SHA256 校验和进行验证,来确保这些二进制资源的完整性。
新的 Linux 性能机器
我们非常重视 VS Code 的性能,尤其是打开文本编辑器并看到闪烁光标所花费的时间。为了监控该时间,我们在 Windows 和 macOS 上运行每日性能测试。
在这个里程碑中,我们向测试集添加了一台 Linux 机器,报告了 Ubuntu 22 上的启动时间。
事件发射器优化
VS Code 在我们的整个代码库中广泛使用事件发射器。我们在这个迭代中优化了这些发射器,这稍微提高了启动时间和内存使用率。
您可以在 issue #185789 中阅读有关此改进的更多信息。
终端 pty 主机改进
“Pty Host”进程管理终端启动的所有 shell 进程,并进行了多项改进
- 性能
- 现在有了一个与 pty 主机进程直接通信的通道。由此带来的最显著变化是减少了终端的输入延迟。
- 通过减少不必要的调用并在恢复多个终端时并行化任务,提高了重新连接(重新加载窗口)和进程恢复(重启)的性能。
- 我们现在收集终端启动和重新连接的性能指标,可以通过 Developer: Startup Performance 命令查看。
- 诊断
- 所有与终端相关的日志都已从 Window 输出通道移至新的 Terminal 输出通道。
- 当跟踪日志级别为 Pty Host 输出通道时,终端将记录所有 RPC 调用,这将有助于诊断终端问题。
文档
新的 C# 主题
您可以通过一套新的 C# 文章,使用 C# Dev Kit 扩展,在 VS Code 中学习 C# 开发。您将在那里找到解释如何 入门 的主题,描述扩展的语言功能(代码导航、重构、调试),以及辅助开发生命周期,例如 项目 和 包 管理。
Glob 模式参考
VS Code 有其自己的 glob 模式 实现,它用于诸如搜索文件和文件夹过滤等功能,让您自定义文件资源管理器视图等。要了解详细信息,您可以查看新的 Glob 模式参考。
值得注意的修复
感谢
最后但同样重要的是,衷心感谢 VS Code 的贡献者。
问题跟踪
对我们的问题跟踪的贡献
- @gjsjohnmurray (John Murray)
- @starball5 (starball)
- @IllusionMH (Andrii Dieiev)
- @ArturoDent (ArturoDent)
拉取请求
对 vscode
的贡献
- @AlbertHilb: 向 markdown-math 配置添加
macros
条目 PR #180458 - @antonioprudenzano (Antonio Prudenzano): 功能:#132598 在 Windows 和 macOS 上运行翻译版本时添加通知 PR #181191
- @cadinsl: 编辑了用户和工作区选项卡,仅显示名称以提高可访问性 #184530 PR #184627
- @CGNonofr (Loïc Mangeonjean): 从
array.some
回调中删除副作用 PR #184919 - @ChaseKnowlden: 杂项:更新 inno setup 中的最小可安装版本 PR #175818
- @cmtm (Chris Morin): 即使不在 git 存储库中也遵守 gitignore 文件 PR #183368
- @gjsjohnmurray (John Murray)
- 实现
files.dialog.defaultPath
设置(修复 #115730)PR #182908 - 在面板标题栏中正确显示终端图标(修复 #183679)PR #183680
- 允许从 Simple Browser 中查看的页面下载 PR #185117
- 实现
- @hermannloose (Hermann Loose): 修复注释面板树视图图标的颜色定义 PR #185654
- @hsfzxjy: 修复 #185858:添加选项以启用/禁用双击选项卡标题时编辑器组最大化 PR #185966
- @iifawzi (Fawzi Abdulfattah): 功能:添加对自动播放和循环播放视频的可选支持 PR #184758
- @InigoMoreno (Iñigo Moreno): 更新 argv.ts 以允许空类别 PR #181311
- @jacekkopecky (Jacek Kopecký): 添加 tabSizingFixedMinWidth 设置 (#_185766) PR #186058
- @jeanp413 (Jean Pierre)
- 修复
remote.autoForwardPortsSource
有时未从机器设置中遵守的问题 PR #184860 - 修复 xterm search addon 在浏览器中的 vscode 中加载两次的问题 PR #184922
- 修复
- @jhunt-scottlogic (Joshua Hunt): 测试资源管理器过滤器 UI PR #183192
- @jjaeggli (Jacob Jaeggli): 向编辑器查找小部件添加对话框角色 PR #172979
- @joshaber (Josh Abernathy): 修复隧道工厂抛出错误时删除隧道的问题 PR #186566
- @kevalmiistry (Keval Mistry): 修复:冲突操作栏与“完成合并”按钮重叠的问题 PR #184603
- @max06 (Flo): 恢复 fish 的 ShellIntegration (#_184659) PR #184739
- @r3m0t (Tomer Chachamu): 在 webviews 中添加 vscode-context-menu-visible 类 PR #181433
- @russelldavis (Russell Davis): 添加 smartSelect 忽略子词的选项 PR #182571
- @tisilent (xie jialong 努力鸭): 更新 gutterOffsetX 范围(dirtydiff,fold)PR #184339
- @weartist (Hans)
- 调整到正确的链接 PR #184011
- 修复 #182013 PR #184677
- 修复 #185051 PR #185431
- 修复 #153590 PR #185467
- 修复:#185359 PR #185718
- @yshaojun
- 修复:合并编辑器中列 1 处光标不可见的问题(#_183736) PR #184604
- 修复:内联完成未显示的问题(#_184108) PR #185215
对 vscode-emmet-helper
的贡献
- @iifawzi (Fawzi Abdulfattah): 修复:将连续的点标记为噪声并使 jinja 语法缩写无效 PR #80
对 vscode-livepreview
的贡献
- @toyobayashi (Toyo Li): 修复外部浏览器中的控制台行号 PR #503
对 vscode-pull-request-github
的贡献
- @SKPG-Tech (Salvijus K.): 修复在没有用户名可用时为空的问题 PR #4892