技术速递|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 Edits 和 Copilot Chat 视图。你可以通过配置 workbench.secondarySideBar.showLabels
随时切换回显示图标的方式。
新的设置编辑器关键字匹配算法(预览版)
设置:workbench.settings.useWeightedKeySearch
我们添加了一种新的设置编辑器搜索算法,它优先显示更相关的关键字匹配。该搜索算法尝试以比之前更多的方式匹配设置 ID 和标签,同时它还会进一步过滤结果,以确保仅显示最匹配的项。
你可以通过启用 workbench.settings.useWeightedKeySearch
设置来尝试该预览功能。
new-settings-search
主题:浅粉色(vscode.dev 上的预览版)
在简易文件选择器中隐藏点文件的选项
当使用简易文件选择器时(无论是连接到远程服务器还是启用 files.simpleDialog.enable
时),你现在可以通过使用 显示/隐藏点文件 按钮来隐藏点文件。
编辑器
Peek 引用的拖放支持
现在,Peek 视图支持拖放功能。调用 Peek References、Peek 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.json
和 launch.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 });
createIfNone
和 forceNewSession
现在可以接受布尔值或 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 包括 pwsh
、zsh
、bash
和 fish
,这些 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_DIR
和XDG_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