作者:VS Code 产品组

翻译/排版:Alan Wang

欢迎使用 2025 年 2 月发布的 Visual Studio Code!本版本带来了许多更新,我们希望你会喜欢。其中一些主要亮点包括:

  • Next Edit Suggestions(预览版) - Copilot 预测你可能进行的下一步编辑。

  • Agent 模式(预览版) - Copilot 可自主完成任务。

  • Notebooks 中的 Copilot Edits - 快速迭代编辑你的笔记本。

  • 代码搜索 - 让 Copilot 为你的聊天提示找到相关文件。

  • 终端智能感知(预览版) - 为你的终端提供丰富的补全支持。

  • 拖放引用 - 在新编辑器中快速打开 Peek 引用。

  • Linux 自定义标题栏 - 默认启用对 Linux 的自定义标题栏支持。

  • 未解决的诊断(预览版) - 提交时提示未解决的诊断。

  • 源代码控制中的软删除 - 将未跟踪的文件移至回收站而不是删除它们。

  • 自定义指令正式版 - 使用自定义指令来调整 Copilot 以满足你的需求。

如果你希望在线阅读这些发布说明,请访问 code.visualstudio.com更新页面

Insiders 版本:想要尽快尝试新功能?你可以下载每日构建的 Insiders 版本,第一时间体验最新更新!

GitHub Copilot

Copilot 功能可能会经历不同的早期访问阶段,通常可以通过设置启用和配置。

阶段描述
实验版功能仍在开发中,尚未准备好供普通用户使用。查看实验版本功能(@tag:experimental)。
预览版该功能仍在优化中,但已可使用,欢迎提供反馈。查看预览版功能(@tag:preview)。
稳定版该功能已准备好供普通用户使用。

Copilot Edits

上个月,我们在 VS Code Insiders 中引入了 Copilot Edits 的 Agent 模式。在 Agent 模式下,Copilot 可以自动在你的工作区中搜索相关上下文,编辑文件,检查错误,并在获得你的许可后运行终端命令,从而实现端到端的任务自动化。

注意:代理模式目前可在 VS Code Insiders 版中使用,并已开始逐步推广至 VS Code Stable。一旦 Agent 模式对你可用,你将在 Copilot Edits 视图中看到模式下拉菜单——只需选择 Agent 即可启用。

本月,我们对 UX 进行了多项改进:

  • 终端命令现在会内联显示,方便你跟踪已执行的命令。

  • 你可以在运行命令前,先在聊天回复中编辑建议的终端命令。

  • 通过快捷键 ⌘Enter 确认终端命令的执行。

edit suggest terminal command

代理模式会自主搜索你的代码库,以查找相关上下文。展开消息即可查看执行的搜索结果。
在这里插入图片描述
我们还对 Agent 模式的提示和行为进行了多项改进:

现在,聊天中的 Undo 和 Redo 操作会撤销或重做聊天回复中对文件的最后一次编辑。这对于 Agent 模式非常实用,因为你可以仅撤销模型执行的特定步骤,而无需回滚整个聊天回复。

Agent 模式现在可以自动运行你的构建任务,或者在收到指令时执行。如发现模型在不应运行任务时执行了任务,你可以通过 github.copilot.chat.agent.runTasks 设置来禁用此功能。

了解更多有关 Copilot Edits Agent 模式 或阅读 Agent 模式公告博客

注意:如果你是 Copilot Business 或 Enterprise 用户,你的组织管理员必须启用 Copilot“编辑器预览功能”,Agent 模式才能使用。

Copilot Edits 的 Notebook 支持(预览版)

我们在 VS Code Insiders 中引入了 Copilot Edits 的 Notebook 支持,作为一项预览功能。现在,你可以像编辑 notebook 文件一样直观地编辑 Notebook 文件。创建新笔记本,修改多个单元格的内容,插入和删除单元格,更改单元格类型。这项预览功能可为 数据科学 或 文档编写 提供流畅的工作流程。

注意:此功能目前仅在 VS Code Insiders 中提供,并需要使用 GitHub Copilot Chat 预发布版本。我们将继续优化体验,并计划在未来的稳定版本中正式推出。

Copilot Edits modifynotebook

优化的编辑器集成

我们对 Copilot Edits 在代码编辑器和 notebook 编辑器中的集成进行了优化:

应用更改时不再自动滚动,视图保持原位,让你更专注于具体的更改内容。

调整编辑审核操作名称:“Accept”→ “Keep”,“Discard”→ “Undo”,这样更能准确反映实际操作。Copilot Edits 的更改是实时应用并保存的,用户可以 选择保留或撤销这些更改。

在处理完一个文件后,系统会自动显示下一个文件,提高编辑效率。

以下视频演示了更改是如何实时应用并保存的。预览会动态更新,用户可以选择 “Keep” 保留更改,同时仍然可以撤销或进一步调整。

changes from Copilot Edits

焕新的 UI

为了将 Copilot Edits 与 Copilot Chat 统一,我们对 Copilot Edits 进行了界面升级。待发送的附件文件现在会以常规聊天附件的形式显示。只有被 AI 修改过的文件才会出现在更改文件列表中,该列表位于聊天输入框上方。

此外,你可以通过 chat.renderRelatedFiles 设置启用相关文件建议。启用后,相关文件建议会显示在聊天附件的下方。
在这里插入图片描述

移除 Copilot Edits 的限制

此前,在 Copilot Edits 中,最多只能向提示中附加 10 个文件。在本次更新中,我们移除了这一限制。此外,我们还移除了客户端每 10 分钟最多 14 次交互的速率限制。

请注意,服务器端的使用速率限制仍然适用。

自定义指令正式推出

设置github.copilot.chat.codeGeneration.useInstructionFiles

自定义指令允许你调整 GitHub Copilot,使其聊天回复和代码建议更符合你和团队的工作方式。你可以在工作区内的 .github/copilot-instructions.md 文件中,使用 Markdown 格式描述你的具体需求。

在本次更新中,我们正式推出了基于 .github/copilot-instructions.md 的 自定义指令功能。请确保启用了 github.copilot.chat.codeGeneration.useInstructionFiles 设置,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 修改过的文件

  • 项目结构

  • 读取文件

  • 读取路径

  • 工作区符号搜索

将文件夹附加为上下文

以前,你可以通过从 Explorer 视图拖放来将文件夹作为上下文附加。现在,你还可以通过选择 📎 图标或在聊天提示中输入 #folder: 后跟文件夹名称来附加文件夹。

Next Edit Suggestions(预览版)的折叠模式

设置

  • github.copilot.nextEditSuggestions.enabled

  • editor.inlineSuggest.edits.showCollapsed

我们为 NES(Next Edit Suggestions)添加了折叠模式。启用此模式后,左侧编辑器边缘仅显示 NES 建议指示器。只有当按 Tab 键导航到该建议时,代码建议才会被显示。连续的建议会立即显示,直到某个建议未被接受为止。

NES collapsed mode

折叠模式默认是禁用的,你可以通过配置 editor.inlineSuggest.edits.showCollapsed 来启用它,或者也可以在 NES 边缘指示器菜单中启用或禁用该模式。
在这里插入图片描述

更改自动补全模型

你之前可以更改 Copilot Chat 和 Copilot Edits 的语言模型,现在你还可以更改内联建议的模型。

另外,你可以通过命令面板中的更改自动补全模型(Change Completions Model)命令,或者通过标题栏 Copilot 菜单中的配置代码补全(Configure Code Completions)来更改用于代码自动补全的模型。

注意:可用模型的列表可能会随着时间变化。如果你是 Copilot Business 或 Enterprise 用户,你的管理员需要在 GitHub.com 上的 Copilot 策略设置中启用编辑器预览功能,为你的组织启用某些模型。

模型可用性

在本次发布中,我们为使用 Copilot 的用户添加了更多可选模型。以下模型现在可以在 Visual Studio Code 和 GitHub.com 聊天中的模型选择器中选择:

  • GPT-4.5(预览版):OpenAI 最新的 GPT-4.5 模型现在已向 Copilot Enterprise 用户开放。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-4.0,但支持 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 Edits 可访问性支持

我们使 Copilot Edits 更加无障碍。

  • 现在,对于有修改的文件和更改的区域(插入、修改和删除),会有音频信号。

  • 修改文件现在提供了可访问的差异查看器。就像在差异编辑器中一样,选择 F7 来启用它。

activeEditorState 窗口标题变量

我们新增了一个窗口标题变量 activeEditorState,它可以向屏幕阅读器用户提供编辑器信息,如修改状态、问题数量,以及文件是否有待处理的 Copilot Edits。当处于屏幕阅读器优化模式时,该信息默认会附加,你也可以通过 accessibility.windowTitleOptimized 设置禁用它。

工作台

Linux 上的自定义标题栏

现在,Linux 上的自定义标题栏默认启用。自定义标题栏提供了布局控件、Copilot 菜单等功能。
在这里插入图片描述
你可以随时通过自定义标题栏的上下文菜单或将 window.titleBarStyle 配置为 native 来恢复原生标题装饰。
在这里插入图片描述
我们很高兴继续收到关于这一体验的反馈,并且已经根据现有的反馈开始着手改进,以便在未来的版本中优化此功能。

在次级侧边栏视图中使用标签

我们决定改变次级侧边栏视图的外观,将视图显示为标签而不是图标,类似于我们在面板区域中的设计。这样可以更容易区分不同的视图,例如 Copilot EditsCopilot Chat 视图。你可以通过配置 workbench.secondarySideBar.showLabels 随时切换回显示图标的方式。

在这里插入图片描述

新的设置编辑器关键字匹配算法(预览版)

设置workbench.settings.useWeightedKeySearch

我们添加了一种新的设置编辑器搜索算法,它优先显示更相关的关键字匹配。该搜索算法尝试以比之前更多的方式匹配设置 ID 和标签,同时它还会进一步过滤结果,以确保仅显示最匹配的项。

你可以通过启用 workbench.settings.useWeightedKeySearch 设置来尝试该预览功能。

new-settings-search

主题:浅粉色vscode.dev 上的预览版)

在简易文件选择器中隐藏点文件的选项

当使用简易文件选择器时(无论是连接到远程服务器还是启用 files.simpleDialog.enable 时),你现在可以通过使用 显示/隐藏点文件 按钮来隐藏点文件。
在这里插入图片描述

编辑器

Peek 引用的拖放支持

现在,Peek 视图支持拖放功能。调用 Peek ReferencesPeek Implementation 或其他任何 Peek 命令,然后将条目从其树状视图拖动到其他编辑器中打开。

drag and drop a peek reference

主题:GitHub Light 色盲版(Beta)vscode.dev 上的预览版)

发生高亮延迟

编辑器中发生高亮的延迟现在默认设置为 0。这使得整体编辑器更加响应迅速。你仍然可以通过 editor.occurrencesHighlightDelay 设置来控制延迟。

源代码控制

更新的视图标题

当我们将 源代码控制图表视图 添加到 源代码控制视图 时,强调了视图标题的重复,如 “Source Control Repositories”、“Source Control” 和 “Source Control Graph”。在这一版本中,我们重新审视了视图的标题,确保它们更简短且不再重复视图标题:“Repositories”、“Changes” 和 “Graph”。

丢弃未跟踪更改的改进

设置git.discardUntrackedChangesToTrash

多年来,我们收到了多次关于数据丢失的报告,因为丢弃未跟踪的文件会永久删除该文件,即使 VS Code 会显示一个模态对话框,清楚地表明该文件将被永久删除。

从这一版本开始,丢弃未跟踪的文件将尽可能将文件移至回收站/垃圾桶,这样文件可以轻松恢复。你可以通过 git.discardUntrackedChangesToTrash 设置禁用此功能。

在这里插入图片描述

诊断提交钩子(实验版)

设置

  • git.diagnosticsCommitHook.Enabled

  • git.diagnosticsCommitHook.Sources

在这一版本中,我们引入了一个新的提交钩子,它会在更改的文件存在未解决的诊断时提醒你。这目前是一个实验性功能,可以通过 git.diagnosticsCommitHook.Enabled 设置启用。

默认情况下,提交钩子会针对任何错误级别的诊断进行提示,但你可以通过 git.diagnosticsCommitHook.Sources 设置自定义诊断的源和级别。试试看并告诉我们你的反馈。
在这里插入图片描述

Notebook

内联 notebook 差异视图(实验版)

设置notebook.diff.experimental.toggleInline

现在,你可以为 notebook 启用内联差异视图。此功能使你可以在单一的内联视图中查看 notebook 单元格内的更改,而不是传统的并排比较方式。

通过将 notebook.diff.experimental.toggleInline 设置为 true 来启用此功能。然后,你可以通过编辑器右上角的菜单切换到内联差异视图。

toggl an edit suggestion

Notebook 内联值悬停

Notebook 内联值现在的装饰会被截断以适应视口的宽度,并且有丰富的悬停效果来显示完整的值,同时保持空白格式。这样可以保持像数据框架这样的变量形状,使得值一目了然,更容易阅读。
在这里插入图片描述

终端 IntelliSense(预览版)

设置terminal.integrated.suggest.enabled

我们显著改进了 bash、zsh、fish 和 PowerShell 中的终端 shell 自动补全,通过添加补全规格(例如 git)、优化命令行解析以提供更好的建议,并增强了文件和文件夹的补全功能。你可以通过 terminal.integrated.suggest.enabled 启用此功能。

增强的 Fig 补全支持

我们利用 Fig 补全规格为特定 CLI 提供智能补全。之前我们只有少量支持,但在此次版本中,我们将以下 CLI 添加到了 VS Code 附带的列表中:

  • 基础工具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 层级的功能(如 fish/zsh 中的自动建议、pwsh 中的预测等),对用户来说可能不太明显,尤其是当它们与 IntelliSense 一起呈现时。

IntelliSense 功能要求我们检测到这些内联建议,之前我们使用的简单实现只检查文本是否使用了淡色或斜体的 SGR 样式属性。事实证明,这种方法不够,特别是当用户自定义了样式时,fish shell 默认情况下也不会使用这些样式。我们现在通过分析命令行上下文和光标位置来检测大多数情况。

基于这种新的改进检测,内联建议现在作为顶部选项显示,并带有星形图标,这样可以更好地与编辑器的行为对齐,并且使用户更加清楚按下 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 shell 实际上在 cd 命令的自动补全中显示 CDPATH 条目:
在这里插入图片描述
现在我们支持在使用 cd 命令时显示 $CDPATH 条目作为自动补全项:
在这里插入图片描述
此功能在 Windows 上也适用(使用 ; 分隔符),并且不需要 shell 原生支持该功能,因为默认情况下是使用绝对路径。
在这里插入图片描述
通过 terminal.integrated.suggest.cdPath 设置进行配置。

绝对路径

绝对路径现已支持。
在这里插入图片描述
在这里插入图片描述

别名支持

命令别名现在也被 bash、zsh 和 fish 检测到,并且拥有一个新的独特图标:在这里插入图片描述

选项和标志的区分

现在,CLI 选项(有值的)和标志(没有值的)在 UI 中通过不同的图标进行区分:在这里插入图片描述

任务

任务重新运行操作

我们为终端添加了一个新的重新运行任务操作 ⌃⇧R。该操作出现在终端标签页的内联工具栏和终端的上下文菜单中。

terminal rerun task

调试

调试内联值悬停

如果启用了设置 debug.inlineValues,内联值装饰现在会显示内联悬停,使得长值更容易一目了然。
在这里插入图片描述

语言

TypeScript 5.8

VS Code 现在包含了 TypeScript 5.8.2。这个主要更新带来了新的语言改进,包括改进了条件表达式中的类型检查,并支持编写符合 Node 新的 --experimental-strip-types 选项的代码。它还包括了若干工具改进和 bug 修复。

了解更多关于此次更新的详细信息,请查看 TypeScript 5.8 发布博客

远程开发

远程开发扩展允许你使用开发容器、通过 SSH 连接的远程机器或远程隧道,或 Windows Subsystem for Linux (WSL) 作为完整功能的开发环境。

亮点包括:

  • Linux 旧版服务器的终止支持(EOL)

  • 扩展的代理配置功能

你可以在远程开发发布说明中了解更多有关这些功能的信息。

企业支持

多行支持的允许扩展

你现在可以在 Windows 的组策略中使用多行字符串配置允许的扩展。这允许更灵活和广泛地配置允许的扩展。了解更多关于配置允许扩展的信息。

扩展贡献

Python

断开长字符串时自动插入引号

Pylance 现在支持在断开长字符串时自动插入引号,从而提供无缝的体验。

Pylance 内存消耗优化

对 Pylance 的内存消耗进行了优化,尤其是在处理大型工作区时。这项改进是在 Pyright 上进行的,Pyright 是支持 Pylance 语言服务器功能的静态类型检查器。

Python shell 集成改进

在修改 python.terminal.shellIntegration.enabled 后,你无需重新加载即可使更改生效。只需创建一个新的终端,即可在终端中的 Python REPL 上看到所需的更改。

Windows Git Bash 的正确工作区提示

使用 Git Bash 的 Windows 上的 Python 用户现在可以在其终端提示符中看到正确的工作目录。这些更改适用于参与了 pythonTerminalEnvVarActivation 实验的用户。

新的自动测试发现文件模式设置

现在,你可以通过在 python.testing.autoTestDiscoverOnSavePattern 设置中指定一个 glob 模式来精确控制哪些文件会触发自动测试发现。默认值设置为 **/*.py

settings.json 读取测试调试配置作为备用

我们现在会在 settings.jsonlaunch.json 文件中查找测试调试配置,扩展了你定义这些配置的位置。

任务重新运行操作

改进的代理支持与 Electron fetch 采用

GitHub 身份验证扩展现在采用了 Electron 版本的 fetch 来进行网页请求。这有助于一些具有特定代理和防火墙设置的用户。如果你知道自己所在的环境有代理设置,并且在 VS Code 内无法认证到 GitHub,请不要犹豫,创建一个 issue!

扩展开发

身份验证

重要:我们正在将 AuthenticationForceNewSessionOptions 重命名为 AuthenticationGetSessionPresentationOptions,并暂时保留已弃用的 AuthenticationForceNewSessionOptions。这两者在功能上没有区别,因此这不是一个破坏性更改,但你应该更新代码,改用 AuthenticationGetSessionPresentationOptions,因为它将来会被移除。

查看这两个身份验证调用:

vscode.authentication.getSession(provider, scopes, { createIfNone: options });
vscode.authentication.getSession(provider, scopes, { forceNewSession: options });

createIfNoneforceNewSession 现在可以接受布尔值或 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 来说,这是一个修改,原本它接受的是 AuthenticationForceNewSessionOptions,该选项的签名与新的 AuthenticationGetSessionPresentationOptions 相同。

如果你明确使用了 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 当前的编码

  • 以特定编码打开 TextDocument

  • 使用特定编码将字符串编码为 Uint8Array

  • 使用特定编码将 Uint8Array 解码为字符串

尝试一下,欢迎通过这个 GitHub issue 报告给我们你的反馈。

Shell 环境

扩展现在可以访问用户当前激活的 shell 环境信息,支持的 shell 包括 pwshzshbashfish,这些 shell 是从 VS Code 集成终端打开的。当 terminal.integrated.shellIntegration.enabled 被启用时才可用。

用户可以决定是否报告他们的 shell 环境信息,设置项为 terminal.integrated.shellIntegration.environmentReporting

试试看,并通过这个 GitHub issue 给我们反馈。

工程

Electron 34 更新

在本次里程碑中,我们将 Electron 34 更新推送给稳定版用户。此更新包括 Chromium 132.0.6834.196 和 Node.js 20.18.2。感谢所有在 Insider 版本上自托管并提供早期反馈的用户。

macOS 10.15 支持已结束

VS Code 1.97 是最后一个支持 macOS 10.15(macOS Catalina)的版本。更多信息请参考我们的常见问题解答

开发时追踪泄漏的可释放资源

VS Code 使用可释放模式进行显式资源管理,例如关闭文件、清理 DOM 元素或移除事件监听器。如果不释放资源,将导致内存浪费,并且内存使用量会随着时间积累。

我们一直在寻找此类泄漏,并新增了一个检测工具。我们使用 FinalizationRegistry API,它可以告知我们何时某个对象被垃圾回收。如果该对象是一个未被释放的可释放资源,这就意味着我们存在内存泄漏。我们将这些信息收集并展示给 VS Code 开发人员,以便在开发过程中进行清理。

重要修复

感谢

最后,衷心感谢所有为 VS Code 做出贡献的人员。

问题跟踪

感谢以下人员为我们的问题跟踪做出的贡献:

Pull requests

vscode 贡献:

vscode-css-languageservice 贡献:

vscode-eslint 贡献:

vscode-hexeditor 贡献

vscode-jupyter 贡献:

vscode-languageserver-node 贡献:

vscode-mypy 贡献:

vscode-pull-request-github 贡献:

vscode-python-debugger 贡献:

vscode-vsce 贡献:

debug-adapter-protocol 贡献:

language-server-protocol 贡献:

python-environment-tools 贡献

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐