2025 年 2 月(版本 1.98)
更新 1.98.1:此更新解决了这些问题。
更新 1.98.2:此更新解决了这些问题。
下载:Windows:x64 Arm64 | Mac:Universal Intel Apple 芯片 | Linux:deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 2025 年 2 月版本。此版本中有许多更新,我们希望您会喜欢,其中一些主要亮点包括:
- 下一个编辑建议(预览) - Copilot 预测您接下来可能进行的编辑。
- 代理模式(预览) - Copilot 自主完成任务。
- Copilot 编辑器对 Notebook 的支持 - 快速迭代 Notebook 的编辑。
- Copilot Vision - 在聊天提示中附加图像并与之交互。
- 代码搜索 - 让 Copilot 为您的聊天提示查找相关文件。
- 终端 IntelliSense(预览) - 为您的终端提供丰富的完成支持。
- 拖放引用 - 快速在新编辑器中打开 Peek 引用。
- Linux 自定义标题栏 - Linux 上默认启用自定义标题栏支持。
- 未解决的诊断(预览) - 提交时出现未解决的诊断时提示。
- 源代码管理中的软删除 - 将未跟踪的文件移动到回收站而不是删除它们。
- 自定义指令 GA - 使用自定义指令根据您的需求定制 Copilot。
如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新。Insiders:想尽快试用新功能?您可以下载每晚的 Insiders 构建版本,并在可用时立即试用最新更新。
GitHub Copilot
Copilot 功能可能会经历不同的早期访问阶段,这些阶段通常通过设置启用和配置。
阶段 | 描述 |
---|---|
实验性 | 该功能仍在开发中,尚未准备好供一般使用。 查看实验性功能 ( @tag:experimental )。 |
预览 | 该功能仍在完善中,但已可使用。欢迎提供反馈。 查看预览功能 ( @tag:preview )。 |
稳定 | 该功能已准备好供一般使用。 |
Copilot 编辑
代理模式改进(实验性)
上个月,我们在 VS Code Insiders 中引入了 Copilot Edits 的代理模式。在代理模式下,Copilot 可以自动搜索您的工作区以获取相关上下文,编辑文件,检查错误,并在您的许可下运行终端命令以端到端地完成任务。
注意:代理模式目前可在 VS Code Insiders 中使用,我们刚刚开始在 VS Code Stable 中逐步推出。一旦为您启用了代理模式,您将在 Copilot Edits 视图中看到一个模式下拉菜单 — 只需选择代理。
我们本月对工具使用的用户体验进行了多项改进
- 终端命令现在以内联方式显示,因此您可以跟踪已运行的命令。
- 您可以在运行之前编辑聊天响应中建议的终端命令。
- 使用⌘Enter(Windows、Linux Ctrl+Enter)快捷方式确认终端命令。
代理模式自主搜索您的代码库以获取相关上下文。展开消息以查看已完成的搜索结果。
我们还对代理模式的提示和行为进行了各种改进
- 聊天中的撤消和重做操作现在撤消或重做聊天响应中进行的上次文件编辑。这对于代理模式很有用,因为您现在可以撤消模型采取的某些步骤,而无需回滚整个聊天响应。
- 代理模式现在可以自动或在收到指示时运行您的构建任务。如果模型在不应运行时运行任务,可以通过github.copilot.chat.agent.runTasks设置禁用此功能。
了解更多关于Copilot Edits 代理模式的信息,或阅读代理模式发布博客文章。
注意:如果您是 Copilot Business 或 Enterprise 用户,您的组织管理员必须选择启用 Copilot“编辑器预览功能”才能使用代理模式。
Copilot 编辑器中的 Notebook 支持(预览)
我们正在 VS Code Insiders 中引入 Copilot Edits 的 Notebook 支持作为预览功能。您现在可以使用 Copilot 编辑 Notebook 文件,体验与编辑代码文件一样直观。从头开始创建新的 Notebook,修改多个单元格中的内容,插入和删除单元格,以及更改单元格类型。此预览功能在处理数据科学或文档 Notebook 时提供了无缝的工作流程。
注意:此功能目前仅在 VS Code Insiders 中可用,并带有 GitHub Copilot Chat 的预发布版本。我们将在未来的版本中将其引入 VS Code Stable 之前继续改进体验。
精细化的编辑器集成
我们改进了 Copilot Edits 与代码和 Notebook 编辑器的集成
- 应用更改时不再滚动。视口保持原位,更容易专注于哪些更改。
- 将编辑审查操作从“接受”重命名为“保留”,将“丢弃”重命名为“撤消”,以更好地反映实际情况。Copilot Edits 的更改是实时的,它们在进行时应用并保存,用户可以保留或撤消它们。
- 保留或撤消文件后,会自动显示下一个文件。
视频演示了更改如何实时应用和保存。实时预览更新,用户决定“保留”更改。撤消和进一步调整也仍然可能。
更新的用户界面
为了将 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 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设置为 true 以启用此行为。工具的完整列表是:
- 基于嵌入的语义搜索
- 文本搜索
- 文件搜索
- Git 修改文件
- 项目结构
- 读取文件
- 读取目录
- 工作区符号搜索
将问题作为聊天上下文附加
为了帮助解决代码或其他工作区问题,您现在可以将“问题”面板中的问题作为上下文附加到聊天中,以供提示使用。
您可以将“问题”面板中的项目拖放到“聊天”视图中,在提示中键入 #problems
,或选择纸夹 📎 按钮。您可以附加特定问题、文件中的所有问题或代码库中的所有文件。
将文件夹作为上下文附加
以前,您可以通过从“资源管理器”视图拖放来将文件夹作为上下文附加。现在,您还可以通过选择纸夹 📎 图标或在聊天提示中键入 #folder:
后跟文件夹名称来附加文件夹。
下一条编辑建议的折叠模式(预览)
设置:
我们为 NES 添加了折叠模式。当您启用此模式时,仅在左侧编辑器边距中显示 NES 建议指示器。仅当您按 Tab 导航到它时,才显示代码建议本身。在不接受建议之前,会立即显示连续建议。
折叠模式默认禁用,可以通过配置editor.inlineSuggest.edits.showCollapsed启用,或者您可以在 NES 边距指示器菜单中启用或禁用它。
更改补全模型
您已经可以更改 Copilot Chat 和 Copilot Edits 的语言模型,现在您还可以更改内联建议的模型。
此外,您可以通过命令面板中的更改完成模型命令或标题栏中 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 免费用户,则显示配额信息
- 编辑器相关设置,例如代码补全
- 使用其他 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 拉取请求扩展。
辅助功能
Copilot 编辑器辅助功能
我们使 Copilot 编辑器更具可访问性。
- 现在,对于带有修改的文件和更改区域(插入、修改和删除)都有音频信号。
- 现在,修改后的文件可以使用可访问的差异查看器。就像在差异编辑器中一样,选择 F7 以启用它。
activeEditorState
窗口标题变量
我们有一个新的window.title变量activeEditorState
,用于指示编辑器信息,例如修改状态、问题数量以及文件何时有待处理的Copilot编辑以供屏幕阅读器用户使用。在屏幕阅读器优化模式下,此变量默认附加,并且可以使用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设置进行自定义。试试看,并告诉我们您的反馈。
Notebook
内联 Notebook 差异视图(实验性)
设置:notebook.diff.experimental.toggleInline
您现在可以为 Notebook 启用内联差异视图。此功能使您可以在单个内联视图中查看 Notebook 单元格内的更改,而不是传统的并排比较。
通过将notebook.diff.experimental.toggleInline设置为true
来启用此功能。然后,您可以使用右上角的编辑器菜单将差异视图切换为内联。
Notebook 内联值悬停
Notebook 内联值现在其装饰被截断以适应视口宽度,并具有丰富的悬停以显示完整值,同时保持空格格式。这保持了数据框等变量的形状,使值更容易一目了然。
终端 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
显示所有分支
主题:Sapphire(在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 功能要求我们检测此内联建议,以前使用了一种简单的实现,仅检查文本是否使用淡色或斜体 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
选项卡补全中显示 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 旧版服务器的生命周期结束
- 扩展的代理可配置性
您可以在远程开发发行说明中了解有关这些功能的更多信息。
企业支持
允许多行扩展
您现在可以使用多行字符串在 Windows 的组策略中配置允许的扩展。这允许更灵活和广泛地配置允许的扩展。了解更多关于配置允许的扩展的信息。
对扩展的贡献
Python
长字符串断行时自动插入引号
Pylance 现在支持自动插入引号,以便在断开长字符串时实现无缝体验。
Pylance 内存消耗改进
我们对 Pylance 的内存消耗进行了一些优化,尤其是在处理大型工作区时。此增强功能已添加到 Pyright,它是为 Pylance 语言服务器功能提供支持的静态类型检查器。
Python shell 集成改进
修改python.terminal.shellIntegration.enabled后,您将不再需要重新加载才能使更改生效。只需创建一个新的终端即可在终端的 Python REPL 中看到所需的更改。
Windows Git Bash 的正确工作区提示
Windows 上使用 Git Bash 的 Python 用户现在将在其终端提示中看到正确的工作目录。这些更改适用于选择加入 pythonTerminalEnvVarActivation
实验的用户。
自动测试发现文件模式的新设置
您现在可以通过在python.testing.autoTestDiscoverOnSavePattern设置中指定全局模式来精确控制自动测试发现的文件。其默认值设置为**/*.py
。
从 settings.json 读取测试调试配置作为备用
我们现在在 settings.json
和 launch.json
文件中查找测试调试配置,扩展了您可以定义这些配置的位置。
GitHub 身份验证
通过采用 Electron fetch
改进了代理支持
GitHub 认证扩展现在利用 Electron 版本的 fetch
来发出 Web 请求。这有助于用户处理某些代理和防火墙设置。如果您知道自己在具有代理设置的环境中运行,并且无法在 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
提案的示例
精炼的片段 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 问题中告诉我们您的想法。
Shell 环境
扩展能够访问从 VS Code 集成终端打开的 pwsh、zsh、bash 和 fish shell 的用户当前活动的 shell 环境信息。这仅在启用terminal.integrated.shellIntegration.enabled时可用。
用户可以决定是否使用terminal.integrated.shellIntegration.environmentReporting报告其 shell 环境信息。
试一试,并在此 GitHub 问题中告诉我们您的想法。
工程
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):差异选择指示线应使用 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):更新聊天的
newEditSession
命令以接受输入提示 PR #241796 - @devm33 (Devraj Mehta):修复:为 webpack 添加 electron 作为外部模块 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):“隧道用户显示”中的日志提供程序 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)
- 使命令中心调试启动器优先提供最近使用的配置 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):修复尝试缩进时意外的 Tab 补全 PR #136572
- @SunsetTechuila (Grigory):功能(commands):添加
insertFinalNewLine
PR #241126 - @tcvdh (Thijs van den Heuvel):修复:等待 clear 命令执行,然后才能重新使用终端 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 autostash 以在拉取时获得更好的性能 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_DIR
和XDG_RUNTIME_DIR
PR #16451
对 vscode-languageserver-node
的贡献
- @MariaSolOs (Maria José Solano)
- @mciccale (Marco Ciccalè Baztán):semaphore.ts 中的小错字 PR #1618
- @yf-yang:修复:避免处置不匹配的处理程序 PR #1614
对 vscode-mypy
的贡献
- @DetachHead
- @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 Debugger 添加到 adapters.md PR #530
- @SpartanJ (Martín Lucas Golini):更新 tools.md,添加一个新的 DAP 客户端:ecode PR #526
- @sssooonnnggg (Song):chore:添加 luau 调试器 PR #516
- @theIDinside (Simon Farre):将 Midas 添加到调试适配器列表,支持 VSCode PR #528
对 language-server-protocol
的贡献
- @ind1go (Ben Cox):工作区诊断中的错字 PR #2086
- @MariaSolOs (Maria José Solano)
- @MuntasirSZN (Muntasir Mahmud):feat:在服务器列表中添加 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