2025年2月 (版本 1.98)
更新 1.98.1:此更新解决了以下问题。
下载:Windows: x64 Arm64 | Mac: 通用 Intel silicon | Linux: deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 2025 年 2 月版。此版本包含许多更新,希望您会喜欢。以下是一些主要亮点包括
- 下一步编辑建议(预览版) - Copilot 预测您可能进行的下一次编辑。
- 代理模式(预览版) - Copilot 自主完成任务。
- Copilot 编辑的笔记本支持 - 快速迭代笔记本的编辑。
- Copilot Vision - 在聊天提示中附加图像并与之互动。
- 代码搜索 - 让 Copilot 为您的聊天提示查找相关文件。
- 终端 IntelliSense(预览版) - 为您的终端提供丰富的完成支持。
- 拖放引用 - 在新编辑器中快速打开速览引用。
- Linux 自定义标题栏 - 默认启用 Linux 自定义标题栏支持。
- 未解决的诊断(预览版) - 在提交时提示未解决的诊断。
- 源代码管理中的软删除 - 将未跟踪的文件移动到回收站而不是删除它们。
- 自定义指令 GA - 使用自定义指令根据您的需求定制 Copilot。
如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新。内测人员: 想尽快试用新功能吗?您可以下载每晚构建的内测版,并在最新更新可用时立即试用。
GitHub Copilot
Copilot 功能可能会经历不同的早期访问阶段,这些阶段通常通过设置启用和配置。
阶段 | 描述 |
---|---|
实验性 | 该功能仍在开发中,尚未准备好全面使用。 查看实验性功能 ( @tag:experimental )。 |
预览版 | 该功能仍在改进中,但已可使用。欢迎提供反馈。 查看预览功能 ( @tag:preview )。 |
稳定版 | 该功能已准备好全面使用。 |
Copilot 编辑
代理模式改进(实验性)
上个月,我们在VS Code Insiders 中为 Copilot 编辑引入了代理模式。在代理模式下,Copilot 可以自动搜索您的工作区以查找相关上下文,编辑文件,检查错误,并运行终端命令(在您允许的情况下)以端到端地完成任务。
注意:代理模式今天在 VS Code Insiders 中可用,我们刚刚开始在 VS Code 稳定版 中逐步推出。一旦为您启用代理模式,您将在 Copilot 编辑视图中看到模式下拉列表 — 只需选择 代理。
本月,我们对工具使用体验进行了多项改进
- 终端命令现在以内联方式显示,因此您可以跟踪运行了哪些命令。
- 您可以在运行之前编辑聊天响应中建议的终端命令。
- 使用 ⌘Enter (Windows、Linux Ctrl+Enter)快捷方式确认终端命令。
代理模式自主搜索您的代码库以查找相关上下文。展开消息以查看已完成哪些搜索的结果。
我们还对代理模式的提示和行为进行了各种改进
- 聊天中的撤消和重做操作现在撤消或重做在聊天响应中进行的上次文件编辑。这对于代理模式很有用,因为您现在可以撤消模型采取的某些步骤,而无需回滚整个聊天响应。
- 代理模式现在可以自动或在指示下运行您的构建任务。如果看到模型在不应该运行任务时运行任务,请通过 github.copilot.chat.agent.runTasks 设置禁用此功能。
了解有关 Copilot 编辑代理模式 的更多信息,或阅读代理模式公告博客文章。
注意:如果您是 Copilot Business 或 Enterprise 用户,您的组织的管理员必须选择加入 Copilot “编辑器预览功能”的使用,代理模式才能可用。
Copilot 编辑中的笔记本支持(预览版)
我们正在 VS Code Insiders 中推出 Copilot 编辑中的笔记本支持作为预览功能。您现在可以使用 Copilot 编辑笔记本文件,体验与编辑代码文件相同的直观感受。从头开始创建新笔记本,修改多个单元格中的内容,插入和删除单元格,以及更改单元格类型。此预览功能在处理数据科学或文档笔记本时提供无缝工作流程。
注意:此功能目前仅在 VS Code Insiders 中随附 GitHub Copilot Chat 的预发布版本提供。在将其引入未来版本中的 VS Code 稳定版之前,我们将继续改进体验。
改进的编辑器集成
我们改进了 Copilot 编辑与代码和笔记本编辑器的集成
- 应用更改时不再滚动。视口保持在原位,使您可以更轻松地专注于更改内容。
- 将编辑审阅操作从“接受”重命名为“保留”,将“放弃”重命名为“撤消”,以更好地反映正在发生的事情。Copilot 编辑的更改是实时的,它们在进行和保存时应用,用户保留或撤消它们。
- 在保留或撤消文件后,会自动显示下一个文件。
该视频演示了编辑如何在发生时应用和保存。实时预览更新,用户决定“保留”更改。撤消和进一步调整仍然是可能的。
刷新的 UI
为了准备将 Copilot 编辑与 Copilot Chat 统一起来,我们为 Copilot 编辑进行了改版。已附加但尚未发送的文件现在呈现为常规聊天附件。只有经过 AI 修改的文件才会添加到更改的文件列表中,该列表位于聊天输入部分的上方。
使用 chat.renderRelatedFiles 设置,您可以启用获取相关文件建议。相关文件建议在聊天附件下方呈现。
删除了 Copilot 编辑限制
以前,您在 Copilot 编辑中每次提示最多只能附加 10 个文件。在此版本中,我们删除了此限制。此外,我们还删除了客户端每 10 分钟 14 次交互的速率限制。
请注意,服务器端使用率限制仍然适用。
自定义指令正式发布
设置:github.copilot.chat.codeGeneration.useInstructionFiles
自定义指令使您可以根据您和您的团队的工作方式定制 GitHub Copilot 以提供聊天响应和代码建议。在工作区的 .github/copilot-instructions.md
文件中以 Markdown 格式描述您的具体要求。
在此里程碑中,我们将使用 .github/copilot-instructions.md
的自定义指令正式发布。确保启用 github.copilot.chat.codeGeneration.useInstructionFiles VS Code 设置,然后 Copilot 将在生成响应时使用这些指令。
了解有关 Copilot 中的自定义指令 的更多信息。
聊天中更流畅的身份验证流程
如果您的源代码托管在 GitHub 存储库中,则可以利用多项功能,包括高级代码搜索、@github
聊天参与者等等!
但是,对于私有 GitHub 存储库,VS Code 需要获得与您在 GitHub 上的存储库交互的权限。在一段时间内,这是通过我们常用的 VS Code 身份验证流程呈现的,当您调用某些功能时(例如,向 @workspace
或 @github
提问,或使用 #codebase
工具)会显示一个模态对话框。
为了使这种体验更流畅,我们在聊天中引入了此确认
它不仅不像模态对话框那样突兀,而且还具有新功能
- 授予:您将像以前一样(通过模态对话框)完成常规身份验证流程。
- 暂不:VS Code 会记住您的选择,并且在您的下一个 VS Code 窗口会话之前不会再次打扰您。唯一的例外是该功能需要此额外权限才能运行,例如
@github
。 - 不再询问:VS Code 会记住您的选择,并通过 github.copilot.advanced.authPermissions 设置持久保存它。任何需要此额外权限的功能都将失败。
重要的是要注意,此确认不会确认或拒绝 Copilot(服务)访问您的存储库。这仅是 VS Code 的 Copilot 体验如何进行身份验证。要配置 Copilot 可以访问的内容,请阅读关于内容排除的文档。
Copilot Chat 中更高级的代码库搜索
设置:github.copilot.chat.codesearch.enabled
当您将 #codebase
添加到您的 Copilot Chat 查询时,Copilot 会帮助您在工作区中查找与您的聊天提示相关的代码。#codebase
现在可以运行文本搜索和文件搜索等工具,以从您的工作区中提取更多上下文。
设置 github.copilot.chat.codesearch.enabled 以启用此行为。完整的工具列表是
- 基于嵌入的语义搜索
- 文本搜索
- 文件搜索
- Git 修改的文件
- 项目结构
- 读取文件
- 读取目录
- 工作区符号搜索
将问题作为聊天上下文附加
为了帮助修复工作区中的代码或其他问题,您现在可以将“问题”面板中的问题作为提示的上下文附加到聊天中。
从“问题”面板中将项目拖动到“聊天”视图,在提示中键入 #problems
,或选择纸夹 📎 按钮。您可以附加特定问题、文件中所有问题或代码库中所有文件。
将文件夹作为上下文附加
以前,您可以通过从“资源管理器”视图中拖放来附加文件夹作为上下文。现在,您还可以通过选择纸夹 📎 图标或在聊天提示中键入 #folder:
后跟文件夹名称来附加文件夹。
下一步编辑建议的折叠模式(预览版)
设置:
我们为 NES 添加了折叠模式。当您启用此模式时,只有 NES 建议指示器显示在左侧编辑器边距中。只有当您通过按 Tab 导航到它时,代码建议本身才会显示。连续的建议会立即显示,直到某个建议未被接受。
折叠模式默认情况下处于禁用状态,可以通过配置 editor.inlineSuggest.edits.showCollapsed 来启用,或者您可以在 NES 装订线指示器菜单中启用或禁用它。
更改完成模型
您已经可以更改 Copilot Chat 和 Copilot 编辑的语言模型,现在您也可以更改内联建议的模型。
或者,您可以通过命令面板中的 更改完成模型 命令或标题栏中 Copilot 菜单中的 配置代码完成 项来更改用于代码完成的模型。
注意: 可用模型列表可能会有所不同,并且会随着时间的推移而变化。如果您是 Copilot Business 或 Enterprise 用户,您的管理员需要通过在 GitHub.com 上的Copilot 策略设置中选择加入
编辑器预览功能
,为您的组织启用某些模型。
模型可用性
在此版本中,我们在使用 Copilot 时添加了更多模型可供选择。以下模型现在在 Visual Studio Code 和 github.com 聊天中的模型选择器中可用
-
GPT 4.5(预览版):OpenAI 的最新模型 GPT-4.5 现在在 GitHub Copilot Chat 中向 Copilot Enterprise 用户提供。GPT-4.5 是一种大型语言模型,旨在提供直觉、写作风格和广泛知识方面的先进功能。在GitHub 博客文章中了解有关 GPT-4.5 模型可用性的更多信息。
-
Claude 3.7 Sonnet(预览版):Claude 3.7 Sonnet 现在可供所有付费 Copilot 计划的客户使用。这个新的 Sonnet 模型支持 Copilot 中的思考和非思考模式。在初步测试中,我们已经看到在代理场景中取得了特别大的改进。在GitHub 博客文章中了解有关 Claude 3.7 Sonnet 模型可用性的更多信息。
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 设置启用。
用于拉取请求标题和描述的自定义指令
您可以使用设置 github.copilot.chat.pullRequestDescriptionGeneration.instructions 为生成拉取请求标题和描述提供自定义指令。您可以将设置指向工作区中的文件,也可以在设置中内联提供指令。获取有关使用 在 VS Code 中自定义 Copilot 的更多详细信息。
以下示例显示了如何在设置中内联提供自定义指令。
{
"github.copilot.chat.pullRequestDescriptionGeneration.instructions": [
{
"text": "Prefix every PR title with an emoji."
}
]
}
生成标题和描述需要安装 GitHub Pull Requests 扩展。
辅助功能
Copilot 编辑辅助功能
我们使 Copilot 编辑更易于访问。
- 现在,对于具有修改的文件以及更改区域(插入、修改和删除),都有音频信号。
- 可访问的差异查看器现在可用于修改的文件。就像在差异编辑器中一样,选择 F7 以启用它。
activeEditorState
窗口标题变量
我们有一个新的 window.title 变量 activeEditorState
,用于指示编辑器信息,例如修改状态、问题数量以及文件何时有待处理的 Copilot 编辑,以供屏幕阅读器用户使用。在屏幕阅读器优化模式下,默认情况下会附加此变量,并且可以使用 accessibility.windowTitleOptimized 禁用。
工作台
Linux 上的自定义标题栏
自定义标题栏现在默认在 Linux 上启用。自定义标题栏使您可以访问布局控件、Copilot 菜单等。
您可以随时恢复为本机标题装饰,可以从自定义标题上下文菜单中恢复,也可以将 window.titleBarStyle 配置为 native
。
我们很高兴收到关于此体验的持续反馈,并且已经在努力根据现有反馈改进未来里程碑的体验。
使用标签作为辅助侧边栏视图
我们决定更改辅助侧边栏中视图的外观,以显示标签而不是图标,类似于我们在面板区域中使用的外观。这使得更容易区分不同的视图,例如 Copilot 编辑 和 Copilot Chat 视图。您可以随时通过配置 workbench.secondarySideBar.showLabels 来切换回显示图标。
新的设置编辑器键匹配算法(预览版)
设置:workbench.settings.useWeightedKeySearch
我们添加了一种新的设置编辑器搜索算法,该算法优先考虑更相关的键匹配项。搜索算法尝试以比以前更多的方式匹配设置 ID 和标签,但它也更多地过滤结果,以便仅显示最佳匹配类型。
您可以通过启用 workbench.settings.useWeightedKeySearch 设置来试用预览功能。
主题:浅粉色(在 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 设置自定义诊断源和级别。试用一下,让我们知道您的反馈。
笔记本
内联笔记本差异视图(实验性)
设置:notebook.diff.experimental.toggleInline
您现在可以为笔记本启用内联差异视图。此功能使您可以在单个内联视图中查看笔记本单元格内的更改,而不是传统的并排比较。
通过将 notebook.diff.experimental.toggleInline 设置为 true
来启用此功能。然后,您可以使用右上角的编辑器菜单将差异视图切换为内联。
笔记本内联值悬停
笔记本内联值现在已截断其装饰以适应视口的宽度,并具有丰富的悬停以显示完整值,保持空格格式。这保持了数据帧等变量的形状,使值在浏览时更易于阅读。
终端 IntelliSense(预览版)
设置: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
显示所有分支
主题:蓝宝石(在 vscode.dev 上预览)
在幕后,这会运行 git --no-optional-locks branch -a --no-color --sort=-committerdate
以获取分支列表,然后再将其处理为完成。类似的方法也用于获取标签。
可配置的快速建议
设置: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 功能需要我们检测这种内联建议。之前,我们使用了一种简单粗暴的实现方式,仅检查文本是否使用了 faint 或 italics 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 的命令别名也都会被检测到,并具有新的独特图标。
区分选项和标志
现在,UI 中通过不同的图标来区分 CLI 选项(具有值的选项)和标志(不具有值的选项)。
任务
任务重新运行操作
我们为终端新增了一个 重新运行 任务操作,⌃⇧R (Windows, Linux Ctrl+Shift+R)。该操作会出现在终端选项卡的内联工具栏和终端的上下文菜单中。
调试
调试内联值悬停提示
如果启用 debug.inlineValues 设置,则内联值装饰器现在具有内联悬停提示,从而可以更轻松地一目了然地读取较长的值。
语言
TypeScript 5.8
VS Code 现在包含 TypeScript 5.8.2。此主要更新带来了新的语言改进,包括 改进了对条件表达式中类型的检查 以及 支持编写符合 Node 新的 --experimental-strip-types 选项的代码。它还包括许多工具改进和错误修复。
请查看 TypeScript 5.8 发布博客,了解有关此更新的更多详细信息。
远程开发
Remote Development 扩展 允许您使用 Dev Container、通过 SSH 或 Remote Tunnels 连接的远程计算机,或者 Windows Subsystem for Linux (WSL) 作为功能齐全的开发环境。
亮点包括:
- Linux 传统服务器的 EOL(生命周期结束)
- 扩展的代理配置能力
您可以在 Remote Development 发布说明 中了解有关这些功能的更多信息。
企业支持
对允许的扩展的多行支持
现在,您可以使用多行字符串在 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 身份验证扩展现在利用 Electron 版本的 fetch
来发出 Web 请求。这有助于具有特定代理和防火墙设置的用户。如果您知道您在具有代理设置的环境中运行,并且无法在 VS Code 中验证 GitHub 身份,请随时创建 issue!
扩展创作
身份验证
重要提示:我们将
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
提议的示例
改进的代码片段 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 环境
扩展程序可以访问用户当前活动的 shell 环境信息,这些信息来自 VS Code 集成终端中打开的 pwsh、zsh、bash 和 fish 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) 的版本。有关更多信息,请参阅我们的 FAQ。
开发时跟踪泄漏的可释放对象
VS Code 使用可释放模式进行显式资源管理,例如关闭文件、清理 DOM 元素或删除事件侦听器。不释放资源意味着内存被浪费,并且内存使用量会随着时间的推移而累积。
我们一直在寻找此类泄漏,并添加了另一个工具来检测它。我们利用 FinalizationRegistry
API,因为它会在对象被垃圾回收时通知我们。如果这样的对象代表一个尚未被释放的 disposable
,则意味着我们存在泄漏。这些泄漏会被收集并显示给 VS Code 的开发人员,以便我们能够随时清理。
值得注意的修复
感谢
最后但同样重要的是,衷心感谢 VS Code 的贡献者们。
Issue 跟踪
对我们的 issue 跟踪的贡献
- @gjsjohnmurray (John Murray)
- @albertosantini (Alberto Santini)
- @IllusionMH (Andrii Dieiev)
- @RedCMD (RedCMD)
Pull requests
对 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
Contributions to vscode-css-languageservice
- @GauravB159 (Gaurav Bhagchandani): lab() and lch() color previews added PR #306
Contributions to vscode-eslint
- @edemaine (Erik Demaine): Probing support for Civet PR #1965
- @mustevenplay (mustevenplay): Add Typescript configuration files detection PR #1968
Contributions to vscode-hexeditor
- @tomilho (Tomás Silva): Moved Hex Compare Selected below Compare Selected PR #561
Contributions to vscode-jupyter
- @thesuperzapper (Mathew Wicks): Fix reading
JUPYTER_RUNTIME_DIR
andXDG_RUNTIME_DIR
PR #16451
Contributions to 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
Contributions to 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
Contributions to vscode-pull-request-github
- @christianvuerings (Christian Vuerings): Fix Copy GitHub Permalink with custom SSH PR #6669
Contributions to vscode-python-debugger
- @TCPsoftware (tcpsoft): Make "args": "${command:pickArgs}" as default debug configuration PR #548
Contributions to vscode-vsce
- @mohankumarelec (mohanram): Updated the semver comparison PR #1078
- @stevedlawrence (Steve Lawrence): Allow for reproducible .vsix packages PR #1100
Contributions to 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
Contributions to 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
Contributions to python-environment-tools
- @pantheraleo-7: Add support for detecting
$VIRTUAL_ENV
PR #181