2023 年 1 月(版本 1.75)
更新 1.75.1:此更新解决了这些问题。
下载:Windows:x64 Arm64 | Mac:通用 Intel Silicon | Linux:deb rpm tarball Arm snap
欢迎使用 2023 年 1 月发布的 Visual Studio Code。此版本包含许多更新,我们希望您喜欢,一些主要亮点包括
- 配置文件 - 创建和共享配置文件以配置扩展、设置、快捷方式等。
- VS Marketplace 签名 - 已发布的扩展现在默认情况下使用代码签名。
- 辅助功能改进 - 终端屏幕阅读器模式、新的键盘快捷键。
- 更轻松的多视图调整大小 - 拖动布局角点以同时调整多个视图的大小。
- 树视图搜索历史记录 - 在树视图中快速重新运行之前的搜索。
- 更好的终端链接检测 - 检测包含空格、括号、行和列格式的链接。
- 新的 Git 命令 - 从 VS Code 内部暂存已暂存的更改并删除远程标签。
- Dark+ 和 Light+ V2 主题 - 试用实验性颜色主题并告诉我们您的想法。
- Jupyter Notebook 主题 - 在 Web 上使用笔记本,如何管理 Jupyter 内核。
- VS Code 中的 AI 工具 - 了解使用 GitHub Copilot 进行 AI 驱动的代码补全。
如果您想在线阅读这些发行说明,请访问 更新 页面,该页面位于 code.visualstudio.com 上。
内部人员:想要尽早尝试新功能?您可以下载夜间内部人员构建并在新功能可用时立即尝试最新更新。
日常事务
在之前的发行说明中,团队报告了我们的日常事务工作,我们想在这里做同样的事情。
正如我们在 2022 年 11 月宣布的那样,我们使用 12 月清理了 GitHub 问题和拉取请求(请参阅我们的问题清理指南)。在我们所有的存储库中,我们实现了 3637 个开放问题的净减少。毫不奇怪,减少的大部分发生在我们排名前 5 的存储库中:microsoft/vscode(2520)、microsoft/vscode-jupyter(374)、microsoft/vscode-remote-release(278)、microsoft/vscode-python(220)和 microsoft/vscode-pull-request-github(160)。
辅助功能
差异导航改进
转到下一个/上一个更改现在具有音频提示,指示行是插入、删除还是修改。此外,将选择更改的行,以便屏幕阅读器可以读取它。
终端辅助功能模式
终端:聚焦辅助功能缓冲区(⌥F2(Windows Alt+F2,Linux Shift+Alt+F2))命令允许屏幕阅读器通过键盘在终端缓冲区中导航。
终端辅助功能帮助
与编辑器中的显示辅助功能帮助命令类似,终端:显示终端辅助功能帮助()命令为屏幕阅读器用户提供重要信息。
工作区信任编辑器快捷键
为了提高工作区信任编辑器的键盘辅助功能(可以通过工作区:管理工作区信任打开),您现在可以使用键盘使用Ctrl/Cmd+Enter
切换当前工作区的信任,或使用Ctrl/Cmd+Shift+Enter
切换父文件夹的信任。
设置编辑器指示器上的改进的键盘导航
对于具有多个指示器的设置,例如“在其他地方修改”指示器和“默认值已更改”指示器,现在使用左右箭头键在指示器之间导航。此更改允许用户通过按一次Tab
键从指示器中跳出。
配置文件
我们很高兴地宣布,配置文件功能现已在 VS Code 中普遍可用。配置文件可以包含扩展、设置、键盘快捷键、UI 状态、任务和用户代码段。您可以为不同的开发场景(如数据科学、文档编写)或多种编程语言(如 Python 或 Java)自定义 VS Code。如果您有基于工作流程的不同 VS Code 设置,例如“工作”或“演示”,您也可以将它们保存为不同的配置文件。您可以同时打开多个工作区(文件夹)并应用不同的配置文件。
下图展示了一个使用为工作设置定制的工作配置文件打开的文件夹。
您还可以导出和导入配置文件以与您的同事、朋友或学生共享,帮助他们开始使用 VS Code。
以下视频演示了如何使用 GitHub gist 导出配置文件以与某人共享。收到配置文件链接的用户可以在 VS Code for the Web 中预览共享配置文件并将其导入到本地 VS Code 实例中。
注意:配置文件目前不适用于远程场景,例如GitHub Codespaces,但我们正在努力实现这一点。您可以跟踪问题 #165247中的进度。
工作台
改进的多视图调整大小支持
您现在可以通过拖动视图的角点来同时调整多个视图的大小。
改进的网格布局
如果编辑器被最小化,网格现在将在调整整个工作台或侧边栏大小时保留该状态。在下面的简短视频中,右边的最小化编辑器的宽度保持不变,因为整个编辑器区域正在扩展。
从自定义布局命令还原默认值
当使用自定义自定义布局命令通过触发命令或使用自定义标题栏中的布局控件时,您可以使用布局控件右上角的恢复箭头按钮还原默认值。
从面板管理面板对齐方式
您现在可以直接从面板上下文菜单调整面板对齐方式,就像面板位置一样。
简化的首选项菜单
我们简化了全局设置的首选项菜单,并将选项组织为更合乎逻辑的顺序和分组。
树查找历史记录
树视图内的查找控件现在支持历史记录导航。您可以使用向上/向下箭头键在之前搜索的历史记录中导航。
树查找连续匹配
树视图查找控件现在除了现有的“模糊”匹配之外还支持连续匹配。在下面的视频中,最初搜索"src"
会有像"resource"
这样的匹配项。当通过模糊匹配切换按钮禁用“模糊”匹配时,只有具有连续文本"src"
的文本才会被突出显示。
按页面滚动列表
一个新的设置workbench.list.scrollByPage
,让您可以配置列表在直接点击滚动条时是否按页面滚动。
列表类型导航模式
新的workbench.list.typeNavigationMode
设置允许您配置列表的类型导航模式。默认情况下(设置值为automatic
),导航在您键入时在列表和树中发生。如果您希望仅在特定时间启用导航,您可以将typeNavigationMode
设置为trigger
,列表将仅在运行list.triggerTypeNavigation
命令后进入类型导航模式。
命令list.triggerTypeNavigation
默认没有绑定键,但您可以添加自己的绑定键。例如,如果您想在按下/
键后进入类型导航模式,您可以添加一个像这样的绑定键
{
"key": "/",
"command": "list.toggleKeyboardNavigation",
"when": "listFocus"
}
新的确认打开大型文件
为了防止意外打开非常大的文件,尤其是在远程环境中,由于网络传输可能存在实际成本,因此在打开文件之前会显示一个确认。可以通过新的workbench.editorLargeFileConfirmation
设置修改限制,并且根据打开本地文件还是远程文件具有不同的默认值。
文件监视器支持 files.watcherExclude glob 模式
files.watcherExclude
设置支持 glob 模式,用于文件监视器的强大排除规则。但是,glob 模式未被用于文件监视的库原生支持。在此里程碑中,我们贡献了对排除的 glob 模式的支持,以更有效地利用资源,尤其是在 Linux 上。
对于 Linux,如果您看到文件监视问题,请参阅此常见问题解答条目以获取更多信息。
键盘快捷键编辑器改进
显示贡献键盘绑定的扩展
键盘快捷键编辑器现在在**来源**列中显示贡献键盘绑定的扩展。您可以选择扩展名称以打开扩展的详细信息页面。
您还可以使用扩展上下文菜单中可用的**扩展键盘快捷键**操作搜索扩展贡献的任何键盘绑定。
为 when 子句属性显示上下文键建议
键盘快捷键编辑器现在为when
属性显示上下文键建议。您可以使用Ctrl+Space
快捷键触发建议。
搜索带和弦的键盘绑定
键盘快捷键编辑器现在支持搜索带和弦的键盘绑定。例如,"Ctrl+K"
也将显示所有以Ctrl+K
作为第一个和弦的键盘绑定。
配置 shell 环境解析超时的设置
一个新的设置application.shellEnvironmentResolutionTimeout
(仅限 macOS 和 Linux)允许您增加解析 shell 环境的超时时间,在需要时。默认情况下,VS Code 会等待最多 10 秒来解析环境,但在某些情况下,对于更复杂的 shell 设置,这可能不够时间。
有关 VS Code 如何解析 shell 环境的更多信息,请参阅此常见问题解答条目。
新的 VSCODE_RESOLVING_ENVIRONMENT 环境变量
当 VS Code 解析用户 shell 环境时,它现在将设置一个新的环境变量VSCODE_RESOLVING_ENVIRONMENT
为1
。这对需要知道它们是否在解析 shell 环境的上下文中运行的用户脚本(例如,在.bashrc
中)很有用。
更新后更轻松地选择退出发行说明
您现在可以直接从发行说明编辑器选择退出每次更新后阅读发行说明。这将反映和更新update.showReleaseNotes
设置。
编辑器
建议选择模式
有一个新的设置(editor.suggest.selectionMode
)允许您配置在您输入时自动选择建议还是通过触发字符选择建议。
默认情况下,始终选择最佳建议,以便按Enter
或Tab
键插入它。如果您希望没有建议被选中,请将值设置为never
、whenQuickSuggestion
或whenTriggerCharacter
。使用这些设置值时,建议仍然会显示,但不会自动选中,您可以使用箭头键选择一个建议。
请注意,此设置仅适用于自动建议,不适用于通过Ctrl+Space
显式触发时显示的建议。
代码操作列表现在可滚动
一些扩展会生成很长的代码操作列表。如果没有空间渲染所有代码操作,您现在可以滚动浏览列表。
颜色装饰器限制
编辑器中显示的颜色装饰器的数量限制为 500 个。这样做是为了防止在打开包含大量颜色的文件时出现性能问题。此限制现在可以通过editor.colorDecoratorsLimit
设置进行配置。
编辑器查找转到匹配
新的**转到匹配...**命令允许您根据查找控件打开时的计数,跳转到文件中特定的匹配项。当您有很多匹配项并想跳转到特定的匹配项时,这很有用。
重新设计的内联建议工具栏
在这个里程碑中,我们重新设计了内联建议工具栏,使其更紧凑,更易于使用。它具有按钮,可以快速循环浏览替代建议,并可以完全或逐词接受建议。
在下面的视频中,用户查看了由GitHub Copilot提供的两个建议(在注释提示上触发),然后逐步接受了第一个console
和下一个词console.log
。
"editor.inlineSuggest.showToolbar": "always"
设置可用于在有内联建议时始终显示工具栏。
我们还添加了逐词接受/撤消建议的默认键盘绑定(Ctrl+Arrow Left/Arrow Right
)。
终端
新的默认键盘绑定
以下默认键盘绑定已添加,以提高高级终端功能的可发现性
打开检测到的链接 - Ctrl/Cmd+Shift+O
**打开检测到的链接**命令(⇧⌘G(Windows,Linux Ctrl+Shift+G))是打开终端链接的键盘可访问方式。该命令会打开一个快速选择器,其中包含终端视窗中所有可用的链接。
⇧⌘G(Windows,Linux Ctrl+Shift+G)键盘绑定被选中是因为它类似于**在编辑器中转到符号**,但用于终端。
转到最近的目录 - Ctrl/Cmd+G
转到最近的目录(⌘G(Windows,Linux Ctrl+G))会打开一个快速选择器,其中包含最近的目录,这些目录由shell 集成拾取。它支持固定和模糊匹配。
选择此键盘绑定是因为Ctrl+G是一个相对低使用率的 shell 键盘绑定。
将 Ctrl+G 发送到 shell - Ctrl+Alt+G
由于Ctrl+G现在用于**转到最近的目录**,因此使用Ctrl+Alt+G是将Ctrl+G直接发送到 shell 的新方法。
运行最近的命令 - Ctrl+Alt+R
运行最近的命令(⌃⌥R(Windows,Linux Ctrl+Alt+R))会打开一个快速选择器,其中包含最近运行的命令,它模仿大多数 shell 的反向索引搜索(Ctrl+R),但在一个更易访问和功能更强大的包中。它支持固定和模糊匹配。
选择⌃⌥R(Windows,Linux Ctrl+Alt+R)键盘绑定是因为它是一种与Ctrl+R不同的行为,但该键盘绑定太重要了,无法覆盖其默认行为。
辅助功能模式覆盖
由于反向索引搜索对于屏幕阅读器来说不太容易访问,因此当辅助功能模式打开时,Ctrl+R将触发运行最近的命令,而Ctrl+Alt+R将发送Ctrl+R到 shell。
链接改进
在此版本中,终端中的链接检测进行了许多改进
-
在某些情况下,包含空格的链接被检测到
- 当整行都是一个链接时。
- Python 风格的堆栈跟踪链接:
File "<path>", line <line>
- 一些编译器错误:
<path>(<line>,<col>) : ...
- 独立样式化的文本部分都独立检测,因此如果路径是下划线,即使它包含空格,也应该被检测到。
-
包含
[
和]
字符的链接现在可以工作,它们甚至支持在像这样的困难边缘情况下进行检测 -
vscode://
协议链接现在被检测到。 -
/mnt/
、\\wsl$\
和\\wsl.localhost\
链接现在在 Windows 上被检测到。 -
OSC 超链接支持在 v1.72 中添加,这些链接中常用的
file://
协议现在得到支持(例如ls --hyperlink
)。 -
terminal.integrated.enableFileLinks
设置现在具有"notRemote"
选项,允许它有条件地仅在远程上禁用,在远程上文件存在性检查会导致性能问题。
大多数链接格式也始终支持以下行和列格式
<file>:<line>
<file>:<line>:<column>
<file> <line>
<file> <line>:<column>
<file>(<line>)
<file>(<line>,<column>)
<file>(<line>, <column>)
<file> (<line>)
<file> (<line>,<column>)
<file> (<line>, <column>)
- 单引号或无引号也适用于这些
"<file>",<line>
"<file>",<line>:<column>
"<file>", line <line>
"<file>", line <line>, col <column>
"<file>", line <line>, column <column>
"<file>":line <line>
"<file>":line <line>, col <column>
"<file>":line <line>, column <column>
"<file>": line <line>
"<file>": line <line>, col <column>
"<file>": line <line>, column <column>
"<file>" on line <line>
"<file>" on line <line>, col <column>
"<file>" on line <line>, column <column>
终端编辑器文件拖放支持
终端编辑器现在支持在按住Shift键的同时拖放文件,以将文件写入终端而不是打开编辑器。
"不安全"配置文件检测
由于安全漏洞,最近移除了对 Windows 上的 Cygwin shell 的检测。在此版本中,我们以更安全的形式将其恢复,并检测更多 shell 配置文件,包括 Cygwin、Cmder 和 MSYS2。为了减轻安全问题,在使用这些配置文件之一之前,必须通过**选择默认配置文件**命令对其进行配置
选择后,将在将配置文件添加到您的settings.json
文件并使其像常规配置文件一样运行之前显示警告
如果计算机不是由多个用户使用,例如在公司环境中,可以安全地忽略此警告。
切换终端视图中的命令
长期以来,一直有人要求在终端视图操作中添加**清除终端**命令,但我们一直担心 UI 会变得臃肿。得益于一项新的内部功能,我们现在拥有默认情况下隐藏的操作,这些操作会出现在溢出菜单中,但可以通过右键单击切换以显示。
Ctrl+C 在 Windows 上会取消选择。
Windows 在复制选择和发送SIGINT
到 shell 之间共享Ctrl+C,具体取决于是否存在选择。一个常见的烦恼是,如果您不小心进行了选择,Ctrl+C 可能不会发送SIGINT
。为了帮助缓解这种情况,现在,Ctrl+C 复制选择也会清除选择,因此,连续两次按下 Ctrl+C 将可靠地发送 1 或 2 次SIGINT
。
添加终端制表符停止大小设置。
有一个新的设置terminal.integrated.tabStopWidth
,它配置终端的制表符停止宽度。当程序输出\t
字符而不是在其配置中配置制表符大小时,这很有用。
Powerline 三角形和对角线自定义字形。
现在,GPU 加速的终端为三角形和对角线Powerline 额外符号字形 (U+E0B8-U+E0BF
) 获得像素完美的自定义字形。这些字符在是单宽度还是双宽度字符方面存在歧义,并且根据所使用的字体而有所不同,因此我们选择将它们渲染为单宽度。
之前
之后
在“在活动终端中运行选定文本”中使用方括号粘贴模式。
现在,“在活动终端中运行选定文本”命令将在支持的 shell 中使用“方括号粘贴模式”运行文本,因此,多行选择将被视为单个输入,而不是多个命令。这使得运行实际脚本更加直观,并且发生错误的次数更少。
之前
之后
用于 Pwsh 预览反馈提供者的快速修复。
PowerShell 预览最近实现了一个新的可插拔反馈提供者系统,该系统允许在命令失败时打印建议。
终端现在从[General]
和[cmd-not-found]
反馈提供者中提取快速修复。可以通过单击灯泡或通过Ctrl/Cmd+.
打开快速修复对话框。
源代码管理
新命令。
Git 2.35 引入了一种新的--staged
模式,用于git stash
命令。这种新模式允许您轻松地只暂存已暂存的更改。如果您有支持这种新模式的 Git 版本,则可以使用新的Git: Stash Staged命令来利用它。
VS Code 已经支持使用Git: Delete Tag命令删除本地标签。在本里程碑中,我们启用了使用新的Git: Delete Remote Tag命令删除远程标签。
父文件夹中的 Git 存储库。
VS Code 使用git rev-parse --show-toplevel
来确定 Git 存储库的根目录。在大多数情况下,Git 存储库的根目录在工作区内,但有一些情况是 Git 存储库的根目录位于工作区或打开文件(s)的父文件夹中。虽然在工作区或打开文件的父文件夹中打开 Git 存储库对于高级用户来说是一个很棒的功能,但对于新用户来说可能会令人困惑。我们已经看到一些案例,这种困惑导致了从这些 Git 存储库中丢弃更改,从而导致数据丢失。
为了避免混淆,并降低数据丢失的风险,从本里程碑开始,VS Code 将在源代码管理视图中显示通知和新的欢迎视图,并且不会自动从工作区和打开文件的父文件夹中打开 Git 存储库。
主题: Dark+ V2 与 MacOS Modern 产品图标。
打开存储库按钮将打开一个快速选择,其中列出在工作区或打开文件(s)的父文件夹中发现的所有 Git 存储库。从父文件夹打开 Git 存储库的选择会被记住。
用户可以使用git.openRepositoryInParentFolders
设置来控制如何处理来自父文件夹的 Git 存储库。想要恢复旧行为的用户可以将git.openRepositoryInParentFolders
设置设置为always
。
命令禁用。
根据 Git 存储库的大小或各种 Git hook 的存在,一些 Git 操作可能需要很长时间才能完成。我们过去已经看到,在之前的命令仍在进行时启动命令会导致意外结果(例如,在提交操作正在进行时丢弃文件上的更改)。
为了防止这种情况,我们在以下操作正在进行时禁用了大多数 Git 命令: Checkout
、Commit
、Push
和Pull
。这意味着,在这些操作运行时,大多数 Git 命令将不会出现在命令面板中,并且在源代码管理视图和状态栏中将被禁用。
用户界面改进。
在本里程碑中,我们完善了一些源代码管理用户界面元素。
- 源代码管理视图中提交和发布分支操作按钮的工具提示现在包括分支名称。
- 签出状态栏项目现在根据签出的引用类型(分支、标签或提交)使用不同的图标。
- 签出状态栏项目现在在签出操作正在进行时显示一个旋转的进度图标。
笔记本
内核选择器改进。
我们继续改进 MRU (最近使用过的) 内核选择器。可以通过将notebook.kernelPicker.type
设置为mru
来启用它。不使用的内核将被移到一个辅助选择器选择另一个内核...中。当您安装了最新的Jupyter 和Python 扩展时,此选择器将按来源对所有内核进行分组(例如:Jupyter 内核、Python 环境等)。
合并选定单元格。
有一个新的命令合并选定单元格 (kb(notebook.cell.joinSelected
)`) 将多个选定单元格合并为一个单元格。
将输出回退渲染到支持的 mimetype。
Jupyter 笔记本中的丰富输出,例如 IPyWidgets,仅在内核的生命周期内可见。这意味着,当笔记本关闭并重新打开时,输出将不再可见。但是,在许多情况下,可以使用回退机制来渲染输出。例如,IPyWidget 在某些情况下(取决于所使用的窗口小部件)可以渲染为静态图像或 HTML 内容。
因此,打开包含 matplotlib 窗口小部件(或类似窗口小部件)的现有笔记本的用户现在可以看到输出,而无需重新执行代码。
新文档。
有两个新主题可以帮助您在 VS Code 中使用 Jupyter 笔记本。
- 网络上的 Jupyter 笔记本 - 在 vscode.dev 或 GitHub Codespaces 上运行笔记本。
- 管理 Jupyter 内核 - 了解如何将笔记本连接到各种 Jupyter 内核。
调试
JavaScript 调试。
改进的 Node.js 启动性能。
用于 Node.js 调试的“断点预测器”已经过重写和改进,以显着提高大型项目的启动速度。例如,在 TypeScript 存储库中调试单元测试时的启动时间开销减少了 62%,而在 VS Code 存储库中调试和启动构建的开销减少了 80%。
如果您遇到断点未命中等问题,请提交问题。您可以通过在launch.json
中设置"enableTurboSourcemaps": false
来禁用新行为,但是此选项最终将被删除,因为我们对此越来越有信心。
语言
JavaScript React 语言标签现在是 JavaScript JSX。
JavaScript React
语言模式已重命名为JavaScript JSX
,以反映 JSX 语法不仅用于 React。TypeScript React
也已重命名为TypeScript JSX
。
请注意,只有 UI 中显示的语言名称已更改。出于兼容性原因,内部语言 ID (javascriptreact
和typescriptreact
) 保持不变。
新的 shellscript 语法。
VS Code 现在使用来自 better-shell-syntax 的新语法进行 shellscript 语法高亮显示。
扩展
VS Marketplace 扩展签名。
从 2022 年 11 月开始,上传到 Visual Studio Marketplace 的每个扩展都会由 VS Marketplace 代码签名。当用户通过 VS Code 的扩展视图安装签名的扩展时,VS Code 将验证签名,从而证明扩展确实来自 VS Marketplace 并且扩展包未被修改。如果签名验证失败,VS Code 将不会安装扩展。
VS Marketplace 正在对所有现有扩展(包括自 11 月以来未更新的扩展)进行签名。完成此过程后,在几个月内,VS Code 将要求所有来自 VS Marketplace 的扩展都由 VS Marketplace 签名。此要求将保证来自 VS Marketplace 的每个软件包的完整性,从而提高扩展生态系统的整体安全性。
注意: 扩展作者无需执行任何操作即可加入 Marketplace 签名。除了 Marketplace 签名外,我们目前正在努力进行发布者签名。有关发布者签名的更多信息,请参阅 讨论 #137。
从 CLI 固定扩展版本。
当您从 CLI (code --install-extension {publisher}.{name}@{version}
) 安装扩展的特定版本时,它现在将被固定到该版本。这意味着,当您启用了自动更新时,扩展不会自动更新。
同步固定扩展版本。
设置同步 现在将同步固定的扩展版本。这意味着,当您在一台机器上安装扩展的特定版本时,它将在您同步到的所有其他机器上被固定到该版本。
对扩展的贡献
Python。
从激活的终端启动 VS Code 时自动选择环境。
如果用户通过已经激活了 conda 或虚拟环境的终端启动 VS Code,Python 扩展现在会检测到这一点,然后要么自动选择环境本身,要么询问用户是否要将其设为选定环境;具体取决于环境。
在创建环境时选择需求文件
使用**Python: 创建环境**命令创建虚拟环境时,Python 扩展现在会在工作区文件夹中查找需求文件,并允许用户多选任意数量的需求文件以进行安装。
从 pyproject.toml 中选择可选依赖项
Python 扩展会检测并加载在pyproject.toml
文件中的[project.optional-dependencies]
部分中提供的可选依赖项。如果检测到工作区包含pyproject.toml
以及任何选定的可选依赖项,我们使用 pip 可编辑安装命令。
使用 Pylance 自动缩进
当为 Python 文件启用editor.formatOnType
设置时,Pylance 会在您键入时自动缩进代码,让您更专注于代码的逻辑,而不是格式。
要试用它,请通过将以下内容添加到您的用户settings.json
文件中,为 Python 文件启用formatOnType
。
"[python]": {
"editor.formatOnType": true,
},
实时预览
外部浏览器预览设置
实时预览扩展现在允许您在除默认浏览器之外的其他浏览器中打开外部浏览器预览。使用livePreview.customExternalBrowser
设置,您可以将外部预览设置为在以下浏览器中打开:
- Microsoft Edge
- Google Chrome
- Mozilla Firefox
- 您的默认浏览器
服务器根目录设置
您现在可以将服务器的根路径设置为工作区中的子文件夹。例如,您可以要求实时预览从工作区中的src
文件夹提供文件,方法是将livePreview.serverRoot
设置为"src"
。
ESLint
ESLint扩展已更新至 2.4.0 版。主要的新功能包括:
-
支持新的实验性扁平化配置文件。您需要在 VS Code 中使用设置
eslint.experimental.useFlatConfig
单独启用此支持。需要 ESLint 8.21 或更高版本。 -
ESLint 状态指示器已移至 VS Code 的语言状态区域。因此,设置
eslint.alwaysShowStatus
已删除。请改用 VS Code 的固定功能。语言状态项现在会在保存期间计算代码修复时,通知您缓慢的验证时间和长时间的 ESLint 运行。可用的时间预算(以毫秒为单位)可以通过两个设置
eslint.timeBudget.onValidation
和eslint.timeBudget.onFixes
控制。 -
可以使用新设置
eslint.problems.shortenToSingleLine
将长问题波浪线缩短为单行。
GitHub 拉取请求和问题
GitHub 拉取请求和问题扩展取得了更多进展,它允许您处理、创建和管理拉取请求和问题。亮点包括:
- 支持建议和接受更改。
- 评论中的 GitHub 句柄现在已链接。
- 可以在创建时向 PR 添加标签。
- 实验性设置
githubPullRequests.experimental.quickDiff
将在编辑器边距中显示一个快速差异视图,用于显示已检出 PR 中更改的行。
查看扩展的 0.58.0 版本的变更日志,以查看其他亮点。
GitHub Copilot
GitHub Copilot 扩展是一个 AI 驱动的代码补全工具,可帮助您更快、更智能地编写代码。您可以在 VS Code 中使用 Copilot 扩展来生成代码,或从它生成的代码中学习。
GitHub Copilot 通过内联建议 UI集成到 VS Code 编辑器中,该 UI 允许您查看各种建议并轻松接受所有或部分生成的代码。
GitHub Copilot 现在对企业普遍可用,并提供许可证管理、组织范围内的策略控制和隐私保护等功能。您可以在GitHub Copilot for Business 公告中了解更多信息。
要开始使用,您可以在GitHub Copilot 网站上注册免费试用。
我们还在 VS Code 文档中添加了一个新的VS Code 中的 GitHub Copilot主题,该主题将帮助您开始使用 Copilot。
远程开发
远程开发扩展允许您使用容器、远程机器或适用于 Linux 的 Windows 子系统(WSL)作为功能齐全的开发环境。此版本的亮点包括:
- 对多个
devcontainers.json
文件提供 Dev Container 支持。 - Docker 凭据转发。
- X11 和 Wayland 转发
您可以在远程开发发行说明中了解有关新扩展功能和错误修复的信息。
远程隧道
睡眠抑制
远程隧道现在可以在 Windows、macOS 和基于 systemd 的 Linux 系统上阻止计算机进入睡眠状态。如果您离开桌面进行远程工作并希望确保隧道保持可访问,这将很有用。要使用此功能:
- 从 VS Code UI 打开远程隧道访问时,将设置
remote.tunnels.access.preventSleep
更新为true
。 - 在 CLI 上使用
code tunnel
时,传递--no-sleep
标志。
可靠性改进
已修复远程隧道中几个与连接相关的错误,这应该会提高可靠性。
继续处理
“继续处理”功能支持在本地窗口中启动 Git 存储库,并在远程窗口中继续处理,例如GitHub Codespace。如果您所在的当前分支尚未发布到远程,那么当您选择在不同的开发环境中继续处理时,现在会自动提示您发布当前分支,以便您可以在其他地方访问完整的分支上下文。
此外,当您在远程窗口中的 Git 存储库中时,现在可以使用**在新的本地克隆中继续处理**命令,在 VS Code 桌面中继续处理新的本地 Git 克隆。
最后,所有在本地、远程或 Web 窗口中继续处理工作的选项现在都方便地显示在远程指示器中。这些选项也可以在命令面板中找到。
预览功能
Dark+ V2 和 Light+ V2 实验主题
现在有两个新的颜色主题 Dark+ V2 和 Light+ V2 可供使用。这些主题是现有 Dark+ 和 Light+ 主题的演变,旨在更易于访问,并让 VS Code 比以往任何时候都更出色!这些主题仍然被标记为实验性的,我们正在寻求早期反馈。
您可以在颜色主题选择器(**首选项:颜色主题** ⌘K ⌘T(Windows、Linux Ctrl+K Ctrl+T))中找到列出的新主题,分别为**Light+ V2(实验性)**和**Dark+ V2(实验性)**。
TypeScript 5.0 支持
此更新包括对即将发布的 TypeScript 5.0 版本的支持。有关 TypeScript 团队目前正在进行的工作的更多详细信息,请参阅TypeScript 5.0 迭代计划。一些编辑器工具亮点:
- 新的
switch
和case
补全帮助您更快地填写switch
语句的两个部分。 - 在github.dev和vscode.dev上启用项目范围内的 IntelliSense 的工作。
要开始使用 TypeScript 5.0 每日构建版本,请安装TypeScript Nightly扩展。
命令面板中的“常用”部分
在这个里程碑中,我们在命令面板中添加了一个新的“常用”部分。该部分的目的是帮助新用户更好地了解命令面板的用途及其功能。
主题:熊猫主题(在vscode.dev上预览)
此部分将显示在“最近使用”部分下方,这样就不会破坏肌肉记忆。当您运行越来越多的命令并熟悉 VS Code 时,该部分会消失(因为“常用”命令移至“最近使用”),或者该部分在折叠下方且不可见。
主题:熊猫主题(在vscode.dev上预览)
目前,我们将此新体验置于设置workbench.commandPalette.experimental.suggestCommands
之后,但我们计划在不久的将来将其设为默认行为。请告诉我们您的想法!
扩展开发
评论线程状态
CommentThread
state
API 已最终确定。此 API 控制评论是否呈现为已解决或未解决,并会影响“评论”视图中的过滤。您可以在问题 #127473中详细了解如何使用此 API。
忽略要同步的设置
您现在可以使用ignoreSync
属性在注册设置时,将设置默认隐藏在设置同步中。这对于不打算在机器之间同步的设置很有用。
遥测
新的TelemetryLogger
API 已最终确定。此 API 旨在使扩展作者更轻松地使用遥测,并为最终用户提供更安全的环境。该 API 启用了内置的秘密清理、遥测输出通道、错误处理程序和自动遥测级别管理。这应该会带来更一致的遥测体验,并保证符合我们的要求。
建议的 API
每个里程碑都会带来新的提议 API,扩展作者可以试用它们。与往常一样,我们希望得到您的反馈。以下是在试用提议 API 的步骤:
- 找到您想试用的提议,并将其名称添加到
package.json#enabledApiProposals
中。 - 使用最新的vscode-dts并运行
vscode-dts dev
。它会将相应的d.ts
文件下载到您的工作区。 - 您现在可以针对该提议进行编程。
您不能发布使用提议 API 的扩展。下一个版本中可能会有重大更改,我们永远不想破坏现有扩展。
让笔记本渲染器回退到不同的 MIME 类型
有时,在渲染内容时,笔记本渲染器可能会意识到它无法正确渲染该项目。例如,渲染器可能要求内核处于特定状态。
以前,对于这种情况,渲染器唯一的选择是渲染一条错误消息。我们添加了一个新的提议 API,它允许渲染器抛出一个专门命名的错误,该错误会导致 VS Code 静默回退到渲染存储在笔记本输出项目中的其他数据。例如,交互式图表渲染器可以抛出此错误,以使 VS Code 回退并渲染存储在当前输出项目中的图像数据。
要触发此回退,请在renderOutputItem
中抛出一个名为vscode.fallbackToNextRenderer
的错误。
throw new class extends Error {
override name = 'vscode.fallbackToNextRenderer';
}();
此特殊错误仅用于渲染在特定情况下预计会失败的情况。如果您的渲染器遇到意外错误,它应该继续显示错误消息。
快速差异
快速差异(即在编辑器中显示在添加、更改和删除行上的边距装饰)目前仅可供 SCM 提供商使用。提议的快速差异 API 允许在 SCM 提供商之外使用快速差异。以下示例来自 GitHub Pull Request 扩展,它使用快速差异 API 来显示拉取请求中更改行的快速差异。
vscode.window.registerQuickDiffProvider(
{ scheme: 'file' },
{
provideOriginalResource: (uri: vscode.Uri) => {
const changeNode = this.reviewModel.localFileChanges.find(
changeNode => changeNode.changeModel.filePath.toString() === uri.toString()
);
if (changeNode) {
return changeNode.changeModel.parentFilePath;
}
}
},
'GitHub Pull Request',
this.repository.rootUri
);
完整的提案在 quickDiffProvider.d.ts 中。
持续测试运行
持续测试运行 允许测试扩展指示它们能够在发生更改时监视和重新运行测试。支持此 API 是在您的测试运行配置文件上指示支持的问题...
const profile = controller.createRunProfile('Run', TestRunProfileKind.Run, runHandler);
+profile.supportsContinuousRun = true;
然后在 runHandler 中检查它
const runHandler = (request: TestRunRequest, token: CancellationToken) => {
+ if (request.continuous) {
+ return watchForFileChangesThenRunTests(request, token);
+ }
}
完整的提案在 testContinuousRun.d.ts 中。
工程
扩展主机实用程序进程
现在默认情况下启用了扩展主机所需的用于 进程沙箱 的实用程序进程使用。仍然存在一个设置(extensions.experimental.useUtilityProcess
),我们很快就会将其删除。
通过命令行进行性能测试
我们引入了以下节点模块,以便从命令行运行一组性能测试。
vscode-bisect - 此模块帮助我们快速测量性能回归。运行 npx vscode-bisect --help
以了解如何操作此工具。
vscode-perf - 此模块帮助我们测量 VS Code 的性能。npx vscode-perf --help
描述了如何操作此工具。
GB18030 认证
VS Code 现已获得 GB18030 认证 - 这意味着中国政府内的认证委员会已确认 VS Code 可以正确表示全套中文汉字。测试涵盖了所有内置使用场景。随着 VS Code 获得认证,Visual Studio 家族的核心(包括 Visual Studio 和 Visual Studio for Mac)已在 GB18030 下获得认证。
迁移到 ESM
我们已经开始了将我们的代码库迁移到 ESM 的旅程。VS Code 项目早于本机模块(ESM),我们一直在使用异步模块系统(AMD)。AMD 对我们很有帮助,但现在是时候继续前进了。我们已经开始将我们的代码库迁移到 ESM,我们正在取得良好进展,并希望在接下来的几个月内完成这项工作。
macOS 10.11 和 10.12 的 EOL 警告
VS Code 桌面将在接下来的几个里程碑中更新到 Electron 22。随着 Electron 22 更新,VS Code 桌面将不再在 OS X El Capitan 和 macOS Sierra 上运行。在这个里程碑中,我们已经为这些受影响平台上的用户添加了弃用通知,以帮助他们做好迁移准备。如果您是这些上述 OS 版本的用户,请查看我们的 常见问题解答 以获取更多信息。
改进系统和应用程序语言变量的使用
在之前的版本中,我们开始将应用程序语言传递给 Electron,以便它可以正确地布局一些组件,例如窗口控件叠加层 (WCO)。同时,语言推荐器依赖于系统语言,但 app.getLocale()
开始获取应用程序语言而不是系统语言,因此我们使用了一个更新的 app.getPreferredSystemLanguages()
Electron API 来检索用于语言推荐器的系统语言。结果,发生了回归,导致扩展视图中的扩展无法渲染,因为新的 API 返回了 toLocaleString()
无法解析的一些值。
我们针对恢复版本推送的直接解决方案是恢复到 app.getLocale()
并暂时中断语言推荐,但事实证明,代码库的许多区域也应该使用应用程序语言变量而不是系统语言变量。
此版本将许多系统语言的使用替换为应用程序语言。反过来,日期现在应该以与应用程序语言而不是系统语言更一致的格式进行本地化。
值得注意的修复
- 99878 使用 environmentVariableCollection 在 macOS 上预置 PATH 环境变量不起作用
- 153786 拥有一个命令来打开差异编辑器的任一侧
- 165123 允许使用两个无标题侧打开差异编辑器
- 167004 输出:显示输出通道 用于显示输出通道的命令
- 167528 扩展输出通道的日志级别在重新加载窗口后仍然存在
感谢
最后但并非最不重要的是,对 VS Code 贡献者表示衷心的感谢。
问题跟踪
对我们的问题跟踪的贡献
- @gjsjohnmurray (John Murray)
- @IllusionMH (Andrii Dieiev)
- @ArturoDent (ArturoDent)
- @yume-chan (Simon Chan)
拉取请求
对 vscode
的贡献
- @a-stewart (Anthony Stewart): 在 browser.ts 中使用 matchMedia 调用一致地指定窗口 PR #164020
- @Aaaaash (大表哥): 修复
standaloneTheme.defines
始终返回 false。 PR #169221 - @andschwa (Andy Jordan): 修复 PowerShell 5.1 的 shell 集成 PR #170516
- @antonioprudenzano (Antonio Prudenzano): Feat/155294 PR #168513
- @babakks (Babak K. Shandiz)
- 在 markdown 语法标记中包含波浪号 (~) PR #146417
- 🖊 在提交按钮弹出窗口中包含分支名称 PR #167827
- 添加无选择监视 PR #171449
- @Balastrong (Leonardo Montini): 145458 列表:支持按页滚动 PR #145788
- @chiefmikey (Mikl Wolfe)
- 删除 repository.ts 默认参数类型 PR #155908
- 更新 git config.followTagsWhenSync 定义 PR #155914
- @chouzz (Chouzz): 修复调用层次结构和类型层次结构 API 的不正确描述 PR #167718
- @d1y (源来氏佐田): feat: 屏幕录制模式移动缩放 PR #156084
- @davidwengier (David Wengier): 更新 Razor 仓库 PR #171560
- @dtivel (Damon Tivel)
- 扩展:在签名验证期间对 UnknownError 进行警告而不是失败 PR #169777
- 如果无法验证扩展签名,请勿阻止 PR #172576
- @fadeevab (Alexander Fadeev):
else ifeq|ifneq|...
语法的 Makefile 测试 PR #170888 - @giannisp (Ioannis Poulakas): 改进搜索输入的布局 PR #165989
- @gjsjohnmurray (John Murray)
- 为新的列表/树搜索/筛选小部件添加历史记录(#_155578) PR #159188
- 为树查找小部件添加“模糊匹配”切换(#_116286) PR #164376
- 防止隐藏未解析的树分支 PR #167047
- @gpoussel (Guillaume Poussel): 添加命令以删除远程标记(修复 #104845) PR #134327
- @HKalbasi: 修复内联提示位置链接问题 PR #167886
- @hughlilly (Hugh Lilly): 校对:“双击” -> “双击” PR #166758
- @jakebailey (Jake Bailey): 在 TS 用户首选项中设置 disableLineTextInReferences=true PR #171376
- @jasonwilliams (Jason Williams): 允许将差异编辑器的任一侧作为编辑器打开(修复 #153786) PR #165765
- @jeanp413 (Jean Pierre)
- 修复粘贴到快速大纲中不会显示结果 PR #166835
- 修复编辑器区域终端在退出后未恢复 PR #168887
- 修复在重新加载后恢复的终端/任务忽略 confirmOnKill 和 confirmOnExit 设置 PR #168922
- 修复 createTerminal 不会在第一个编辑器组中创建终端 PR #169050
- @joshuaobrien: 添加 git stash staged only 命令 PR #165649
- @laurentlb (Laurent Le Brun): 命令持续时间:对遥测使用更高的精度 PR #167624
- @maIIady (Ilya Golovin): 修复:使 git 命令可以使用键盘 PR #159113
- @markw65: 修复不同文件夹中相同名称的任务无法自动启动的问题 PR #168742
- @MarkZuber (Mark Zuber): 向网络协议添加高延迟测量仪器 PR #168668
- @meskill: 修复:nushell 集成 PR #169861
- @mkhl (Martin Kühl): 通过
XDG_DATA_DIRS
公开 fish 集成配置 PR #168211 - @MonadChains (MonadChains)
- 问题 163528/创建编辑断点命令 PR #163734
- 在调试至少启动一次时启用断点视图 PR #169077
- @mroch (Marshall Roch): 修复 anyScore firstMatchCanBeWeak PR #168266
- @mueheg (Google Henrik): 在选择范围之前,不要选择输入框的全部内容,修复 #167266。 PR #167274
- @N1kO23: 添加
${rootNameShort}
格式化 PR #165744 - @ohah (ohah): 屏幕截图输入法错误修复 (#_165248) PR #165249
- @ookami-kb (Kirill Bubochkin): 更新 shellIntegration.fish 以修复在通信 cwd 时发生的错误 PR #168452
- @PEZ (Peter Strömberg): 为状态栏项目启用等宽数字 PR #167310
- @pokey (Pokey Rule): 修复代码片段选择转义的错误 PR #169287
- @probablykasper (Kasper): 添加
terminal.integrated.tabStopWidth
选项 PR #170733 - @pzhlkj6612 (Mozi): 终端选项卡:在重命名期间禁用拖动和点击 PR #166821
- @r3m0t (Tomer Chachamu): 修复扩展启动缓慢时 webview 消失的问题 (#_168516) PR #168569
- @rezasoumi (RezCoder): 问题 163803/首先选择一个引用,然后在创建分支中选择一个名称... PR #170908
- @rwe (Robert Estelle): shellIntegration-bash.sh:精确保留 DEBUG trap 表达式 PR #165581
- @samdenty (Sam Denty): 修复 IExtensionRecommendationReson 拼写错误 PR #163889
- @Sean1708 (Sean Marshallsay): 引入 VSCODE_RESOLVING_ENVIRONMENT 环境变量。 PR #168436
- @ssigwart (Stephen Sigwart)
- 在添加和删除组或切换侧边栏时保留最大化组的大小 PR #137962
- 修复粘贴删除缩进的问题 PR #167687
- 添加骆驼式转换 PR #169512
- @ste42 (Steven Tam): 添加新的未标题差异命令 PR #168533
- @sumneko (最萌小汐): 更新 Lua 语法 PR #167692
- @weartist (Han)
- 修复设置以禁用差异视图中“下一个更改”的循环 #163331 PR #164225
- 适配器 css 用于 #165169 PR #167030
- 支持进程资源管理器记住其位置和尺寸 PR #169090
- 在出现相同名称的代码片段时添加代码片段源 PR #169119
- 将 applicationStorageMainService 替换为 stateMainService PR #169365
- @yiliang114 (易良): 修复:拼写错误 PR #158431
- @zardoy (Vitaly): [typescript] 修复成员完成中潜在的
[object Object]
PR #171127
对 vscode-css-languageservice
的贡献
- @romainmenke (Romain Menke): 新的 CSS 单位 PR #324
对 vscode-hexeditor
的贡献
- @brabli (Bradley): 在数据检查器中添加当前字节的八进制表示 PR #410
对 vscode-json-languageservice
的贡献
- @rahulbanerjee26 (Rahul Banerjee): 检查 “not” 规则的
errorMessage
属性的模式 PR #164
对 vscode-languageserver-node
的贡献
- @wkillerud (William Killerud): 向 onPrepareRename 添加 defaultBehavior 响应 PR #1161
对 vscode-pull-request-github
的贡献
- @eamodio (Eric Amodio): 更新 TypeScript (已发布 4.2) 和 Octokit (以获取修复的类型),以及一些次要更新 PR #2525
- @sravan1946 (sravan): 从自述文件中删除不可用的徽章 PR #4393
- @Thomas1664
对 debug-adapter-protocol
的贡献
- @mfussenegger (Mathias Fußenegger): 澄清框架上缺少 canRestart 意味着 true PR #365
对 monaco-editor
的贡献
- @jonatanklosko (Jonatan Kłosko): 更新 Elixir 词法分析器 PR #3453
- @rcjsuen (Remy Suen): 修复颜色提供程序的列 PR #3348