2023 年 6 月 (版本 1.80)
版本 1.80.1 更新:此更新解决了这些 问题。
版本 1.80.2 更新:此更新解决了此安全 问题。
下载:Windows: x64 Arm64 | Mac: Universal Intel silicon | Linux: deb rpm tarball Arm snap
欢迎使用 2023 年 6 月发布的 Visual Studio Code。此版本包含许多我们希望您喜欢的新功能,以下是一些主要亮点:
- 可访问性改进 - 可访问视图提供更好的屏幕阅读器支持,Copilot 音频提示。
- 改进的编辑器组和标签页大小调整 - 设置最小标签页大小,避免不必要的编辑器组大小调整。
- 展开选区时跳过子词 - 控制是否对选区使用驼峰命名法。
- 终端图像支持 - 直接在集成终端中显示图像。
- mypy 和 debugpy 的 Python 扩展 - 用于在 VS Code 中进行 Python 类型检查和调试。
- 通过 Tunnels 连接到 WSL - 使用 Tunnels 连接到远程机器上的 WSL 实例。
- 预览:GitHub Copilot 创建工作区/Notebook - 快速构建项目和 Notebook。
- VS Code 中的新 C# 文档 - 了解如何使用 C# Dev Kit 扩展进行 C# 开发。
如果您想在线阅读这些版本说明,请访问 code.visualstudio.com 上的更新页面。
Insiders 版:想尽快尝试新功能吗?您可以下载每晚发布的 Insiders 版本,并在最新更新可用时立即尝试。
可访问性
可访问视图
新命令打开可访问视图 (⌥F2 (Windows Alt+F2, Linux Shift+Alt+F2)) 允许屏幕阅读器用户逐字符、逐行地检查内容。当悬停或聊天面板响应获得焦点时调用此命令。
可访问性帮助改进
新命令打开可访问性帮助 (⌥F1 (Windows Alt+F1, Linux Shift+Alt+F1)) 会根据当前上下文打开帮助菜单。目前适用于编辑器、终端、Notebook、聊天面板和内联聊天功能。
禁用可访问性帮助菜单提示,并从帮助菜单中打开其他文档(如果有)。
Notebook 的可访问性帮助
为 Notebook 添加了新的可访问性帮助菜单,以提供有关编辑器布局以及导航和与 Notebook 交互的信息。
聊天音频提示
现在,GitHub Copilot 聊天体验有了音频提示,可以通过 audioCues.chatRequestSent
、audioCues.chatResponsePending
和 audioCues.chatResponseReceived
进行启用。
聊天可访问性改进
聊天响应会在收到后立即提供给屏幕阅读器,并且内联和聊天面板可访问性帮助菜单包含有关预期内容以及如何与每个功能交互的更详细信息。
设置编辑器 alt 文本改进
设置编辑器(通过首选项:打开设置(UI)命令访问)现在在使用屏幕阅读器导航时变得不那么啰嗦了。特别是,设置范围切换器会播报实际范围名称而不是文件路径,并且设置描述的 alt 文本已被清理,不再包含原始 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
设置的新值 auto
是新的默认值。在此模式下,只有当没有编辑器组被调整大小时,分割编辑器组才会将可用大小均匀分配给所有编辑器组。否则,分割的编辑器组的空间将分成两半,并放在新的编辑器组中。
此更改的目的是在您分割时不会破坏您创建的布局,但仍保留之前默认的均匀分配大小的行为。
搜索时排除 .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 环境中以管理员身份启动,则需要使用 --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 Modules 的 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 仓库下载一个 .six
示例文件并使用 cat
命令查看。
或者使用 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:重新打开已关闭的仓库...命令来重新打开已关闭的仓库。
Notebook
改进了远程开发的保存性能
以前,在 VS Code 的远程扩展中保存 Notebook 需要将整个 Notebook 发送到扩展主机,这对于大型 Notebook 或在启用自动保存的情况下网络连接较慢时可能会很慢。我们通过仅将 Notebook 的更改发送到扩展主机来提高性能,从而加快 Notebook 的保存和执行。虽然此功能默认仍处于禁用状态,但我们相信很快就能启用它。要尝试此功能,请将 "notebook.experimental.remoteSave": true
添加到您的设置中。有关更多详细信息,您可以关注 问题 #172345。
Notebook 全局工具栏重做
Notebook 编辑器的全局工具栏已重写,以采用工作台工具栏,从而允许用户更自由地自定义工具栏操作。用户现在可以右键单击并隐藏工具栏中的操作。右键单击工具栏中的操作会显示隐藏该操作以及重置菜单并恢复隐藏操作的选项。
工具栏继续支持所有三种标签策略: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 编辑器中。复制图像时,预览编辑器必须获得焦点。
将粘贴的 URL 格式化为 Markdown 链接
新设置 markdown.editor.pasteUrlAsFormattedLink.enabled
(默认 false
) 允许您在 Markdown 编辑器中插入链接时自动格式化为 Markdown 链接。如果您选择了要替换为粘贴链接的文本,则选定的文本将自动成为链接的标题。如果没有选中任何文本,则会有一个默认链接标题。此功能适用于外部浏览器链接以及工作区内的文件。
必须启用设置 editor.pasteAs.enabled
才能使此新设置生效。
远程开发
远程开发扩展允许您使用 开发容器 (Dev Container)、通过 SSH 或 远程隧道 (Remote Tunnels) 连接到远程机器,或将 适用于 Linux 的 Windows 子系统 (WSL) 用作功能齐全的开发环境。
您可以在远程开发版本说明中了解新的扩展功能和错误修复。
远程菜单
本月,我们更新了远程菜单,其中包含一些条目,通过安装必要的扩展来帮助您快速安装并开始使用远程连接(SSH、远程隧道、GitHub Codespaces 等)。欢迎页上还有一个连接到...启动条目,可帮助您从 VS Code 桌面开始进行远程连接。
我们还更新了 vscode.dev 上的欢迎页,添加了一个启动条目,用于连接到远程隧道。
通过隧道连接到 WSL
上次迭代,我们预览了通过远程隧道连接到 WSL。此功能在本迭代中现已稳定。如果您在安装了 WSL 的 Windows 机器上运行远程隧道,则可以选择直接从远程资源管理器连接到 WSL。
主题:Codesong(在 vscode.dev 上预览)
此功能现在可在 VS Code 桌面和 vscode.dev 上使用。如果您的 Windows 设备上已运行隧道,请务必将 VS Code 更新到最新版本以启用此功能。
对扩展的贡献
GitHub Copilot
我们在聊天视图中引入了仅预览的斜杠命令,以帮助您创建项目和 Notebook,并在工作区中搜索文本。
注意:要访问聊天视图、内联聊天和斜杠命令(例如
/search
、/createWorkspace
),您需要安装 GitHub Copilot Chat 扩展。
创建工作区
您可以使用 /createWorkspace
斜杠命令让 Copilot 为流行的项目类型创建工作区。Copilot 将首先为您的请求生成目录结构。
然后,您可以使用创建工作区按钮将项目目录创建并打开为新的工作区。
创建 Notebook
您可以使用 /createNotebook
斜杠命令让 Copilot 根据您的要求创建 Jupyter Notebook。Copilot 将根据您的要求生成 Notebook 的大纲。
然后,您可以使用创建 Notebook命令创建 Notebook,并根据建议的大纲填写代码单元格。
生成搜索参数
您可以要求 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 功能,例如自动完成、自动导入、代码导航等。以前,每当您在 VS Code 中打开工作区时,Pylance 都会对这些库进行索引。现在,Pylance 会持久化这些库的索引,减少了重复索引过程的需要。
弃用 Python 3.7 支持
Python 3.7 已于 2023 年 6 月 27 日达到生命周期结束 (EOL)。因此,Python 扩展对 Python 3.7 的官方支持将在三个月后停止,即在该扩展的 2023.18 版本中(对应于 VS Code 的 2023 年 9 月发布)。目前没有计划主动移除对 Python 3.7 的支持,因此我们预计 Python 扩展在可预见的将来仍将非官方地支持 Python 3.7。
Python 的所有其他版本现在都采用年度发布节奏,我们预计一旦某个 Python 版本在其 EOL 之后,就会在该日历年的第一个 Python 扩展发布中停止官方支持。例如,Python 3.8 计划于 2024 年 10 月达到 EOL,因此 2025 年的第一个 Python 扩展发布将停止官方支持。
GitHub 拉取请求和问题
GitHub Pull Requests and Issues 扩展取得了更多进展,该扩展允许您处理、创建和管理拉取请求和问题。
- 拉取请求中最多可以加载 1000 个(以前是 100 个)评论线程。
- 新的 VS Code API 提案中包含一个只读消息,允许您直接从未检出的 diff 中检出 PR。
- 树和评论中的头像现在是圆形而不是方形。
查看扩展 0.68.0 版本的更新日志以了解其他亮点。
预览功能
TypeScript 5.2 支持
本次更新包含对即将发布的 TypeScript 5.2 版本的支持。查看 TypeScript 5.2 迭代计划以了解 TypeScript 团队当前正在进行的工作的更多详细信息。即将推出的工具亮点包括:
- 新的内联常量重构。
- 新的移动到文件重构,允许您将符号移动到现有文件中。
要开始使用 TypeScript 5.2 每晚构建版本,请安装 TypeScript Nightly 扩展。
新的 Diff 编辑器
在本次迭代中,我们完成了 diff 编辑器的重写。重写使得我们可以添加一些新功能,提高性能,并修复了一些 bug。
要尝试新的 diff 编辑器,请将 "diffEditor.experimental.useVersion2": true
添加到您的设置中。新的 diff 编辑器仍处于实验阶段,但最终将在未来的更新中取代当前的 diff 编辑器。
所有介绍的功能都需要新的 diff 编辑器。
折叠未更改区域
使用 diffEditor.experimental.collapseUnchangedRegions
在新的 diff 编辑器中启用隐藏未更改区域的功能。当审查包含大量未更改代码的大型 diff 时,此功能非常有用。
隐藏行块的边界可以拖动或单击以显示底部或顶部的代码。
显示插入/删除标记
插入/删除标记指示行中的单词在何处插入或删除,这在行中同时包含插入和删除时特别有用。
使用 diffEditor.experimental.showEmptyDecorations
启用/禁用插入和删除标记。
改进的装饰
整行删除/插入现在具有全宽背景颜色。这显著减少了视觉干扰。
这是新的 diff 编辑器如何突出显示更改的示例:
这是旧的 diff 编辑器如何呈现装饰的示例(请注意右侧的第 57 行没有全宽背景颜色):
同步 diff 更新
在新的 diff 编辑器中键入时,更改会立即启发式应用,并在延迟后触发异步 diff 计算。在旧的 diff 编辑器中,更改不会立即应用,导致键入时出现可见的闪烁。
新 - 键入时 diff 会立即更新
旧 - 有一些可见的闪烁
移动检测
这项实验性功能可以检测文件内移动的代码块。使用 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 有很大的依赖,keytar 是一个用于将秘密信息存储在操作系统密钥环中的抽象层。此外,我们在 VS Code 中包含了一个 keytar shim,扩展在 SecretStorage API 引入之前依赖它。keytar 本身已 正式存档 且不再维护... 为了推广良好的安全实践,即 不 依赖存档的软件来存储秘密信息,我们正计划从 VS Code 中移除这个 shim。
我们已经直接联系了仍在使用此 keytar shim 的流行扩展的作者,他们正在努力摆脱对它的依赖。我们希望在此以及 我们的 GitHub Discussion 区 中传达此信息,以便最大程度地减少此更改对我们未直接联系的作者造成的中断。我们知道这不是最好的消息,因为我们自身也付出了相当多的努力来移除对 keytar 的依赖,但我们相信这样做是正确的,以确保扩展正在使用安全的 API。
如果您在扩展中直接使用了 keytar,有几个选项供您考虑
- (推荐) 使用 SecretStorage API,VS Code 在 ExtensionContext 上提供了此 API。这个 API 是跨平台的,可在 VS Code 支持的所有平台上工作。它也由 VS Code 团队维护,将继续得到维护,并且多年来一直是 VS Code API 的一部分。
- (不推荐) 您可以将 keytar 模块与您的扩展捆绑在一起。请注意,keytar 是一个原生 Node 模块,这意味着您需要为支持的每个平台 发布平台特定的扩展。
时间线:目前的计划是在 VS Code Insiders 版本中于 八月上旬 移除此 shim,这意味着 2023 年 9 月的 稳定版将是首个不包含此 shim 的版本。
相关工作正在 issue #115215 中跟踪,如果您有任何问题,请随时在 我们的 GitHub Discussion 区 提问。
改进了本地文件的 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
每个里程碑都会带来新的 Proposed API,扩展作者可以尝试使用它们。一如既往,我们希望收到您的反馈。以下是试用 Proposed API 的步骤
- 找到您想要尝试的提案 并将其名称添加到
package.json#enabledApiProposals
。 - 使用最新的 @vscode/dts 并运行
npx @vscode/dts dev
。它将下载相应的d.ts
文件到您的工作区。 - 您现在就可以针对该提案进行编程了。
您不能发布使用 Proposed API 的扩展。下一个版本中可能存在重大更改,我们绝不希望破坏现有扩展。
文件系统提供程序的只读消息
当您 registerFileSystemProvider
时,可以提供一个只读消息,而不是简单地将文件系统标记为只读。当用户尝试编辑来自该提供程序的文件时,编辑器中会显示以下消息。
工程
导出符号的名称修饰 (Name mangling)
去年我们开始 修饰私有属性和方法的名称 以减小代码大小。现在我们也修饰导出符号的名称,这使得我们的主工作台 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# 文章 来了解如何在 VS Code 中使用 C# Dev Kit 扩展进行 C# 开发。在那里您会找到解释如何 入门,描述扩展的语言特性(代码导航、重构、调试)以及辅助开发生命周期(例如 项目 和 包)的管理。
Glob 模式参考
VS Code 有自己的 glob 模式 实现,用于文件和文件夹搜索过滤等功能,让您可以自定义文件资源管理器视图等。要了解详情,您可以查阅新的 Glob Patterns Reference。
值得注意的修复
致谢
最后但同样重要的是,向 VS Code 的贡献者们致以诚挚的 感谢。
Issue 跟踪
对 Issue 跟踪的贡献
- @gjsjohnmurray (John Murray)
- @starball5 (starball)
- @IllusionMH (Andrii Dieiev)
- @ArturoDent (ArturoDent)
拉取请求 (Pull requests)
对 vscode
的贡献
- @AlbertHilb: 添加
macros
条目到 markdown-math 配置 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): 修复 Comments 面板树视图图标的颜色定义 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 搜索插件在浏览器中的 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): 在 Webview 中添加
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
- 修复: 在 mergeEditor 中光标在第 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.): 修复没有可用用户名时出现的 null 问题 PR #4892