欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > 技术速递|Visual Studio Code 2025年2月更新(v1.98)

技术速递|Visual Studio Code 2025年2月更新(v1.98)

2025/3/13 1:20:09 来源:https://blog.csdn.net/MicrosoftReactor/article/details/146166619  浏览:    关键词:技术速递|Visual Studio Code 2025年2月更新(v1.98)

作者: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 indentedsnippet`;
// keepWhitespace: false, undefined
function indentedFunctionWithSnippet() {return `This is an indentedsnippet`; // adjusted indentation
}
// keepWhitespace: true
function indentedFunctionWithSnippet() {return `This is an indentedsnippet`; // 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 做出贡献的人员。

问题跟踪

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

  • @gjsjohnmurray (John Murray)

  • @albertosantini (Alberto Santini)

  • @IllusionMH (Andrii Dieiev)

  • @RedCMD (RedCMD)

Pull requests

vscode 贡献:

  • @a-stewart (Anthony Stewart):差异选择指示器线应使用 menu.separatorBackground 而不是 menu.border PR #228825

  • @bchu1 (Bryan Chu):修复了在小地图中标题错位的问题 PR #217581

  • @cassidoo (Cassidy Williams):修复 #241903:在 settingsLayout.ts 中为 GitHub 添加覆盖选项 PR #241911

  • @cdce8p (Marc Mueller):添加 panelTitleBadge 颜色变量 PR #240645

  • @cenviity (Vincent Ging Ho Yim):修复 editorOptions.ts 中的拼写错误 PR #239929

  • @cmbrose (Caleb Brose):更新 chat 的 newEditSession 命令以接受输入提示 PR #241796

  • @devm33 (Devraj Mehta):修复:将 electron 添加为 webpack 的外部依赖 PR #239134

  • @dmotte (Motte):修复 terminal.integrated.confirmOnExit 的行为 PR #240074

  • @dvangonen (Daniil Vangonen):删除 body 中不必要的类 PR #240633

  • @gabritto (Gabriela Araujo Britto):回退 “[typescript-language-features] 可展开的悬停 (#_228255)” PR #240011

  • @gjsjohnmurray (John Murray)

    • scm/resourceGroup/context 菜单命令提供多选支持 (修复 #92337) PR #192172

    • 添加 scmResourceGroupState 上下文键 (#_192009) PR #194804

    • SCM - 精简 SCM 视图中的标题 PR #230693

    • 修复键盘快捷方式编辑器中的“显示用户键绑定”选项(修复 #240068) PR #240085

    • 修正“添加触发断点…”中的“OK”大小写问题(修复 #240490) PR #240492

  • @hickford (M Hickford):在“tunnel user show”中记录提供程序 PR #240692

  • @ihavecoke (ihavecoke):将 tab_size 设置限制在 1 和 16 之间 PR #228957

  • @jakebailey (Jake Bailey):在扩展主机开发中保留 --disable-extensions 参数 PR #240415

  • @jamestut (James Nugraha):在初始化分词器之前计算 TextModel 限制 PR #240919

  • @jeanp413 (Jean Pierre)

    • 修复终端拆分视图中可丢弃对象泄漏的问题 PR #241597

    • 修复终端链接悬停问题,内容在悬停前就会隐藏 PR #241599

    • 修复时间线视图泄漏事件监听器的问题 PR #241607

  • @KexyBiscuit (Kexy Biscuit a.k.a. るる):允许检测 powershell-preview snap PR #240054

  • @klaussner (Christian Klaussner):修复 macOS 上交通信号灯居中的问题 PR #212471

  • @naman108 (Natha Paquette):存储 URI 文档中的拼写错误 PR #241600

  • @nknguyenhc (Nguyen):扩展详细内容超出了容器范围 PR #240134

  • @notoriousmango (Seong Min Park)

    • 使 Command Center 调试启动器首先提供最近使用的配置 PR #240744

    • 采用 Markdown 使用 vscode 日志输出通道 PR #241342

  • @pouyakary (Pouya Kary ✨):特性:自定义迷你地图章节标题标记检测正则表达式 ✨ PR #210271

  • @rgrunber (Roland Grunberg):暴露 adjustWhitespace 给 TextEditor API PR #234858

  • @silamon (Simon Lamon):差异编辑器:将 1 files 更正为 1 file PR #240092

  • @simon-id (simon-id):修复:工作台搜索使用正确的 findMatch 颜色(修复 #237909) PR #237910

  • @SimonSiefke (Simon Siefke):修复设置指示器中的内存泄漏问题 PR #236417

  • @ssigwart (Stephen Sigwart):修复在尝试缩进时出现的意外标签补全问题 PR #136572

  • @SunsetTechuila (Grigory):功能(命令):添加 insertFinalNewLine PR #241126

  • @tcvdh (Thijs van den Heuvel):修复:等待清除命令执行完成后再重用终端 PR #240970

  • @terrymun (Terry Mun-Andersen):修复:删除 CONTRIBUTING.md 中多余的反引号 PR #240305

  • @tmm1 (Aman Karmani):tsb:修复删除并重新添加的源文件未重新生成的问题 PR #238409

  • @xymopen (xymopen_Official)

    • 添加 Node 作为 npm 脚本运行器 PR #236967

    • 添加 Node 作为 npm 脚本运行器(第二版) PR #240527

  • @zardoy (Vitaly):[Git] 迁移到在拉取时使用 git 自动存储以提高性能 PR #187850

vscode-css-languageservice 贡献:

  • @GauravB159 (Gaurav Bhagchandani):添加了 lab() 和 lch() 颜色预览 PR #306

vscode-eslint 贡献:

  • @edemaine (Erik Demaine):支持 Civet 的探测功能 PR #1965

  • @mustevenplay (mustevenplay):添加 TypeScript 配置文件检测 PR #1968

vscode-hexeditor 贡献

  • @tomilho (Tomás Silva):将“Hex Compare Selected”移到“Compare Selected”下方 PR #561

vscode-jupyter 贡献:

  • @thesuperzapper (Mathew Wicks):修复读取 JUPYTER_RUNTIME_DIRXDG_RUNTIME_DIR PR #16451

vscode-languageserver-node 贡献:

  • @MariaSolOs (Maria José Solano)

    • 将能力信息添加到元模型中 PR #1591

    • 修复文本文档 didOpen/didClose 服务器能力设置 PR #1615

    • 修复范围格式化请求的能力设置 PR #1617

  • @mciccale (Marco Ciccalè Baztán):小的拼写错误修正:semaphore.ts PR #1618

  • @yf-yang:修复:避免处置不匹配的处理程序 PR #1614

vscode-mypy 贡献:

  • @DetachHead

    • 使用正确的文件路径大小写,以解决 mypy 问题 PR #342

    • 更新 cwd 的大小写以匹配文件路径 PR #344

  • @hamirmahal (Hamir Mahal):修复:在 CI 中使用已弃用的 Node12 PR #336

  • @ivirabyan (Ivan Virabyan):添加 dmypy 状态文件设置 PR #347

vscode-pull-request-github 贡献:

  • @christianvuerings (Christian Vuerings):修复使用自定义 SSH 时复制 GitHub 永久链接的问题 PR #6669

vscode-python-debugger 贡献:

  • @TCPsoftware (tcpsoft): 将 "args": "${command:pickArgs}" 设置为默认的调试配置 PR #548

vscode-vsce 贡献:

  • @mohankumarelec (mohanram):更新了 semver 比较 PR #1078

  • @stevedlawrence (Steve Lawrence):允许生成可重现的 .vsix 包 PR #1100

debug-adapter-protocol 贡献:

  • @angelozerr (Angelo):添加 IntelliJ / LSP4IJ DAP 支持 PR #529

  • @samisalreadytaken:将 Squirrel 调试器添加到 adapters.md 中。 PR #530

  • @SpartanJ (Martín Lucas Golini):更新 tools.md,添加一个新的 DAP 客户端:ecode PR #526

  • @sssooonnnggg (Song):杂务:添加 Luau 调试器 PR #516

  • @theIDinside (Simon Farre):将 Midas 添加到调试适配器列表,并支持 VSCode PR #528

language-server-protocol 贡献:

  • @ind1go (Ben Cox): 工作区诊断中的拼写错误 PR #2086

  • @MariaSolOs (Maria José Solano)

    • 向元模型添加能力信息 PR #2096

    • 更新元模型 PR #2104

  • @MuntasirSZN (Muntasir Mahmud):功能:在服务器列表中添加 Copilot 语言服务器 PR #2107

  • @Szasza (Szasza Palmer):将 Wing 语言服务器添加到服务器列表 PR #2101

  • @the-mikedavis (Michael Davis):明确 $0 不应使用其他片段语法 PR #2087

  • @yassun7010 (yassun7010):将 Tombi 添加到 LSP 列表 PR #2089

python-environment-tools 贡献

  • @pantheraleo-7:添加对检测 $VIRTUAL_ENV 的支持 PR #181

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词