2024年1月(版本1.86)
更新 1.86.2:此更新解决了这些问题。
更新 1.86.1:更新解决了这些问题。
下载: Windows: x64 Arm64 | Mac: 通用 Intel 硅 | Linux: deb rpm tarball Arm snap
欢迎来到2024年1月Visual Studio Code的发布版本。这个版本有很多更新,我们希望你会喜欢,其中一些主要亮点包括:
- 每个Windows的缩放级别 - 独立调整每个Windows的缩放级别。
- 嘿,代码语音命令 - 用语音命令开始聊天会话。
- 多文件差异编辑器 - 在差异编辑器中快速查看多个文件的差异。
- 触发断点 - 利用断点依赖进行高效调试。
- 扩展的粘性滚动支持 - 树视图和笔记本中的粘性滚动。
- Markdown粘贴选项 - 支持链接、视频和音频元素的富粘贴。
- 灵活的自动保存选项 - 在错误时跳过自动保存或仅对特定文件类型进行保存。
- 源代码控制输入 - 自定义提交输入和每种语言的编辑器设置。
- 扩展通知 - 为每个扩展禁用通知的细粒度控制。
- GitHub Copilot 更新 - 改进默认上下文,将文件作为上下文,AI 修复。
如果您想在线阅读这些发行说明,请访问 更新 页面 code.visualstudio.com.
内部人士: 想尽快尝试新功能吗?你可以下载 内部人士 构建版,并在最新更新可用时立即尝试。
无障碍
警报
屏幕阅读器和盲文用户现在有更多的可配置警告,例如当调试断点被击中、当前行有错误等情况。这些可以通过设置进行配置,从开始。无障碍.警报,或者通过帮助: 列出警报命令进行探索和配置。
使用“Hey Code”语音指令
随着新的无障碍语音关键词激活在设置中,您可以启用 VS Code 以监听“Hey Code”语音命令,从而开始与 Copilot Chat 的语音会话。语音识别是在您的本地机器上计算的,从不会发送到任何服务器。
可用选项为:
聊天视图从聊天视图开始语音聊天快速聊天从快速聊天控制开始快速语音聊天内联聊天从编辑器中的内联聊天开始语音聊天聊天上下文如果焦点在编辑器中,则从内联聊天开始语音,否则从聊天视图进行语音聊天
以下示例显示了 "Hey Code"内联聊天选项已配置:
状态栏中的一个小麦克风图标表示 VS Code 正在使用麦克风来识别 "Hey Code"。
一旦语音聊天会话完成,VS Code 将再次监听 "Hey Code" 以重新开始。
要使用此新功能,需要以下扩展:
注意: 语音识别在您的机器上本地运行,从不发送到任何服务器。
工作台
恢复辅助Windows
随着这个发布版本,所有与主Windows关联的已打开的浮动Windows将在你重新启动应用程序时恢复。这包括已打开的编辑器以及辅助Windows的大小和位置。
树视图中的粘性滚动
在编辑器中成功推出Sticky Scroll后,我们将其功能扩展到所有树视图,使用户更容易浏览项目树。树视图的Sticky Scroll可以通过以下方式启用或禁用工作台.树.启用粘性滚动设置。
为了确保Sticky Scroll不占用过多空间,它最多只能占据视图高度的40%。此外,用户可以通过配置来自定义粘性元素的最大数量。工作台.树.粘性滚动最大项目数量默认设置为7。如果粘性元素的数量超过可以显示的数量,Sticky Scroll将合并最后的粘性元素,如果树视图支持此功能。
为了提升树导航的体验,您可以选择一个粘性元素,直接跳转到树中的该元素。或者,按父元素的箭头以隐藏其所有子元素。此外,启用粘性滚动时,访问复选框和操作项会更方便。
为每个Windows配置缩放级别
新的设定Windows的缩放比例默认启用放大、缩小、重置缩放命令,使其仅应用于活动Windows,而不是所有打开的Windows。以前使用这些命令不仅会将其应用于所有打开的Windows,还会更新Windows缩放级别设置。
我们相信,使用这些命令更多是一种临时性操作,例如在进行演示时,因此它们应该只适用于调用它们的Windows。
如这个例子所示,只有活动Windows的缩放级别会改变,而其他Windows不会:
在状态栏中显示缩放级别指示器,当Windows的自定义缩放级别与不匹配时Windows缩放级别设置值。选择状态栏指示器以找到更改缩放级别、重置缩放级别或快速转到相关设置的控件。

一个具有自定义缩放级别的Windows会在重启和工作区更改时保持该缩放级别。
注意: 配置
Windows的缩放比例至假恢复到之前的缩放级别行为。
更强大和灵活的自动保存选项
VS Code 长期以来提供了自动保存选项。在此次发布中,我们使这一功能变得强大得多。
为每个资源或语言配置自动保存
现在,所有自动保存设置都可以按文件夹或语言进行配置,这样你就可以仅选择性地为特定语言或文件夹启用自动保存。
在下面的示例中,设置配置为:
{
"[markdown]": {
"files.autoSave": "afterDelay"
}
}
如你所见,编辑的Markdown文件会立即保存,而TypeScript文件保持脏状态。
出现错误时禁用自动保存
一个新的文件.自动保存当无错误设置允许你在自动保存时禁用自动保存,如果文件中存在错误标记。
这在你有外部工具监控文件更改时非常有用,你希望避免这些工具对包含错误的更改文件进行操作。
仅自动保存工作区文件
最后,一个新的设置文件.自动保存工作区文件仅这将自动保存限制在工作区内的文件。
允许按扩展禁用通知
我们现在提供了更细致的控制选项来禁用来自扩展的通知。从通知提示中,您可以禁用扩展的通知:

在通知中心,有一个中央位置来管理所有已触发通知的扩展的通知启用情况:

这个新功能补充了我们现有的勿扰模式,该模式全局禁用了所有通知。与全局开关一样,错误通知将始终出现且无法禁用。
允许交换左右两个差异编辑器
当您比较两个文件(例如来自文件资源管理器)时,会出现一个新的操作来交换差异编辑器的左右两侧。
注意: 比较两个可编辑文件允许您在任一方进行更改。
不执行--等待在命令行从stdin读取时
使用终端时,您可以将进程的输出直接传递给 VS Code 以作为编辑器打开,例如:
ps aux | grep code | code -在 Linux 或 macOS 上回显 Hello World | 代码 -在 Windows 上
直到现在,这也意味着--等待标志,这意味着在您关闭编辑器Windows或完全关闭 VS Code 之前,将无法返回到终端提示符。在这个里程碑中,我们不再强制执行--等待当从标准输入读取时,这样你就可以立即回到终端提示符。
注意: 要恢复以前的行为,只需附加
--等待到命令行调用。
支持自定义标题栏和原生标题栏
我们正在介绍Windows自定义标题栏可见性设置,即使使用原生标题栏也能显示自定义标题栏。这对于喜欢使用原生标签的 macOS 用户特别有益。有了这个新设置,原生标题栏用户现在可以访问自定义标题栏功能,例如:
- 命令中心: 可直接从自定义标题栏访问命令中心。
- 布局控制: 以更大的灵活性定制您的工作区布局。
- 活动栏自定义: 将活动栏操作移至顶部。
- 编辑器操作自定义: 将编辑器操作移至自定义标题栏。
此外,对于喜欢在全屏模式下保持简洁视图的用户,Windows自定义标题栏可见性: "Windows化"选项允许您在全屏模式下隐藏自定义标题栏。此功能确保在编码环境中更加专注且无干扰,同时在非全屏模式下仍然提供使用自定义标题栏功能的选项。

新的设置以强制执行系统颜色主题
一个新的设置Windows系统颜色主题允许您明确覆盖 VS Code 中适用于原生元素(例如 macOS 上的菜单或对话框)的系统颜色主题。该设置支持以下值:
默认:颜色主题与操作系统一致(默认选项)。自动: 选择光或暗, 依赖于 VS Code 主题光: 选择光系统主题暗: 选择暗系统主题
以下是一个如何应用于macOS上下文菜单的示例,显示光在上面部分,并且暗在底部部分:

允许在没有确认的情况下关闭未命名的工作区
一个新的设置Windows确认保存未命名工作区允许您在关闭带有未命名工作区的Windows时禁用显示确认对话框。现在对话框上也有复选框可以禁用显示。Windows确认保存未命名工作区设置默认启用以保持当前行为。

注意: 在我们的文档中了解更多关于未命名工作区的信息。
切换输出面板中的自动换行
输出面板现在支持通过使用视图:切换自动换行命令来切换自动换行。这在查看输出面板中的长文本行时很有用。
在新Windows中打开输出面板
输出面板现在在面板标题菜单中有一个在新Windows中打开输出操作,用于在单独的Windows中查看输出面板。
从 CLI 更新扩展
您现在可以通过使用以下命令行更新扩展--更新扩展参数。这将更新所有已安装的扩展到最新版本。
快速选择中的悬停现在使用自定义悬停
我们已经将快速选择中的几个悬停效果改用自定义悬停,而不是使用原生渲染。这使得渲染更加丰富,并且在整个产品中更加一致。

在 diff 编辑器中查看多个文件
随着此次发布,现在所有用户都可以使用多文件差异编辑器。多文件差异编辑器允许你在滚动视图中查看多个文件的更改:
目前,多差异编辑器可以用于查看本地更改、暂存更改、入站/出站更改、暂存和拉取请求中的更改。它可以通过选择各种新的查看更改”操作来打开,这可以通过多文件差异图标来识别。
当从源代码控制视图中打开差异编辑器时,它会动态更新视图,当文件发生变化或进行标记时。
多路合并编辑器仍在开发中,因此预计在未来的版本中会看到更多的改进和错误修复。
在 GitHub 拉取请求扩展中进行多文件差异比较
当 GitHub 拉取请求和问题 扩展安装后,您可以设置 "githubPullRequests.focusedMode": "multiDiff"在打开拉取请求时自动打开多文件差异编辑器。
当您设置为 github.dev 时,您可以按 输入:. 在 GitHub 上的拉取请求上 github.dev 打开多文件差异编辑器以查看更改。
编辑器
粘贴文本/HTML 内容
现在“粘贴为...”命令可以让你粘贴文本/HTML剪贴板中的内容:

例如,当您从网页复制内容时,您可以使用此功能粘贴内容的HTML,而不是将其粘贴为纯文本:
源代码管理
提交输入定制
在这一里程碑中,我们添加了一个新的设置,scm输入最小行数,可以用来控制提交输入字段的初始高度。控制提交输入字段最大大小的设置已从scm输入最大行数至scm输入最大行数以便与类似设置的命名约定保持一致。
用户现在可以使用特定语言的编辑器设置来进一步自定义提交输入字段。特定语言的编辑器设置可以用来定义编辑器规则并禁用单词换行:
"[scminput]": {
"editor.rulers": [
50,
72
],
"editor.wordWrap": "off"
}
源代码控制仓库视图改进
为了更好地管理具有大量仓库的工作区,我们已在仓库上下文菜单中添加了一个新命令:关闭其他仓库。我们还为关闭仓库和关闭其他仓库命令添加了多选支持,以便用户可以同时关闭多个仓库,或关闭所有仓库,除了几个特定的仓库。
源代码控制仓库视图可能会因为扩展贡献的动作而变得拥挤。为了解决这个问题,我们添加了隐藏贡献动作的功能,可以通过右键点击动作并选择隐藏来实现。隐藏的动作会被移动到...菜单中。除了检出和同步之外的所有动作都可以被隐藏。
入站/出站更改改进
我们继续优化源代码控制视图中的入站/出站更改部分。在这个里程碑中,我们进行了更改,以便入站更改节点仅在当前分支有跟踪远程分支时显示。
我们已将 获取 和 拉取 动作添加到 入站变更 节点,以及 推送 动作添加到 出站变更 节点。
我们已添加操作以查看每个单独的提交,并查看利用多文件差异编辑器的所有入站/出站更改。
用户现在可以使用一个新的设置,scm显示更改摘要,以隐藏所有更改条目。
合并标签的能力
我们通过添加合并标签的功能来解决一个长期存在的功能请求。命令面板中添加了一个新命令,Git: Merge...,它取代了Git: Merge Branch...命令。调用Git: Merge...命令将显示一个快速选择控件,列出分支和标签。
查看Stash命令
我们添加了一个新命令,Git: 查看暂存...,使用户能够在多文件差异编辑器中查看仓库中的任何暂存。当查看一个git暂存时,编辑器标题菜单将包含应用/弹出或丢弃暂存的操作。
使用 SSH 密钥对提交进行签名
这个里程碑,我们增加了使用带有密码的SSH密钥签署提交的功能。当使用SSH密钥签署提交时,VS Code会在屏幕顶部显示一个快速选择控件来提示密码。VS Code不会缓存密码,每次签署提交时都会提示输入密码。
笔记本电脑
浮动Windows支持
笔记本编辑器现在可以以浮动Windows打开。你可以将笔记本标签从主Windows拖出以在新Windows中打开,或者使用视图:将编辑器移入新Windows命令。
内置变量视图
我们已在“运行和调试”视图中添加了一个实验变量视图,如果扩展提供,则可以用于从笔记本内核中查看变量。此功能可以通过此设置启用:
"notebook.experimental.variablesView":真
笔记本粘性滚动
笔记本编辑器的Sticky Scroll功能已经进行了显著的优化,以使其风格与工作台的其他部分保持一致,并为每个markdown元素添加了折叠控制。
终端
选择区域下方显示的背景
启用GPU加速时,背景颜色非默认的单元格将现在以“在下方”常规选择颜色呈现。

通过鼠标滚轮缩放终端
启用此设置时,可以通过按住Ctrl并使用鼠标滚轮来放大和缩小终端。
"terminal.integrated.mouseWheelZoom":真
多行粘贴警告改进
在之前的版本中,终端.集成.启用多行粘贴警告接受任何真(默认)或假当真如果启用,它将始终显示警告,除非启用括号粘贴模式或行以一个 结尾。输入:\n字符。此设置现在接受以下选项的字符串:
自动: 之前的真正行为总是: 始终显示警告从不: 从不显示警告
此外,在对话框中新增了一个按钮,可以将字符串粘贴为单行,这会移除所有输入:和输入:\n字符。
链接改进
文件协议 URIs文件://) 现在支持在末尾添加行号和列号扩展,就像大多数其他链接一样。新的#<line>格式也受支持。
终端语音命令
新的终端:开始终端语音和终端:停止终端语音命令在终端中启用语音转文字会话。
要使用此新功能,请安装VS Code Speech扩展。
任务
路径分隔符变量的缩写
新的${/}变量可以作为现有内容的快捷方式${路径分隔符}变量。
调试
触发断点
您现在可以设置断点,当另一个断点被触发时,这些断点会自动启用。例如,这在诊断仅在满足特定前提条件后才会发生的代码中的故障情况时非常有用。触发断点适用于所有语言,条件断点也可以用作触发条件。
通过右键单击字形边缘,选择添加触发断点...,然后选择哪个其他断点启用此断点。
主题: Codesong (预览于 vscode.dev)
会话结束时关闭只读文件
当附加到调试器时,可能会有内部或虚拟源文件不存在于磁盘上,这些文件以只读方式打开。有一个新的设置,调试.在结束时关闭只读标签页这会导致 VS Code 在调试会话结束时自动关闭任何在会话期间打开的只读文件。
测试
更多运行测试的方法
按住Alt并点击一个测试装饰,现在在可用时以调试模式运行该测试。
现在在资源管理器视图中有了上下文菜单操作,可以用于运行某个文件或文件夹中声明的所有测试。
最终确定TestRunProfile.isDefault/更改默认值为扩展作者提供的API
之前,TestRunProfile.isDefault仅控制测试运行配置文件的初始默认状态,并且在此之后从未更改或读取过。
在此次发布中,用户更改其选定的配置文件将反映在TestRunProfile.isDefault财产和火灾 一个相应的TestRunProfile.当默认值更改时事件。同样,当扩展更改时是否默认这将导致用户界面中的选定配置文件更新。
语言
粘贴一个网址以自动生成一个Markdown链接
想要将你复制的链接变成一个Markdown链接?当你在Markdown文件中选定文本并粘贴一个URL时,VS Code现在会自动插入一个Markdown链接:
此功能由以下内容控制markdown.editor.pasteUrlAsFormattedLink.enabled设置。您可以更改以自定义此行为:
智能选择— 默认。当您选择文本并且不在代码块等特殊元素内时,此选项启用此功能。聪明— 与...相同智能选择但不需要选择。总是— 始终以Markdown链接的形式粘贴网址从不— 禁用粘贴为Markdown链接。
粘贴一个值后,您始终可以通过使用粘贴控件以不同的方式粘贴内容。
配置音频/视频片段用于Markdown
新的markdown.编辑器.文件粘贴.音频片段和markdown.editor.filePaste.videoSnippet设置允许您自定义在拖动或粘贴时如何将音频和视频文件插入Markdown。片段可以使用以下变量:
${src}— 已解决的音频/视频文件路径。${标题}— 视频/音频使用的标题。将自动为此变量创建一个片段占位符。
新更少语法
之前的Less语法已被存档,VS Code现在使用来自Better-Less的Less语法高亮。
新的Go语法
Go 语法高亮语法已更改为使用 Go Syntax,这比以前的语法维护得更加积极。
远程开发
这些远程开发扩展允许您通过SSH或远程隧道,或Windows子系统 for Linux(WSL)使用开发容器,作为功能齐全的开发环境。
亮点包括:
- 创建一个
devcontainer.json在你的用户数据文件夹中。 - 指定构建选项在
devcontainer.json使用Dockerfile时。
您可以在远程开发发布说明中了解更多有关这些功能的信息。
对扩展的贡献
GitHub Copilot
现在可以通过设置更改内联建议的字体系列编辑器内联建议字体家族输入:.
确认内联聊天再保存
我们强调负责任地使用AI,特别是在涉及源代码时。因此,我们添加了一个新设置,要求用户在保存由Copilot生成的代码之前进行确认。这个设置,立行聊天.接受或保存前丢弃默认启用。
主题: GitHub 轻量默认 (预览于 vscode.dev)
启用此设置时,文件保存将等待用户接受或拒绝任何待处理的内联聊天会话。这在自动保存启用时也适用,自动保存将暂时禁用,直到内联聊天结束。
按住以进入讲话模式
不久前,我们为 VS Code 添加了语音支持。安装 VS Code Speech 扩展,该扩展为聊天输入字段添加了语音转文本支持。
对于内置聊天,我们现在添加了“按住说话”,其工作方式如下:
- 按 Cmd+I 或 Ctrl+I 触发内联聊天。
- 按住钥匙并注意语音记录如何自动开始。
- 释放键以停止录制并将您的请求发送给 Copilot。
主题: GitHub 轻量默认 (预览于 vscode.dev)
这个新模式还带有一个设置,该设置默认启用,但可以禁用立式聊天.保持为语音输入:.
预览:内联聊天快速语音
除了“按住说话”之外,我们正在为这一功能试验一种更轻量的替代用户界面。按 Cmd+K 或 Ctrl+K 然后按住 我. 在持有我显示一个更轻量级的记录用户界面。发布时,发送请求。

即时聊天实时模式
过去的版本有一个新的实验性内联聊天模式,称为直播3它提供了一个更流畅的流媒体体验,并且更容易消化的差异视图。这现在已经毕业并取代了以前的直播-模式。默认仍然是现场预览,但我们鼓励用户尝试直播我们也在进行一项实验,以了解哪种模式最有效。
人工智能修复用灯泡(闪烁)
要调用 Copilot,您也可以在编辑器中使用灯泡指示器。选择一些内容或将光标移动到新行,选择灯泡,然后选择用 Copilot 修改或用 Copilot 生成。
如果没有其他代码操作,灯泡会闪烁并直接打开内联聊天。

#文件上下文变量
有一些上下文变量,您可以通过输入来使用#在聊天输入中,并且我们已经添加了#文件让你将指定文件包含在你的工作区中,作为与聊天提示的上下文。选择#文件从输入的建议控制中选择,然后从出现的快速选择中选择一个文件。
如果可能,文件的全部内容将被包含。如果文件太大无法放入上下文Windows中,将包含文件的大纲,包括函数及其描述(但不包括实现)。如果大纲也太大,则文件将不会成为提示的一部分。

聊天中的默认上下文
之前,我们默认会在您的聊天请求中包含两种类型的上下文来自活动代码编辑器:
- 如果有文本选择,则选择的内容将被包含。
- 如果没有选择,则当前编辑器的可见视图中的代码范围将被包括在内
我们发现,第二种情况会在你想要问一个通用问题时引起混淆,但LLM将其解释为你编辑器中的上下文代码问题。我们正在尝试默认不包括代码在视口中,只包括选定的代码。
当然,您经常需要询问在编辑器中可以看到的代码,因此我们添加了一个新的上下文变量,#编辑器输入:.

添加了“清除所有工作区聊天”命令
每次你使用输入:+ 按钮以开始新的聊天,您之前的聊天记录存储在您的工作区聊天历史中,您可以通过在聊天视图的标题中使用时钟图标来访问。我们添加了清空所有工作区聊天命令,以方便清除您所有的聊天记录。
提交信息语言
生成git提交信息的代码现在使用github.copilot.chat.localeOverride设置以生成特定语言的提交信息。
为私人仓库请求额外权限
为了启用额外的工作区搜索功能用于私人仓库,我们需要额外的权限。如果检测到我们还没有这些权限,我们将在启动时请求这些权限。一旦授予,我们会安全地存储会话以备将来使用。

Python
默认安装的Python调试器扩展
Python调试器扩展现在默认与Python扩展一起安装。
Python 调试器扩展旨在将调试功能与主要的 Python 扩展分离,以防止兼容性问题。这确保即使 Python 扩展停止支持较早的 Python 版本(例如,Python 3.7),您仍然可以继续使用这些版本来调试项目,而无需降级 Python 扩展。它还提供特定平台的构建,确保您仅收到与您的特定操作系统相关的组件,从而减少下载时间和不必要的开销。
这个新的扩展复制了主Python扩展中所有可用的功能,并且还有更多功能。
为了确保您正在使用新的Python调试器扩展,请替换 "类型": "python"与"类型": "debugpy"从你的launch.json配置文件。未来,Python 扩展将不再提供调试支持,我们将把所有调试支持转移到 Python 调试器扩展中,以实现所有调试功能。
在Python解释器快速选择中创建环境选项
您现在可以更方便地从Python解释器快速选择创建Python环境。运行Python: 选择解释器命令,然后选择创建环境选项为您的项目创建一个新的虚拟环境。
主题: Catppuccin Mocha (预览于 vscode.dev)
改进了工作区conda环境的显示
Python解释器快速选择现在显示位于工作区中的conda环境的名称,以便更容易地识别它们。

支持多级 pytest 类
在使用多级 pytest 类时,顶级类现在会显示在测试资源管理器中。以前,只有较低级别的类会显示。
主题: Catppuccin Mocha (预览于 vscode.dev)
朱庇特
为扩展作者完成 Jupyter 内核执行 API
Jupyter扩展用于在Jupyter内核上执行代码的API已经定稿。扩展可以使用该API在内核上执行代码。
API使用示例可以在Jupyter内核执行示例中找到。
npm 包@vscode/jupyter-extension包含所有 TypeScript 类型定义。
当一个扩展尝试访问Jupyter内核时,用户将被提示授予或撤销对内核的访问权限。
Jupyter内核的访问权限由用户根据扩展进行授予。这意味着用户可以授予扩展访问权限。输入:A,吊销扩展访问权限输入:B输入:.
用户可以通过命令 Jupyter: 管理 Jupyter 内核的访问权限 来管理和分配每个扩展的 Jupyter 内核的访问权限。
GitHub 拉取请求和问题
在GitHub Pull Requests and Issues扩展上取得了更多进展,该扩展允许您处理、创建和管理拉取请求和问题。新功能包括:
- 解决当前已检出的PR的冲突。
- 一个
分组依据用于发出查询的属性。 - 点击已检出 PR 中的永久链接将会在编辑器中打开该文件。
- 悬停在评论反应上会显示谁进行了反应。
- 设置
"githubPullRequests.focusedMode": "multiDiff"在检出时,将打开包含PR中所有文件的多差异编辑器。
查看0.80.0版本的更新日志,了解其他亮点。
预览功能
TypeScript 5.4 测试版支持
我们现在支持TypeScript 5.4的测试版发布。请查看TypeScript 5.4测试版博客文章和迭代计划以了解此版本的详细信息。亮点包括:
要开始使用TypeScript 5.4测试版,只需安装TypeScript Nightly扩展。请分享您的反馈,并告知我们您在使用TypeScript 5.4时遇到的任何问题。
快速搜索改进
在1.82版本中,我们引入了快速访问文本搜索(“快速搜索”),允许用户从选择器中搜索。 🔎
快速搜索现在具有以下功能:
- 在活动选择上查看编辑器预览。在编辑器上下文中浏览时查看结果。
- 从快速搜索到搜索视图的导航更方便。选择输入旁边或结果旁边的按钮将结果转移到搜索视图。
提议的API
每个里程碑都会带来新的提议API,扩展作者可以尝试它们。一如既往地,我们希望得到你的反馈。以下是尝试提议API的步骤:
- 找到一个你想尝试的提案 并将其名称添加到
package.json#启用的API提案输入:. - 使用最新的 @vscode/dts 并运行
npx @vscode/dts dev它将下载相应的d.ts将文件放入您的工作区。 - 您现在可以针对该提案进行编程。
您不能发布使用提议 API 的扩展。 下一次发布可能会有重大更改,我们绝不会破坏现有的扩展。
测试覆盖 API
这个里程碑,测试覆盖的API和编辑器内体验已经达到了功能完整的状态。我们鼓励扩展作者在VS Code 1.87版本发布之前尝试并提供反馈。
虽然这个API太长无法在此处包含,但我们认为它相当简单,并且欢迎你对问题 #123713中的提案提出意见。
聊天代理API
我们一直在开发一个API,以便扩展作者能够向VS Code的聊天视图中贡献自己的聊天代理。我们对API做了一些更改,包括:
- 当前传递给聊天代理的历史上下文能够正确地表示由给定消息调用的聊天代理和命令、历史消息中的变量值以及结果。
聊天代理任务已被移除,现在可以使用聊天进度消息在响应流的中间覆盖相同的情景。- 所有与"slashCommand"相关的术语已被重命名为"subCommand"。
如果您想尝试API,您可以从我们的示例聊天代理扩展开始,并订阅问题 #199908以获取API的更新。
代码操作亮点 API
对于提取方法或移动到文件等重构操作,有时并不清楚操作将应用于什么代码。对于像TypeScript这样的语言,尤为如此,这些语言试图智能地扩展用户当前的选择。
此 API 允许代码操作提供一个或多个范围范围[]) 它们将应用的范围。当用户悬停或通过代码操作列表时,该范围将被突出显示。
- 对于代码重构,这个范围将是当前文件中将被重构影响的代码。
- 对于快速修复,您可以突出显示相关的诊断。这已经在从快速修复中调用时完成。
editor.codeActionWidget.includeNearbyQuickFixes输入:.
问题报告者 API
对提议的API进行的小调整,允许两者都IssueUri请求处理程序和问题数据提供者一起使用。
还有对的改进vscode.commands.openIssueReporter命令,现在可以贡献额外的扩展数据并修改GitHub问题的URL。
订阅 第197863期 以获取API的更新或更改打开问题报告器命令。
评论反应器 API
该评论反应接口有一个新的反应堆属性,以便扩展可以指示谁对评论做出了反应。这些反应堆当前在评论反应的悬停中显示。
参见问题 #201131以跟踪此 API 的进展。
最终确定的API
新工作区保存和工作区.保存为应用程序编程接口
新的最终确定的API工作区保存和工作区.保存为允许扩展来触发保存编辑器的流程,无论是保存到其资源,还是要求用户提供资源。
所有保存方法都会返回结果乌里,或未定义如果操作被取消。未命名的文件将始终询问用户目标路径,除非已经关联了路径。
只读消息为文件系统提供程序应用程序编程接口
当注册一个文件系统提供程序与注册文件系统提供者, ,选项可以设置为将整个文件系统标记为只读。现在,如果是否只读选项被设置为一个Markdown字符串,那么当用户尝试在文件系统中编辑该文件时,该消息将显示在编辑器中。

工程
清洁工作
在12月初,我们进行了年度housekeeping。我们在各个代码库中总共清理了1891个问题。下面的图表很好地说明了我们年度housekeeping的必要性和影响。

Markdown 语言服务 0.4 发布
该Markdown 语言服务包为 VS Code 的内置 Markdown 支持提供支持。新的 0.4 版本捆绑了我们在过去半年中做出的多项改进,其他工具和编辑器也可以从中受益。以下是其中的一些亮点:
- 在Markdown中启用HTML片段的文档链接、引用和重命名。
- 修复正则表达式中潜在的灾难性回溯。
- 避免在补全上添加额外的编码。
- 使用模糊匹配进行工作区符号搜索。
- 修复了围绕链接检测/验证的多个案例。
新本地化2制作工艺函数本地化字符串更容易
在 VS Code 的核心代码库中,我们使用一种称为本地化字符串将本地化字符串和英文字符串并排显示。如果你使用语言包并打开命令面板,你可能会看到这一点。
以前,我们不得不将这些表达式写成这样:
常量 字符串 = { 值: 本地化('id', 'Hello World'), 原始值: 'Hello World' };
这现在可以表达如下:
常量 字符串 = 本地化2('id', 'Hello World');
我们的本地化管道将随后处理这些本地化2出现次数。
Electron 27 更新
在这一里程碑中,我们正在向使用我们稳定版本的用户推广Electron 27更新。此更新包含Chromium 118.0.5993.159和Node.js 18.17.1。我们感谢所有在Insiders版本上自托管并提供早期反馈的每个人。
Linux 最低要求更新
在这个里程碑中,我们已经更新了工具链以构建我们的桌面客户端。从此次发布开始,VS Code 桌面版仅兼容基于 glibc 2.28 或更高版本、glibcxx 3.4.25 或更高版本的 Linux 发行版,例如 Debian 10、RHEL 8 或 Ubuntu 20.04。
如果您无法升级您的 Linux 发行版,推荐的替代方案是使用我们的网页客户端。如果您想使用桌面版本,那么您可以下载 VS Code 版本 1.85。根据您的平台,确保禁用更新以保持该版本。一个很好的建议是使用便携模式进行安装。
重要修复
谢谢
最后但同样重要的,向VS Code的贡献者们致以深深的谢意。
问题跟踪
对我们的问题跟踪的贡献:
拉取请求
贡献于Visual Studio Code输入:
- @a-stewart (安东尼·斯图尔特)
- 触发输入事件
编辑器操作:剪贴板粘贴操作公关 #198822 - 日志
扩展位置不是位置在错误信息中从位置获取自定义和内置扩展公关 #200748
- 触发输入事件
- @Ajaykumbhare (Ajay Kumbhare):修复:在编辑区域终端重命名未按预期功能PR #202270
- @andrewbranch (Andrew Branch):修复 preferTypeOnlyAutoImports 首选项获取器 PR #201376
- @aramikuto (阿列克谢·康德拉绍夫):更新 IExplorerView 接口PR #201992
- @audreygao (Audrey Ya Gao):修复 #193468 - 修复按非可扩展引用项的“l”时错误通知的错误。PR #199996
- @bricker (布莱恩·里克):文档拼写错误修正 PR #202429
- @callumok2004 (Callum OKane):添加
bun.lockb恢复 package.json 下的默认文件嵌套 PR #201065 - @CGNonofr (Loïc Mangeonjean):考虑之前创建的模型PR #199652
- @chartrandf (Francis Chartrand):时间线:使用跟随选项,以便时间线跟随文件超越重命名PR #187174
- @conwnet (netcon):修复:
工作台.编辑器关联在工作台配置默认值中无法工作 PR #194087 - @cpendery (查普曼·彭德里)
- 修复:终端建议定位PR #199420
- 修复:接受终端完成光标位置 PR #199706
- 构建:当 'shellIntegration.suggestEnabled' 为真时启用建议PR #199821
- 重写:将xterm建议插件合并到terminalContribPR #200107
- @DiscreteTom (DiscreteTom):修复 #193746 PR #197523
- @effectivecui:避免在 item.children 为空时进入无限循环。PR #201701
- @Flanker32 (刘汉晓):更新Java工作区标签PR #197729
- @gayanper (Gayan Perera):添加对断点依赖的支持 PR #166202
- @GenericTSDeveloper:修复了建议详情小部件的对齐问题 (https://github.com/microsoft/monaco-editor/issues/3373) PR #198730
- @gjsjohnmurray (约翰·默里)
- 在列表查找/过滤匹配之间实现键盘导航PR #180078
- 在过滤Git分支/标签快速选择时保持排序顺序(修复 #199471)PR #199473
Git: 合并分支...选择器在描述中重复了分支名称(修复 #199562)PR #199742- 修复
自定义布局与活动栏相关的错误 (修复 #200571) PR #200572
- @gregvanl (Greg Van Liew):添加缺失的逗号PR #201137
- @harbin1053020115 (ermin.zem):修复:在开发模式下根据当前颜色主题选择主题PR #190035
- @hsfzxjy (谢静怡):将Defer onDidStyleChange延迟到Repl可见时PR #200473
- @iisaduan (Isabel Duan):修复 typescript/54492:检查文件重命名是否更改扩展名PR #200220
- @impressivewebs (Louis Lazaris)
- 修正了一些CSS术语PR #202125
- 修正了CSS悬停文档文本PR #202142
- @irgendwr (Jonas Bögle):添加:在git scm菜单中添加“关闭其他仓库”PR #130931
- @jacekkopecky (Jacek Kopecký):修复 #198566:椭圆裁剪左切搜索预览PR #198567
- @jaraco (Jason R. Coombs):添加从 xonsh 提取环境的支持。PR #201036
- @jeanp413 (让·皮埃尔)
- 修复 vscode.tasks.executeTask 错误:意外:在 task.terminate() 后任务不存在 PR #200872
- 修复单个标签上下文菜单操作有时无法工作PR #201021
- 修复任务进度指示器在第一次之后不显示PR #201064
- 修复单终端标签页重命名操作无法工作PR #201128
- @johnsoncodehk (Johnson Chu):修复可选替换跨度未应用于完成条目PR #200945
- @JoyceGu (Joyce Gu):添加JS向量数据库库PR #199980
- @jtbandes (Jacob Bandes-Storch):更新 Swift.tmLanguage PR #200698
- @keerthivasansa (Keerthi Vasan S A):工作台树模糊搜索切换操作PR #175137
- @khreenberg (Kim Reenberg):修复:对于非可执行的libc.so.6,回退到字符串PR #202581
- @kkocdko (kkocdko):修复 Node.js 21 之后的平台检测PR #200935
- @ksg97031 (KSG): 文档:修正“转到”命令中多个参数描述中的拼写错误PR #201122
- @Leask (Sixia "Leask" Huang):修复:调整调用 ldconfig 的检查要求PR #202645
- @loganrosen (Logan Rosen):更新 CONTRIBUTING.md 中的 Stack Overflow 标签PR #126199
- @mahmoudsalah1993 (Mahmoud Salah):对于打开的差异编辑器,解析底层原始编辑器以设置……PR #201597
- @Malix-off (Malix):移除未使用的导入
扩展/git/src/api/git.d.ts新闻稿编号 #200797 - @marrej (Marcus Revaj): # 修复部分接受的丢弃 PR #199663
- @MaxBR97:添加了scm.inputMinLines配置PR #200551
- @mohammadamin16 (Mohammad Amin):调试:在结束调试会话时关闭只读标签PR #199898
- @mrienstra (迈克尔·里恩斯特拉): 文档:记录新的
配置.标记.复制文件.目标选项 PR #203391 - @MrJithil (Jithil P Ponnan):琐事:将已弃用的八进制转义序列替换为十六进制PR #197518
- @ngarside (Nathan Garside):添加语法高亮
*.repo文件 PR #199859 - @nrayburn-tech (Nicholas Rayburn): npm 扩展 - 在查找文件之前检查根 package.jsonPR #124803
- @poeck (保罗·克克):琐事:更新版权年份PR #202344
- @r3m0t (Tomer Chachamu):在粘贴命令中等待粘贴完成(修复 #196161)PR #196516
- @RedCMD (红命令)
- 更改小写
输入:l转为大写输入:L。asp-vb-net.tmLanguage.json公关 #201981 onDidChangeEmmiter不应该经常燃烧 PR #202198
- 更改小写
- @remcohaszing (Remco Haszing)移除 bigNumbersDelta PR #194712
- @RobbyCBennett (Robby Bennett):使 relatedInformation 的 gotoErrorWidget 样式与 markerHoverParticipant 的样式更加一致PR #195409
- @robertohuertasm (Roberto Huertas):功能(stashes):返回stashes结果PR #177732
- @ronakj (Ronak Jain):修复使用自定义节点路径时 tsserver 挂掉的问题 PR #201966
- @russelldavis (Russell Davis):修复了关闭文件时问题恢复的竞争条件PR #183271
- @samhanic: [CLI] 扩展更新命令 PR #199893
- @shubhisroking (Shubh):将已弃用的canceled替换为Cancellation Error。PR #197605
- @SimonSiefke (西蒙·西夫克)
- 修复:菜单栏中的内存泄漏PR #198052
- 修复:默认工作线程工厂中的内存泄漏PR #198710
- @sparxooo (sparxooo):修复 #200257 以及现有的尾随非数字正则表达式修复PR #200919
- @Splizard (Quentin Quaadgras):Mobile/Android:支持使用笔/触控笔进行文本选择。PR #198578
- @susiwen8 (susiwen8)
- 修复: #200046 PR #200485
- 修复:
安装在npm 脚本不应被打开 PR #201082
- @VDisawal: #198975: saveValue => historyNavigator.add PR #199142
- @wenfangdu (文芳杜): feat(git): added
自动关闭括号对在语言配置文件中 PR #131403 - @Yesterday17 (Yesterday17):修复 ExtHostLabelService 错误PR #198855
- @yiliang114 (易良):修复:fetchUrl 的控制台格式PR #198909
- @zWingz (zWing):修正 registerProfileContentHandler 的拼写错误 PR #183197
贡献于vscode-flake8输入:
- @maxg203 (Max Goodridge):修复 README.md 中的链接PR #269
贡献于vscode-十六进制编辑器输入:
- @IngilizAdam (Hasan Tuna):在偏移量之间选择PR #470
贡献于vscode语言服务器节点输入:
- @debonte (埃里克·德·邦特):支持
工作区编辑元数据在工作区/应用编辑公关 #1390 - @MariaSolOs (玛丽亚·何塞·索拉诺)
- @rroessler (Reuben Roessler):更改了节点客户端的成功退出通知PR #1404
- @sh-cho (Seonghyeon Cho):用 Azure 管道更新构建状态徽章PR #1392
- @werat (Andy Hippo):始终在
取消注册()公关 #1380
贡献于vscode-拉取请求-GitHub输入:
- @Balastrong (Leonardo Montini):从markdown模板创建问题PR #5503
- @joshuaobrien
- @pouyakary (Pouya Kary ✨):修复 #5620PR #5621
贡献于vscode-vsce输入:
- @sebas2day (Sebastiaan Brouwer):功能:支持yarn工作区PR #493
- @whosafe:从其他平台过滤数据PR #912
贡献于语言服务器协议输入:
- @alcarney (亚历克斯·卡尼)
- @asukaminato0721 (Asuka Minato):添加-vscoq PR #1869
- @BeardedFish (Darian Benam):将Apache Dispatcher配置添加到语言服务器实现列表中 PR #1875
- @DanTup (Danny Tuppeny):澄清片段转义规则PR #1868
- @Fomys (Louis Chauvet):明确 CompletionItem.textEdit 备注PR #1722
- @mhanberg (米切尔·汉伯格):修正工作区/配置中的拼写错误PR #1823
贡献于摩纳哥编辑器输入:
- @kokovtsev (德米特里·科科夫采夫):修复:在JSON完成细节中启用MarkdownPR #4210
- @mevisioam:暴露JSON工作器PR #4299
- @nora-soderlund (Nora Söderlund):chore(docs):修复 monaco.d.ts 链接PR #4243
- @OfekShilon (Ofek)
- @soof-golan (Soof Golan):功能:支持 Python 3.12 关键字PR #4212
- @tamayika:将JSON符号信息更改为文档符号PR #3894
贡献于节点-jsonc-解析器输入:
- @H4ad (Vinicius Lourenço): perf(format): 尽量将缓存分行和空格PR #81