2025 年 2 月 (版本 1.98)
更新 1.98.1:此更新解决了这些问题。
更新 1.98.2:此更新解决了这些问题。
下载:Windows:x64 Arm64 | Mac:通用 Intel Apple 芯片 | Linux:deb rpm tarball Arm (常见问题) snap
欢迎来到 Visual Studio Code 2025 年 2 月发布版本。此版本中有许多我们希望您会喜欢的新功能,其中一些主要亮点包括
- 下一个编辑建议 (预览) - Copilot 预测您可能要进行的下一个编辑。
- 代理模式 (预览) - Copilot 自主完成任务。
- Copilot Edits 笔记本支持 - 快速迭代修改您的笔记本。
- Copilot Vision - 在聊天提示中附加图像并与图像交互。
- 代码搜索 - 让 Copilot 为您的聊天提示查找相关文件。
- 终端智能感知 (预览) - 为您的终端提供丰富的完成支持。
- 拖放引用 - 在新编辑器中快速打开查看引用。
- Linux 自定义标题栏 - 默认在 Linux 上启用自定义标题栏支持。
- 未解决的诊断 (预览) - 在提交时提示未解决的诊断问题。
- 源代码管理软删除 - 将未跟踪的文件移动到垃圾桶而不是删除它们。
- 自定义指令普遍可用 (GA) - 使用自定义指令根据您的需求调整 Copilot。
如果您想在线阅读这些发布说明,请访问 code.visualstudio.com 上的更新页面。Insiders 版本: 想尽快试用新功能吗?您可以下载每夜构建的 Insiders 版本,并在最新更新可用时立即试用。
GitHub Copilot
Copilot 功能可能经过不同的早期访问阶段,这些阶段通常通过设置启用和配置。
阶段 | 描述 |
---|---|
实验性 | 该功能仍在开发中,尚未准备好普遍使用。 查看实验性功能 ( @tag:experimental )。 |
预览 | 该功能仍在完善中,但已可使用。欢迎提供反馈。 查看预览功能 ( @tag:preview )。 |
稳定 | 该功能已准备好普遍使用。 |
Copilot Edits
代理模式改进 (实验性)
上个月,我们在 VS Code Insiders 中为 Copilot Edits 引入了代理模式。在代理模式下,Copilot 可以自动搜索您的工作区以获取相关上下文、编辑文件、检查错误,并运行终端命令(经您许可),以端到端地完成任务。
注意:代理模式目前在 VS Code Insiders 中可用,并且我们刚刚开始在 VS Code Stable 中逐步推出。一旦为您启用了代理模式,您将在 Copilot Edits 视图中看到一个模式下拉列表 — 只需选择 Agent。
本月我们对工具用法的用户体验进行了几项改进
- 终端命令现在以内联方式显示,以便您可以跟踪运行了哪些命令。
- 您可以在运行建议的终端命令之前,在聊天回复中对其进行编辑。
- 使用 ⌘Enter (Windows、Linux Ctrl+Enter) 快捷键确认终端命令。
代理模式自主搜索您的代码库以查找相关上下文。展开消息以查看执行了哪些搜索的结果。
我们还对代理模式的提示和行为进行了各种改进
- 聊天中的撤消和重做操作现在撤消或重做聊天回复中进行的最后一个文件编辑。这对于代理模式很有用,因为您现在可以撤消模型执行的某些步骤,而无需回滚整个聊天回复。
- 代理模式现在可以自动运行或在被指示时运行您的构建任务。如果您发现模型在不应运行任务时运行任务,可以通过 github.copilot.chat.agent.runTasks 设置禁用此功能。
详细了解Copilot Edits 代理模式或阅读代理模式公告博客文章。
注意:如果您是 Copilot Business 或 Enterprise 用户,您的组织管理员必须选择启用 Copilot "Editor Preview Features",代理模式才能可用。
Copilot Edits 的笔记本支持 (预览)
我们将在 VS Code Insiders 中以预览功能的形式引入 Copilot Edits 的笔记本支持。您现在可以使用 Copilot 编辑笔记本文件,获得与编辑代码文件相同的直观体验。从头开始创建新笔记本、修改多个单元格中的内容、插入和删除单元格以及更改单元格类型。此预览功能在处理数据科学或文档笔记本时提供了无缝的工作流程。
注意:此功能目前仅在安装了 GitHub Copilot Chat 预发布版本的 VS Code Insiders 中可用。我们将在未来的发布版本中继续改进体验,然后将其引入 VS Code Stable。
优化的编辑器集成
我们优化了 Copilot Edits 与代码和笔记本编辑器的集成
- 应用更改时不再需要滚动。视口保持在原位,更容易专注于更改的内容。
- 将编辑审查操作从“接受”更名为“保留 (Keep)”,将“丢弃”更名为“撤消 (Undo)”,以更好地反映实际情况。Copilot Edits 的更改是实时的,它们在进行时即被应用和保存,用户可以选择保留或撤消它们。
- 保留或撤消文件后,会自动显示下一个文件。
视频演示了编辑如何实时应用和保存。实时预览会更新,用户决定“保留 (Keep)”更改。仍然可以撤消和进一步调整。
刷新的用户界面
为了准备将 Copilot Edits 与 Copilot Chat 统一,我们对 Copilot Edits 进行了改版。已附加但尚未发送的文件现在显示为常规聊天附件。只有经过 AI 修改的文件才会添加到已更改文件列表,该列表位于聊天输入区域上方。
通过 chat.renderRelatedFiles 设置,您可以启用获取相关文件建议的功能。相关文件建议显示在聊天附件下方。
移除 Copilot Edits 限制
之前,在 Copilot Edits 中,您只能在提示中附加最多 10 个文件。在此版本中,我们移除了此限制。此外,我们还移除了每 10 分钟 14 次交互的客户端速率限制。
请注意,服务端的用量速率限制仍然适用。
自定义指令普遍可用 (GA)
设置:github.copilot.chat.codeGeneration.useInstructionFiles
自定义指令使您能够根据您和您的团队的工作方式调整 GitHub Copilot,以提供聊天回复和代码建议。在工作区中的 .github/copilot-instructions.md
文件中以 Markdown 格式描述您的具体要求。
在这个里程碑中,我们使带有 .github/copilot-instructions.md
的自定义指令普遍可用 (GA)。请确保 github.copilot.chat.codeGeneration.useInstructionFiles VS Code 设置已启用,Copilot 在生成回复时将使用这些指令。
详细了解 Copilot 中的自定义指令。
聊天中更流畅的身份验证流程
如果您将源代码托管在 GitHub 仓库中,您就可以利用多种功能,包括高级代码搜索、@github
聊天参与者等!
但是,对于私有 GitHub 仓库,VS Code 需要具有与您在 GitHub 上的仓库交互的权限。过去,这会通过我们常规的 VS Code 身份验证流程来呈现,当您调用某些功能时(例如,向 @workspace
或 @github
提问,或使用 #codebase
工具),会弹出一个模态对话框。
为了使此体验更流畅,我们在聊天中引入了此确认
它不仅不像模态对话框那样突兀,还具有新功能
- 授予 (Grant): 您将像以前一样(通过模态框)进行常规身份验证流程。
- 暂不 (Not Now): VS Code 会记住您的选择,直到下次 VS Code 窗口会话才会再次打扰您。唯一的例外是如果该功能需要此附加权限才能运行,例如
@github
。 - 不再询问 (Never Ask Again): VS Code 会记住您的选择,并通过 github.copilot.advanced.authPermissions 设置将其持久化。任何需要此附加权限的功能都将失败。
需要注意的是,此确认不会确认或拒绝 Copilot(服务)访问您的仓库。这仅是 VS Code 的 Copilot 体验如何进行身份验证的方式。要配置 Copilot 可以访问的内容,请阅读有关内容排除的文档。
Copilot Chat 中更高级的代码库搜索
设置:github.copilot.chat.codesearch.enabled
当您在 Copilot Chat 查询中添加 #codebase
时,Copilot 会帮助您在工作区中查找与您的聊天提示相关的代码。#codebase
现在可以运行文本搜索和文件搜索等工具,从您的工作区中提取额外的上下文。
设置 github.copilot.chat.codesearch.enabled 以启用此行为。完整的工具列表如下
- 基于嵌入的语义搜索
- 文本搜索
- 文件搜索
- Git 已修改文件
- 项目结构
- 读取文件
- 读取目录
- 工作区符号搜索
将问题作为聊天上下文附加
为了帮助您修复工作区中的代码或其他问题,您现在可以将“问题”面板中的问题作为上下文附加到聊天中,以供您的提示使用。
您可以将“问题”面板中的项拖放到聊天视图中,或在提示中输入 #problems
,或选择回形针 📎 按钮。您可以附加特定的问题、文件中的所有问题或代码库中的所有文件。
将文件夹作为上下文附加
之前,您可以通过从“资源管理器”视图中拖放来将文件夹作为上下文附加。现在,您还可以通过选择回形针 📎 图标或在聊天提示中输入 #folder:
后面加上文件夹名称来附加文件夹。
下一个编辑建议的折叠模式 (预览)
设置:
我们为 NES 添加了折叠模式。启用此模式后,仅在左侧编辑器边距显示 NES 建议指示器。仅当您按下 Tab 导航到代码建议时,才会显示代码建议本身。连续的建议会立即显示,直到某个建议未被接受。
折叠模式默认禁用,可以通过配置 editor.inlineSuggest.edits.showCollapsed 来启用,或者您可以在 NES 侧边栏指示器菜单中启用或禁用它。
更改补全模型
您之前已经可以更改 Copilot Chat 和 Copilot Edits 的语言模型,现在您还可以更改内联建议的模型。
或者,您可以通过命令面板中的更改补全模型命令或标题栏中 Copilot 菜单中的配置代码补全项来更改用于代码补全的模型。
注意:可用模型的列表可能会随时间变化。如果您是 Copilot Business 或 Enterprise 用户,您的管理员需要在 GitHub.com 的Copilot 策略设置中选择启用
Editor Preview Features
,才能为您的组织启用某些模型。
模型可用性
此版本中,我们增加了在使用 Copilot 时可以选择的模型。以下模型现在可在 Visual Studio Code 和 github.com 聊天中的模型选择器中使用
-
GPT 4.5 (预览):OpenAI 的最新模型 GPT-4.5 现在已面向 Copilot Enterprise 用户在 GitHub Copilot Chat 中可用。GPT-4.5 是一种大型语言模型,在直觉、写作风格和广泛知识方面具有先进能力。详细了解 GPT-4.5 模型的可用性,请参阅GitHub 博客文章。
-
Claude 3.7 Sonnet (预览):Claude 3.7 Sonnet 现已向所有付费 Copilot 计划的客户提供。这种新的 Sonnet 模型支持 Copilot 中的思考模式和非思考模式。在初步测试中,我们发现代理场景的改进尤其显著。详细了解 Claude 3.7 Sonnet 模型的可用性,请参阅GitHub 博客文章。
Copilot Vision (预览)
在此版本的 Copilot Chat 中,我们正在快速推出端到端的视觉支持。这使您可以在聊天提示中附加图像并与图像进行交互。例如,如果在调试时遇到错误,可以附加 VS Code 的屏幕截图,并请 Copilot 帮助您解决问题。您还可以使用它附加一些 UI 模型图,让 Copilot 提供一些 HTML 和 CSS 来实现该模型图。
您可以通过多种方式附加图像
- 从操作系统或“资源管理器”视图中拖放图像
- 从剪贴板粘贴图像
- 附加 VS Code 窗口的屏幕截图(选择回形针 📎 按钮 > 屏幕截图窗口)
如果当前选择的模型不具备处理该文件类型的能力,将显示警告。目前唯一支持的模型是 GPT 4o
,但很快也将推出对 Claude 3.5 Sonnet
和 Gemini 2.0 Flash
图像附件的支持。目前支持的图像类型包括 JPEG/JPG
、PNG
、GIF
和 WEBP
。
Copilot 状态概览 (实验性)
设置:chat.experimental.statusIndicator.enabled
我们正在试验一种新的集中式 Copilot 状态概览,它能快速显示您的 Copilot 状态和关键编辑器设置
- 如果您是Copilot Free 用户,则显示配额信息
- 编辑器相关设置,例如代码补全
- 使用其他 Copilot 功能的有用键盘快捷键
可通过状态栏中的 Copilot 图标访问此 Copilot 状态概览。
使用 chat.experimental.statusIndicator.enabled 设置启用 Copilot 状态概览。
TypeScript 内联补全上下文 (实验性)
设置:chat.languageContext.typescript.enabled
我们正在试验为 TypeScript 文件提供增强的内联补全和 /fix
命令上下文。该实验目前仅限于 Insider 版本,可以使用 chat.languageContext.typescript.enabled 设置启用。
Pull Request 标题和描述的自定义指令
您可以使用 github.copilot.chat.pullRequestDescriptionGeneration.instructions 设置为生成 Pull Request 标题和描述提供自定义指令。您可以将设置指向工作区中的文件,或在设置中内联提供指令。详细了解如何在 VS Code 中自定义 Copilot。
以下示例展示了如何在设置中内联提供自定义指令。
{
"github.copilot.chat.pullRequestDescriptionGeneration.instructions": [
{
"text": "Prefix every PR title with an emoji."
}
]
}
生成标题和描述需要安装 GitHub Pull Requests 扩展。
辅助功能
Copilot Edits 辅助功能
我们大幅提高了 Copilot Edits 的辅助功能。
- 现在,对于有修改的文件和已更改的区域(插入、修改和删除),都会有音频信号。
- 修改过的文件现在可以使用辅助功能差异查看器。就像在差异编辑器中一样,选择 F7 以启用它。
`activeEditorState` 窗口标题变量
我们有一个新的 window.title 变量 activeEditorState
,用于向屏幕阅读器用户指示编辑器信息,例如修改状态、问题数量以及文件何时有待处理的 Copilot Edits。在屏幕阅读器优化模式下,此变量默认附加,可以使用 accessibility.windowTitleOptimized 禁用。
工作台
Linux 上的自定义标题栏
自定义标题栏现在在 Linux 上默认启用。自定义标题栏让您可以访问布局控件、Copilot 菜单等。
您始终可以恢复为原生的标题装饰,可以通过自定义标题上下文菜单或将 window.titleBarStyle 配置为 native
来实现。
我们很高兴收到有关此体验的持续反馈,并已根据现有反馈着手改进未来里程碑中的此功能。
在辅助侧边栏视图中使用标签
我们决定更改辅助侧边栏中视图的显示方式,使用标签而不是图标,类似于面板区域。这使得更容易区分不同的视图,例如 Copilot Edits 和 Copilot Chat 视图。您可以随时通过配置 workbench.secondarySideBar.showLabels 切换回显示图标。
新的设置编辑器键匹配算法 (预览)
设置:workbench.settings.useWeightedKeySearch
我们添加了一种新的设置编辑器搜索算法,它优先考虑更相关的键匹配。该搜索算法尝试以比以前更多的方式匹配设置 ID 和标签,但它也会更进一步过滤结果,以便仅显示最佳匹配类型。
通过启用 workbench.settings.useWeightedKeySearch 设置,您可以试用此预览功能。
主题:Light Pink (在 vscode.dev 上预览)
在简单文件选择器中隐藏点文件的选项
使用简单文件选择器时(无论连接到远程还是使用 files.simpleDialog.enable 设置),您现在可以通过使用显示/隐藏点文件按钮来隐藏点文件。
编辑器
查看引用拖放支持
查看视图现在支持拖放。调用查看引用、查看实现或任何其他查看命令,然后从其树形视图中拖动条目,即可将其作为单独的编辑器打开。
主题:GitHub Light Colorblind (Beta) (在 vscode.dev 上预览)
出现次数高亮延迟
编辑器内出现次数高亮的延迟现在默认设置为 0。这使得整体编辑器感觉更具响应性。您仍然可以通过 editor.occurrencesHighlightDelay 设置控制延迟。
源代码管理
更新的视图标题
当我们在“源代码管理”视图中添加源代码管理图视图时,它强调了“源代码管理”视图中区域标题的重复:“源代码管理仓库”、“源代码管理”和“源代码管理图”。在此里程碑中,我们重新审视了视图的标题,使其更短,不再重复视图标题:“仓库”、“更改”和“图”。
丢弃未跟踪的更改改进
设置:git.discardUntrackedChangesToTrash
多年来,我们收到了许多关于数据丢失的报告,因为丢弃未跟踪的文件会永久删除该文件,尽管 VS Code 会显示一个模态对话框明确指出文件将被永久删除。从这个里程碑开始,丢弃未跟踪的文件将尽可能将其移动到回收站/垃圾桶,以便轻松恢复。您可以使用 git.discardUntrackedChangesToTrash 设置禁用此功能。
诊断提交钩子 (实验性)
git.diagnosticsCommitHook.Enabled
设置:
- git.diagnosticsCommitHook.Sources
- 在此里程碑中,我们引入了一个新的提交钩子,如果更改的文件存在任何未解决的诊断问题,它会提示您。这目前是一个实验性功能,可以使用 git.diagnosticsCommitHook.Enabled 设置启用。
默认情况下,此提交钩子会对任何错误级别的诊断问题进行提示,但诊断来源和级别可以使用 git.diagnosticsCommitHook.Sources 设置进行自定义。请尝试一下,并向我们提供您的反馈。
内联笔记本差异视图 (实验性)
笔记本
设置:notebook.diff.experimental.toggleInline
您现在可以为笔记本启用内联差异视图。此功能使您可以在单个内联视图中查看笔记本单元格内的更改,而不是传统的并排比较。
将 notebook.diff.experimental.toggleInline 设置为 true
即可启用此功能。然后,您可以使用右上角的编辑器菜单将差异视图切换为内联模式。
笔记本内联值悬停
笔记本内联值现在会截断其装饰以适应视口宽度,并通过丰富的悬停提示显示完整值,同时保持空白格式。这保持了数据框等变量的形状,使值更易于一目了然地阅读。
设置:terminal.integrated.suggest.enabled
终端智能感知 (预览)
我们通过添加补全规范(例如 git
)、改进命令行解析以提供更好的建议以及增强文件和文件夹补全,显著改进了跨 bash、zsh、fish 和 PowerShell 的终端 Shell 补全。使用 terminal.integrated.suggest.enabled 启用此功能。
增强的 Fig 补全支持
我们利用 Fig 补全规范来为特定的 CLI 提供智能补全。之前我们只有少量这些规范,但在此次迭代中,我们向 VS Code 中附带的列表中添加了以下 CLI
基本工具:cat
, chmod
, chown
, cp
, curl
, df
, du
, echo
, find
, grep
, head
, less
, ls
, mkdir
, more
, mv
, pwd
, rm
, rmdir
, tail
, top
, touch
, uname
- 进程工具:
kill
,killall
,ps
- 包管理器:
apt
,brew
- Node.js 生态系统:
node
,npm
,npx
,nvm
,pnpm
,yarn
- SCM、语言、编辑器:
git
,nano
,python
,python3
,vim
- 网络:
scp
,ssh
,wget
- 除了新的规范之外,我们现在还支持生成器,它在请求时通过运行命令来动态生成补全。一个实际示例是显示
git checkout
的所有分支
主题:Sapphire (在 vscode.dev 上预览)
在幕后,这会运行 git --no-optional-locks branch -a --no-color --sort=-committerdate
命令来获取分支列表,然后将它们处理成补全。类似的方法也用于获取标签。
可配置的快速建议
设置:terminal.integrated.suggest.quickSuggestions
设置:terminal.integrated.suggest.quickSuggestions
与编辑器类似,即时建议是在您键入任何内容时自动显示的 IntelliSense,与触发字符(例如输入 \
或 -
等特定字符时显示)相对。新的 terminal.integrated.suggest.quickSuggestions 设置允许精确控制何时显示即时建议。
默认值之前对命令和参数启用即时建议,现在默认禁用,回退到路径建议,因为我们听说路径建议通常不适用,可能令人烦躁。这是默认值。
"terminal.integrated.suggest.quickSuggestions": {
"commands": "on",
"arguments": "on",
"unknown": "off"
}
行内建议检测
设置:terminal.integrated.suggest.inlineSuggestion
迄今为止,行内建议检测的一个问题是来自不同来源的建议造成的混乱。具体来说,是在 shell 中键入时经常出现的行内建议。
这些建议实际上是 shell 级别的功能(fish/zsh 中的自动建议,pwsh 中的预测等),对用户来说可能不那么明显,尤其是在与 IntelliSense 同时显示时。
IntelliSense 功能要求我们检测这种行内建议,之前使用的是一种朴素的实现,只检查文本是否使用了微弱或斜体 SGR 属性进行样式化。事实证明这不足够,不仅在用户自定义样式时不足够,而且 fish shell 默认也不使用这些样式。现在,我们通过分析命令行上下文和光标位置来检测大多数情况。
基于这种新的改进检测,行内建议现在作为顶部选项显示,并带有一个星形图标,这既与编辑器的行为方式更接近,也更清楚地表明在这种情况下 kstyle(Tab)
将会做什么。
默认情况下始终将此建议显示为顶部建议,但可以使用 terminal.integrated.suggest.inlineSuggestion 进行配置。
详细命令补全
bash 和 zsh 内置命令以及 PowerShell 命令的补全现在更加详细,提供了可用参数的详细信息。这些信息来自 shell 的文档或帮助命令。
对于 bash,使用 help <command>
获取基本描述
对于 zsh,使用 man zshbuiltins
获取详细描述
对于 PowerShell,补全中显示了更多 Get-Command
的属性
改进排序
命令补全现在具有改进的排序,具体来说:
- 具有更多详细信息的补全通常出现在详细信息较少的补全之上
- 内置命令优先于
$PATH
中的路径
对于路径,进行了以下改进:
- 以
_
开头的路径会被扣分,因为这通常表示它们是特殊的,通常不应过多更改(例如,__init__.py
)。 - 排序时忽略标点符号,因此以
.
开头的文件将与其他文件混合在一起。
CDPATH 支持
设置:terminal.integrated.suggest.cdPath
$CDPATH
环境变量是一个常见的 shell 功能,它包含一个冒号分隔的路径列表,类似于 $PATH
,并允许导航到这些路径,就好像它们是相对路径一样,无论当前工作目录是什么。Fish 实际上在 cd
tab 补全中显示 CDPATH 条目。
现在,我们支持在使用 cd
时将 $CDPATH
条目显示为补全。
此功能也可在 Windows 上使用(使用 ;
分隔符),并且不需要 shell 原生支持此功能,因为默认情况下使用的是绝对路径。
可以使用 terminal.integrated.suggest.cdPath 进行配置。
绝对路径
现在支持绝对路径。
别名支持
现在还检测 bash、zsh 和 fish 的命令别名,并具有一个新的独特图标。
区分选项和标志
CLI 选项(有值)和标志(无值)现在通过不同的图标在 UI 中区分。
任务
任务重新运行操作
我们为终端添加了一个新的重新运行任务操作,⌃⇧R (Windows, Linux Ctrl+Shift+R)。此操作显示在终端选项卡的行内工具栏和终端的上下文菜单中。
调试
调试行内值悬停
如果启用了 debug.inlineValues 设置,行内值装饰现在具有行内悬停功能,使一目了然地阅读较长的值变得更容易。
语言
TypeScript 5.8
VS Code 现在包含 TypeScript 5.8.2。此重大更新带来了新的语言改进,包括改进的条件表达式类型检查以及支持编写符合 Node 新的 --experimental-strip-types 选项的代码。它还包括了许多工具改进和错误修复。
请查看TypeScript 5.8 发布博客以获取此更新的更多详细信息。
远程开发
远程开发扩展允许您使用开发容器、通过 SSH 连接的远程机器或远程隧道,或者适用于 Linux 的 Windows 子系统 (WSL) 作为功能齐全的开发环境。
亮点包括:
- Linux 旧版服务器的 EOL (End of Life)
- 扩展的代理配置能力
您可以在远程开发发行说明中了解有关这些功能的更多信息。
企业支持
允许扩展的多行支持
现在,您可以使用多行字符串在 Windows 的组策略中配置允许的扩展。这允许更灵活和广泛地配置允许的扩展。详细了解配置允许的扩展。
对扩展的贡献
Python
拆分长字符串时自动插入引号
Pylance 现在支持自动插入引号,以便在拆分长字符串时提供无缝体验。
Pylance 内存消耗改进
进行了一些优化以改善 Pylance 的内存消耗,尤其是在使用大型工作区时。此增强功能是在 Pyright 中完成的,Pyright 是支持 Pylance 语言服务器功能的静态类型检查器。
Python shell 集成改进
修改 python.terminal.shellIntegration.enabled 后,不再需要重新加载即可使更改生效。只需创建一个新的终端即可在终端中的 Python REPL 上看到所需的更改。
Windows Git Bash 的正确工作区提示
在 Windows 上使用 Git Bash 的 Python 用户现在将在其终端提示中看到正确的工作目录。这些更改适用于选择加入 pythonTerminalEnvVarActivation
实验的用户。
自动测试发现文件模式的新设置
现在,您可以通过在 python.testing.autoTestDiscoverOnSavePattern 设置中指定 glob 模式来优化自动测试发现的文件范围。其默认值设置为 **/*.py
。
从 settings.json 读取测试调试配置作为备用
我们现在在 settings.json
和 launch.json
文件中查找测试调试配置,从而扩展了您可以定义这些配置的位置。
GitHub 身份验证
通过采用 Electron fetch
改进代理支持
GitHub Authentication 扩展现在利用 Electron 的 fetch
版本来发出网络请求。这有助于在特定代理和防火墙设置下工作的用户。如果您知道自己运行在配置了代理的环境中,并且无法在 VS Code 内向 GitHub 进行身份验证,请随时创建一个问题!
扩展创作
身份验证
重要:我们将
AuthenticationForceNewSessionOptions
重命名为AuthenticationGetSessionPresentationOptions
,并暂时保留一个已弃用的AuthenticationForceNewSessionOptions
。功能上没有差异,因此这不是运行时中的破坏性更改,但您应更新您的代码以使用AuthenticationGetSessionPresentationOptions
而不是AuthenticationForceNewSessionOptions
,因为它将在未来版本中移除。
查看这两个身份验证调用:
vscode.authentication.getSession(provider, scopes, { createIfNone: options });
vscode.authentication.getSession(provider, scopes, { forceNewSession: options });
createIfNone
和 forceNewSession
现在将接受 boolean
或 AuthenticationGetSessionPresentationOptions
/**
* Optional options to be used when calling {@link authentication.getSession} with interactive options `forceNewSession` & `createIfNone`.
*/
export interface AuthenticationGetSessionPresentationOptions {
/**
* An optional message that will be displayed to the user when we ask to re-authenticate. Providing additional context
* as to why you are asking a user to re-authenticate can help increase the odds that they will accept.
*/
detail?: string;
}
这是 createIfNone
的新添加,但对于 forceNewSession
来说是修改,它以前接受一个与新的 AuthenticationGetSessionPresentationOptions
具有相同签名的 AuthenticationForceNewSessionOptions
。
如果您明确使用了 AuthenticationForceNewSessionOptions
,您会看到它被标记为已弃用,并且您应将其替换为 AuthenticationGetSessionPresentationOptions
,因为 AuthenticationForceNewSessionOptions
将在未来版本中移除。
需要注意的是,这里唯一改变的是类型。运行时没有变化,因此从这个角度来看,这不是一个破坏性更改。
此外,authLearnMore
提案 API 已从 AuthenticationForceNewSessionOptions
更新为 AuthenticationGetSessionPresentationOptions
。
这是一个利用 detail
和 learnMore
提案的示例:
改进的 Snippet API
现在,您可以在插入代码片段时控制空白符的规范化。这适用于 insertSnippet
-API 和 SnippetTextEdit
-API,您可以控制代码片段额外行的缩进是否调整。
const snippet = `This is an indented
snippet`;
// keepWhitespace: false, undefined
function indentedFunctionWithSnippet() {
return `This is an indented
snippet`; // adjusted indentation
}
// keepWhitespace: true
function indentedFunctionWithSnippet() {
return `This is an indented
snippet`; // original indentation
}
提议的 API
文本编码
我们添加了新的提案 API,用于在 VS Code 中处理文本编码。
具体来说,这个新的 API 允许:
- 获取
TextDocument
的当前encoding
- 使用特定的
encoding
打开TextDocument
- 使用特定的
encoding
将string
编码为Uint8Array
- 使用特定的
encoding
将Uint8Array
解码为string
欢迎尝试并在此GitHub issue中告诉我们您的想法。
Shell 环境
扩展能够访问从 VS Code 集成终端打开的 pwsh、zsh、bash 和 fish shell 的用户当前活跃的 shell 环境信息。这仅在启用 terminal.integrated.shellIntegration.enabled 时可用。
用户可以使用 terminal.integrated.shellIntegration.environmentReporting 决定是否报告其 shell 环境信息。
欢迎尝试并在此GitHub issue中告诉我们您的想法。
工程
Electron 34 更新
在此里程碑中,我们将 Electron 34 更新推广到稳定版本的用户。此更新包含 Chromium 132.0.6834.196 和 Node.js 20.18.2。我们要感谢所有在 Insiders 版本上自托管并提供早期反馈的人。
macOS 10.15 支持已结束
VS Code 1.97
是支持 macOS 10.15 (macOS Catalina) 的最后一个版本。有关其他信息,请参阅我们的常见问题。
开发时跟踪泄露的可释放资源
VS Code 使用可释放模式进行显式资源管理,例如关闭文件、清理 DOM 元素或移除事件监听器。未释放资源意味着内存被浪费,并且内存使用量会随着时间的推移而累积。
我们一直在寻找此类内存泄漏,并为此添加了另一个检测工具。我们利用 FinalizationRegistry
API,因为它会在对象被垃圾回收时通知我们。如果此类对象代表了未释放的 disposable
,则意味着我们发生了泄漏。这些泄漏会被收集并展示给 VS Code 的开发者,以便我们能够随时进行清理。
重要修复
致谢
最后但同样重要的是,向 VS Code 的贡献者们致以诚挚的感谢。
问题跟踪
对我们的问题跟踪的贡献:
- @gjsjohnmurray (John Murray)
- @albertosantini (Alberto Santini)
- @IllusionMH (Andrii Dieiev)
- @RedCMD (RedCMD)
拉取请求
对 vscode
的贡献:
- @a-stewart (Anthony Stewart): Diff selection indicator line should use menu.separatorBackground instead of menu.border PR #228825
- @bchu1 (Bryan Chu): Fix to header misplacement in minimap PR #217581
- @cassidoo (Cassidy Williams): Fix #241903: Add override for GitHub in settingsLayout.ts PR #241911
- @cdce8p (Marc Mueller): Add panelTitleBadge color variables PR #240645
- @cenviity (Vincent Ging Ho Yim): Fix typos in
editorOptions.ts
PR #239929 - @cmbrose (Caleb Brose): Update chat's
newEditSession
command to take an input prompt PR #241796 - @devm33 (Devraj Mehta): fix: add electron as an external for webpack PR #239134
- @dmotte (Motte): Fix behavior of terminal.integrated.confirmOnExit PR #240074
- @dvangonen (Daniil Vangonen): Remove unnecessary classes from body PR #240633
- @gabritto (Gabriela Araujo Britto): Revert "[typescript-language-features] Expandable hover (#_228255)" PR #240011
- @gjsjohnmurray (John Murray)
- Supply multiselects to
scm/resourceGroup/context
menu commands (fix #92337) PR #192172 - Add
scmResourceGroupState
context key (#_192009) PR #194804 - SCM - Briefer titles on SCM views PR #230693
- Fix `Show User Keybindings' option on Keyboard Shortcuts editor (fix #240068) PR #240085
- Bad 'OK' capitalization on 'Add Triggered Breakpoint...' (fix #240490) PR #240492
- Supply multiselects to
- @hickford (M Hickford): Log provider in "tunnel user show" PR #240692
- @ihavecoke (ihavecoke): Clamp tab_size setting between 1 and 16 PR #228957
- @jakebailey (Jake Bailey): Preserve --disable-extensions in extension host development PR #240415
- @jamestut (James Nugraha): Compute TextModel limits before initializing the tokenizer PR #240919
- @jeanp413 (Jean Pierre)
- Fix terminal split view disposable leaked PR #241597
- Fix broken terminal link hover, hides before being able to hover over the contents PR #241599
- Fix timeline view leaks event listeners PR #241607
- @KexyBiscuit (Kexy Biscuit a.k.a. るる): Allow detection of powershell-preview snap PR #240054
- @klaussner (Christian Klaussner): Fix traffic light centering on macOS PR #212471
- @naman108 (Natha Paquette): Typo in storage URI docs PR #241600
- @nknguyenhc (Nguyen): Extension detail content escapes container PR #240134
- @notoriousmango (Seong Min Park)
- Make Command Center debug launcher offer most recently used configuration first PR #240744
- Adopt Markdown to use vscode log output channel PR #241342
- @pouyakary (Pouya Kary ✨): Feat: Custom Minimap Section Header Marker Detection RegExp ✨ PR #210271
- @rgrunber (Roland Grunberg): Expose adjustWhitespace to TextEditor API. PR #234858
- @silamon (Simon Lamon): Diff editor: Correct
1 files
to1 file
PR #240092 - @simon-id (simon-id): fix: workbench search use correct findMatch colors (fix #237909) PR #237910
- @SimonSiefke (Simon Siefke): fix: memory leak in settings indicators PR #236417
- @ssigwart (Stephen Sigwart): Fix unexpected tab completion when attempting to indent PR #136572
- @SunsetTechuila (Grigory): feat(commands): add
insertFinalNewLine
PR #241126 - @tcvdh (Thijs van den Heuvel): Fix: Wait for clear command to execute before reusing terminal PR #240970
- @terrymun (Terry Mun-Andersen): fix: remove extraneous backtick in CONTRIBUTING.md PR #240305
- @tmm1 (Aman Karmani): tsb: fix for deleted and re-added source file not being re-generated PR #238409
- @xymopen (xymopen_Official)
- Add node as npm script runner PR #236967
- Add node as npm script runner (2nd) PR #240527
- @zardoy (Vitaly): [Git] Migrate to git autostash when pulling for better performance PR #187850
对 vscode-css-languageservice
的贡献:
- @GauravB159 (Gaurav Bhagchandani): lab() and lch() color previews added PR #306
对 vscode-eslint
的贡献:
- @edemaine (Erik Demaine): Probing support for Civet PR #1965
- @mustevenplay (mustevenplay): Add Typescript configuration files detection PR #1968
对 vscode-hexeditor
的贡献:
- @tomilho (Tomás Silva): Moved Hex Compare Selected below Compare Selected PR #561
对 vscode-jupyter
的贡献:
- @thesuperzapper (Mathew Wicks): Fix reading
JUPYTER_RUNTIME_DIR
andXDG_RUNTIME_DIR
PR #16451
对 vscode-languageserver-node
的贡献:
- @MariaSolOs (Maria José Solano)
- @mciccale (Marco Ciccalè Baztán): minor typo semaphore.ts PR #1618
- @yf-yang: fix: avoid dispose unmatched handlers PR #1614
对 vscode-mypy
的贡献:
- @DetachHead
- @hamirmahal (Hamir Mahal): fix: usage of
node12 which is deprecated
in CI PR #336 - @ivirabyan (Ivan Virabyan): Add dmypy status file setting PR #347
对 vscode-pull-request-github
的贡献:
- @christianvuerings (Christian Vuerings): Fix Copy GitHub Permalink with custom SSH PR #6669
对 vscode-python-debugger
的贡献:
- @TCPsoftware (tcpsoft): Make "args": "${command:pickArgs}" as default debug configuration PR #548
对 vscode-vsce
的贡献:
- @mohankumarelec (mohanram): Updated the semver comparison PR #1078
- @stevedlawrence (Steve Lawrence): Allow for reproducible .vsix packages PR #1100
对 debug-adapter-protocol
的贡献:
- @angelozerr (Angelo): Add IntelliJ / LSP4IJ DAP support PR #529
- @samisalreadytaken: Add Squirrel Debugger to adapters.md PR #530
- @SpartanJ (Martín Lucas Golini): Update tools.md adding a new DAP client: ecode PR #526
- @sssooonnnggg (Song): chore: add luau debugger PR #516
- @theIDinside (Simon Farre): Add Midas to Debug Adapter list, w/ VSCode PR #528
对 language-server-protocol
的贡献:
- @ind1go (Ben Cox): Typo in workspace diagnostics PR #2086
- @MariaSolOs (Maria José Solano)
- @MuntasirSZN (Muntasir Mahmud): feat: copilot language server in server list PR #2107
- @Szasza (Szasza Palmer): adding Wing language server to server list PR #2101
- @the-mikedavis (Michael Davis): Clarify that
$0
should not use any other snippet syntax PR #2087 - @yassun7010 (yassun7010): add Tombi to LSP list. PR #2089
对 python-environment-tools
的贡献:
- @pantheraleo-7: Add support for detecting
$VIRTUAL_ENV
PR #181