2024 年 3 月 (版本 1.88)
Update 1.88.1:本次更新修复了这些问题。
下载:Windows:x64 Arm64 | Mac:通用 Intel Apple 芯片 | Linux:deb rpm tarball Arm snap
欢迎来到 Visual Studio Code 的 2024 年 3 月发布。此版本有许多更新,希望您会喜欢。以下是一些主要亮点:
- 应用自定义编辑器标签 - 区分文件名相同的编辑器。
- 锁定滚动 - 并排比较编辑器,实现同步滚动。
- 扩展更新改进 - 无需重新加载即可重启扩展,以及随 VS Code 版本更新扩展。
- 测试覆盖率 API - VS Code 中原生支持代码覆盖率。
- 迷你地图中的折叠标记 - 从迷你地图轻松识别和导航到代码部分。
- 快速搜索改进 - 粘性文件路径分隔符和分隔符按钮。
- Notebook 运行部分中的单元格 - 快速运行 Notebook 部分中的所有单元格。
- Copilot 改进 - 改进了内联聊天 UI、提交消息和使用到的引用。
- Python 自动检测改进 - 检测 Flask 和 Django 的启动文件,发现 Hatch 环境。
- 预览:终端内联聊天 - 直接从终端启动 Copilot 内联聊天对话。
如果您想在线阅读这些发布说明,请访问 code.visualstudio.com 上的更新页面。Insider 版本:想尽快试用新功能?您可以下载每晚构建的 Insider 版本,并尽快试用最新更新。
可访问性
语音录制声音
我们为语音录制添加了新的可访问性信号声音
- 语音录制开始 - 通过
accessibility.signals.voiceRecordingStarted
设置进行配置 - 语音录制结束 - 通过
accessibility.signals.voiceRecordingStopped
设置进行配置
改进的 Diff 编辑器可访问性
如果您正在使用屏幕阅读器,当 diff 编辑器成为活动编辑器时,您现在会收到通知。您可以使用 accessibility.verbosity.diffEditorActive
设置禁用此行为。
我们还在 可访问性帮助对话框 中添加了关于 Diff Editor: Switch Side 的信息,这是一个对键盘用户有用的命令。
可访问性信号 现在在 diff 编辑器的两侧都可用。之前,它们仅在修改侧可用。
可访问视图聊天代码块命令
当您在可访问视图中检查聊天回复时,您现在可以使用聊天视图中可用的代码块命令和键绑定。
其中包括 Chat: Insert at Cursor、Chat: Insert into Terminal 和 Chat: Insert into New File。
Notebook 单元格 aria 标签更新
Notebook 单元格的 aria 标签现在会更新,以指示单元格当前是否正在执行或等待执行。
工作台
浮动窗口中的自定义编辑器支持
我们将打开编辑器到浮动窗口的支持扩展到自定义编辑器,以及通常使用 webview API 的所有编辑器。这包括 markdown 预览、浏览器预览以及复杂的自定义编辑器,例如我们的十六进制编辑器。
注意:由于技术限制,在窗口之间移动基于 webview 的编辑器需要重新加载该编辑器的内容。然后由编辑器负责恢复您之前累积的状态。在某些情况下,您的状态可能会被重置,就像您第一次打开编辑器一样。
打开的编辑器的自定义标签
您现在可以自定义编辑器标签和“打开的编辑器”视图的显示标签。此功能有助于区分同名文件的编辑器。
您可以通过在 workbench.editor.customLabels.patterns
设置下添加条目来根据您的偏好定制这些标签。每个条目应包含一个匹配文件路径的glob 模式和一个定义编辑器标签新名称的模板。此自定义仅在文件路径与指定模式匹配时应用。模式是否匹配取决于它是否定义为相对或绝对文件路径模式。
模板可以包含诸如 ${filename}
、${extname}
、${dirname}
和 ${dirname(N)}
等变量,这些变量会根据文件的路径动态替换为相应的值。
要启用或禁用这些自定义标签,请使用 workbench.editor.customLabels.enabled
设置。这使您可以随时切换回原始编辑器名称,而无需删除自定义模式。
锁定滚动
您现在可以使用 View: Toggle Locked Scrolling Across Editors 命令同步所有可见编辑器的滚动。这意味着当您在一个编辑器中滚动时,所有其他编辑器也会滚动相同的量,从而保持所有内容对齐。如果您需要并排比较文件,此功能会很有用。
如果您想要对启用和禁用锁定滚动进行更多控制,您可以选择仅在按住特定键绑定时激活滚动同步。为 workbench.action.holdLockedScrolling
命令设置键盘快捷方式,即可在需要时临时锁定所有编辑器的滚动。
活动栏位于底部
此前,我们引入了将活动栏移动到侧边栏顶部的选项。现在,您还可以将活动栏移动到底部。为此,请将 workbench.activityBar.location
设置更改为 bottom
。
我们还改进了活动栏位于顶部时的外观和体验,以确保它与界面的其余部分完美契合。
搜索编辑器单击行为
您现在可以配置 search.searchEditor.singleClickBehaviour
设置来确定单击搜索编辑器条目时发生的情况。当前,该设置仅支持打开 Peek Definition。
快速搜索改进
粘性文件路径
在快速搜索中,我们将文件名分隔符设置为粘性,以更清楚地显示搜索结果与哪个文件相关联。当文件中包含大量搜索词时,此功能会很有用。
文件路径分隔符按钮
当您将鼠标悬停在某个文件的文件结果上,或者使用箭头键向下导航到某个结果时,文件路径分隔符也会显示按钮(例如,用于打开文件)。
Quick Pick 分隔符导航键绑定
我们收到了反馈,希望能够在 quick pick 中的分隔符之间导航。本次迭代,我们添加了一个键绑定来实现此功能。在 Windows 和 Linux 上,您可以使用 Alt+上/下
,在 macOS 上是 Cmd+上/下
。在此示例视频中,您可以看到活动项在以下项之间移动:
- 命令面板中的
recently used
和other commands
分隔符 - 快速搜索中的文件路径分隔符之间
Quick Pick 禁用的复选框项
本次迭代,我们使 quick pick 显示禁用的项时更加清晰。例如,在“管理受信任的扩展”quick pick 中可以看到这一点,您可以访问已登录的任何帐户的该 quick pick。
扩展更新改进
重启扩展
更新扩展后,您现在可以重启扩展,而无需重新加载窗口。
注意:当您连接到远程服务器(例如 WSL、SSH 或 Dev Container)时,仍然需要重新加载窗口才能更新扩展。
随 VS Code 更新扩展
当您启用 extensions auto update
时,VS Code 现在会更新与可用于更新的较新版本 VS Code 兼容的扩展。如果扩展的较新版本与当前版本的 VS Code 不兼容,则只有在您更新 VS Code 后,才会启用扩展的较新版本。
跳转到评论回复
“评论”视图中评论线程的上下文菜单现在包含一个“回复”操作,前提是该评论线程允许回复。这使您可以快速跳转到回复输入框并开始输入回复。
编辑器
迷你地图部分标题
迷你地图现在可以识别并渲染由折叠标记定义的部分,例如 TypeScript 中的 //#region
,或使用 MARK:
的注释。这使您可以快速扫描和导航大型文件。
重构预览键绑定
我们更新了用于预览“重命名符号”重构 (F2) 编辑的键绑定,以保持与在其他上下文(例如代码操作)中预览重构的一致性。您现在可以使用 ⌘Enter (Windows、Linux Ctrl+Enter)(之前是 Shift + Enter
)来预览编辑。
当鼠标悬停在代码操作上时,⌘Enter (Windows、Linux Ctrl+Enter) 也会在工作台中打开“重构预览”面板。
Diff 编辑器暂存/撤销选择按钮
diff 编辑器现在为 暂存 (Stage) 和 撤销 (Revert) 控件提供了单独的边槽。这些操作使您可以暂存或撤销已更改的代码块。
如果您对某些更改执行文本选择,这些按钮使您可以暂存或撤销选定的更改(选择范围内的所有已更改字符)。
您可以通过将 diffEditor.renderGutterMenu
设置为 false
来隐藏 diff 编辑器边槽。
重命名建议行为
我们改进了使用重命名建议的流程,使其与 quick pick 的流程一致。当您从列表中选择一个重命名建议时,输入值会相应更新,这使您可以进一步修改该建议。
源代码管理
入站更改文件装饰
为了帮助避免从远程合并/rebase 更改时可能发生的冲突,我们现在为所有具有入站更改且已抓取但尚未合并/rebase 的文件显示文件装饰。要利用此功能,您应该同时启用 git.autofetch
和 git.decorations.enabled
设置。
主题:GitHub Sharp (在 vscode.dev 上预览)
终端
调试终端中的 Shell 集成
为了向用户和扩展提供增强的功能,shell 集成现在在调试时启动的终端中自动启用。
运行最近命令改进
由 shell 集成驱动的 运行最近命令 (⌃⌥R (Windows、Linux Ctrl+Alt+R)) 现在会滚动到并显示该命令上次运行的位置(如果可能)。运行命令或取消 quick pick 会将终端返回到其先前的状态。
主题:Sapphire (在 vscode.dev 上预览)
打开检测到的链接改进
打开检测到的链接 命令 (⇧⌘G (Windows、Linux Ctrl+Shift+G)) 现在会在编辑器中预览链接结果,并在终端中突出显示链接源。
此外,现在会从列表中过滤掉重复的链接,并且所有链接都以一致的格式呈现。
词链接的额外上下文
词链接 由 terminal.integrated.wordSeparators
设置定义,并且是找不到文件/文件夹/URI 时的后备。激活时,这些链接现在包含额外的周围上下文,用于添加搜索的行和列信息。
请注意截屏中选择了链接 terminalLinkParsing
,但搜索结果也包含链接后面的行号。
新的链接格式
以下链接格式现在可以在终端中检测到,即使路径包含空格:
文件 路径:行:列
终端粘性滚动透明度支持
终端中的粘性滚动 现在支持透明度。主题可以通过将 terminalStickyScroll.background
主题颜色配置为透明值来使用此功能,或者在您的 settings.json
中指定覆盖。例如:
{
"workbench.colorCustomizations": {
"[Default Dark Modern]": {
"terminalStickyScroll.background": "#181818c0"
}
}
}
这将导致粘性滚动的背景透明,允许后面的文本透过来
测试
测试覆盖率
本次迭代,我们最终确定了测试覆盖率 API,为 VS Code 带来了原生覆盖率支持。如果您的测试系统支持,您可以使用新的 Run With Coverage 按钮获取覆盖率
同样有新的运行覆盖率键绑定,例如 Ctrl+; Ctrl+Shift+A 运行所有测试并包含覆盖率,以及 Ctrl+; Ctrl+Shift+L 运行上次的测试集并包含覆盖率。
默认情况下,覆盖率信息会显示为行号上的叠加层,但您可以 切换内联覆盖率 以查看源代码文件的完整详细信息
主题:Codesong (在 vscode.dev 上预览)
使用测试覆盖率需要您的扩展实现新的 API。一些扩展,例如 Test Runner for Java 和 node:test runner 已支持此功能。在团队的 12 月 和 1 月 更新中了解更多关于 Java 测试覆盖率的信息。
扩展作者可以在 测试 API 文档 中找到更多关于测试覆盖率 API 的详细信息。
测试消息中的颜色代码支持
我们现在解析终端颜色代码,以便对文本测试消息(例如测试失败时显示的消息)进行着色,而不是显示原始的“不可打印”数据代码。
语言
TypeScript 5.4
VS Code 现在包含 TypeScript 5.4。本次重大更新带来了类型检查和 IntelliSense 的新改进,以及一些错误修复。请参阅 TypeScript 5.4 发布博客文章 了解更多详情。
Markdown 中更智能地插入图像和链接
当您将图像或文件拖放或粘贴到 Markdown 文件中时,VS Code 会自动为其插入 Markdown 图像或链接语法。当您插入到代码块和其他不支持 Markdown 语法的上下文时,我们现在也会智能地禁用此行为
您始终可以通过使用拖放/粘贴小部件切换回插入 Markdown 语法。您可以使用 markdown.editor.drop.enabled
和 markdown.editor.filePaste.enabled
设置来配置此行为。
Notebooks
Notebook 输出中的键盘快捷方式
我们现在在 notebook 输出中支持一些标准键盘快捷方式
- 输出可以使用键盘通过 Ctrl+A 和 Ctrl+C 键绑定进行选择和复制。
- 可滚动的输出可以使用键盘通过 上 和 下 键绑定进行滚动。
- 可以使用键盘通过 Ctrl+Home 和 Ctrl+End 键绑定分别滚动到可滚动输出的顶部和底部(在 macOS 上是 Cmd+上 和 Cmd+下)。
- 可以使用键盘通过 Ctrl+Shift+上 和 Ctrl+Shift+End 键绑定分别选择从当前选择点到输出顶部或底部的输出(在 macOS 上是 Shift+Cmd+上 和 Shift+Cmd+下)。
单元格错误诊断
扩展现在可以为失败的单元格提供错误详细信息,以便在单元格内显示错误诊断。当焦点位于单元格容器时,notebook.cell.openFailureActions
(⌘. (Windows、Linux Ctrl+.)) 会跳转到该错误的快速操作菜单。诊断仅在有语言模型可用以提供快速操作时显示。
运行部分中的单元格
为了更轻松地在 notebook 中运行相关单元格,您现在可以使用 运行部分中的单元格 操作运行由 markdown 部分标题分组在一起的单元格。此操作在 notebook 大纲视图和粘性滚动元素上可用。
在粘性滚动元素中,右键单击您选择的标题,并通过上下文菜单中的操作运行该部分。在大纲视图中,选择悬停或选择时出现的工具栏图标,然后通过显示的动作运行单个单元格或一组单元格。
大纲视图中的筛选器支持
您现在可以在 notebook 大纲视图中使用筛选器,这些筛选器使您可以控制 Markdown 标题、代码单元格和代码单元格符号的包含。这些筛选器对应于以下设置:
notebook.outline.showMarkdownHeadersOnly
notebook.outline.showCodeCells
notebook.outline.showCodeCellSymbols
关闭 Interactive Window 时提示保存
通过启用 interactiveWindow.promptToSaveOnClose
设置,您将在 Interactive Window 关闭时收到提示,以保存其内容,确保不会丢失任何工作。目前唯一支持的文件格式是 .ipynb
。
远程开发
远程开发扩展允许您使用 开发容器、通过 SSH 连接的远程计算机或 远程隧道,或将 适用于 Linux 的 Windows 子系统 (WSL) 作为功能完善的开发环境。
亮点包括
- 支持扩展的发行版的备用服务器下载
- 基于 URI 查询字符串的端口转发
- 开发容器扩展自动启动 Docker
- 通过组策略限制对开发隧道和端口转发的访问
您可以在 远程开发发布说明 中了解更多关于这些功能的信息。
对扩展的贡献
VS Code 语音
延迟激活
VS Code 语音 扩展现在仅在 VS Code 中请求语音转文本服务时激活。这确保了扩展不会对扩展主机启动时间产生负面影响。
使用显示语言作为默认语音语言
默认情况下,VS Code 语音扩展现在使用 VS Code 的显示语言作为语音语言,如果该语言受支持,则选择相应的模型。
对于 accessibility.voice.speechLanguage
设置,auto
是新的默认值。
GitHub Copilot
内联聊天改进
内联聊天现在作为浮动控件启动,使其更加轻量。第一次请求后,控件会展开以占据更多空间。我们还调整了渲染,使其与其他聊天体验(例如聊天视图或快速聊天)更加一致。
主题:GitHub Light Colorblind (Beta)
我们重新定位了重跑和反馈控件,并使与接受和丢弃按钮并列的用于查看 diff 的切换控件更加醒目。
主题:GitHub Light Colorblind (Beta)
Notebook 内核状态作为上下文
在 notebook 中时,内核状态(例如,变量和可用包)现在会自动作为上下文包含在内联聊天中。这使得 Copilot 可以利用 notebook 的当前状态来提供更相关的补全。
主题:GitHub Dark
提交消息生成改进
为了提高生成的提交消息的质量,我们现在还将存储库中最近 10 个提交的提交消息以及当前用户最近 10 个提交的提交消息作为额外上下文包含进来。
工作区创建改进
当检测到与聊天提示匹配的项目时,@workspace /new
命令现在提供精选自 GitHub 存储库的示例项目作为建议。
@workspace /new
命令也得到了增强,可以更有效地管理上下文和历史记录。这使您可以通过提出后续查询来优化建议的工作区结构和文件内容。例如,“使用 TypeScript 而不是 JavaScript”或“也添加 bootstrap”。
@terminal /explain 斜杠命令
现在提供了一个新的 @terminal /explain
斜杠命令,该命令针对解释命令或错误进行了优化。如果没有 /explain
,@terminal
则优化为建议修复。此斜杠命令用于 使用 Copilot 解释 快速修复或 解释选择 操作。
预览:终端内联聊天
此版本提供了终端内联聊天的预览版,可以直接在终端中方便地访问 Copilot 的功能。
您可以使用 terminal.integrated.experimentalInlineChat
设置启用终端内联聊天。要在终端中调用内联聊天,请使用 ⌘I (Windows、Linux Ctrl+I) 键绑定。
终端内联聊天使用 @terminal
聊天参与者,该参与者具有关于集成终端的 shell 及其内容的上下文。
一旦建议了命令,使用 ⌘Enter (Windows、Linux Ctrl+Enter) 在终端中运行命令,或使用 ⌥Enter (Windows、Linux Alt+Enter) 将命令插入到终端中。在运行命令之前,也可以直接在 Copilot 的响应中编辑该命令(目前在 Windows 和 Linux 上是 Ctrl+下、Tab、Tab,在 macOS 上是 Cmd+下、Tab、Tab)。
认证流程的清晰度
认证的清晰度非常重要。我们希望清楚地说明我们如何进行认证以及我们请求什么。如果您在 VS Code 中打开私有存储库,并且我们没有适用于此场景的正确认证,我们会显示一个认证对话框。该对话框包含需要认证的原因描述,以及一个 了解更多 按钮,用于了解更多关于这些要求的信息。
了解更多 按钮会带您前往我们的关于认证要求的文档。
变量引用
聊天响应中的 使用到的引用 部分提供了有关所用上下文的信息。此前,此部分仅显示隐式引入的上下文。现在,它还会显示您在聊天提示中明确提到的变量,例如 #file
或 #editor
。如果“使用到的引用”中缺少某个变量,则可能表示该变量被忽略了,因为它对于语言模型的上下文窗口来说太大。
次要聊天提交操作
在聊天视图中,聊天提交按钮现在有一个下拉菜单,可以轻松访问更多操作。
- 发送到 @workspace 将您的查询提交给
@workspace
聊天参与者,这对于询问有关工作区内容的问题很有用 - 发送到新聊天 启动一个新的空聊天,然后提交查询
使用 Copilot: Explain This
时的范围选择
当您在活动编辑器中未使用选择的情况下使用 /explain
,并且存在多个感兴趣的范围时,我们添加了提示支持,以明确要解释哪个符号或块范围。
此行为目前是选择加入的,由 github.copilot.chat.scopeSelection
设置控制。
Python
改进的 Flask 和 Django 调试配置选择
为 Flask 和 Django 应用创建启动配置变得更加容易!在为您的 Web 应用创建 launch.json
时,我们改进了检测工作区中可能的启动文件的方式。
对于 Django,Python Debugger 扩展会在工作区的根目录或下一级子目录中查找 manage.py
或 app.py
文件。对于 Flask,该扩展会查找包含 Flask 应用声明(例如 app = Flask()
)的 wsgi.py
、app.py
或 init.py
文件。
如果未在项目中找到这些文件,下拉菜单将显示相应项目类型的 默认 选项,即使该文件可能不存在。
Hatch 环境发现
Hatch 环境现在默认会被发现和激活,类似于其他常见环境,例如 Venv、Conda 和 Poetry。此外,对于 Hatch,即使没有注册明确的环境标识符,扩展也能从环境定位器中确定环境类型 (Hatch)。
pipenv、pyenv 和 Poetry 项目的自动环境选择
如果您的工作区包含 pipenv、pyenv 或 Poetry 环境,现在会自动为您的工作区选择相应的环境。以前,扩展可以正确发现这些环境,但会选择默认的全局解释器,这需要您手动为您的工作区选择适当的环境。
现在,Python 扩展会根据环境的存在和任何相应的配置文件来推断激活的环境。例如,对于 pyenv,扩展会查看 .python-version
文件,以便为工作区自动选择适当的解释器。
报告问题命令改进
Python 和 Python Debugger 扩展现在使您可以更轻松地向我们的仓库报告问题!如果您使用 报告问题 命令 (workbench.action.openIssueReporter
) 提交问题,大部分繁重的工作已经完成,系统只会提示您提供一些额外信息,以便我们的团队能够有效地分类您遇到的问题。
要使用 帮助:报告问题 命令为 @vscode-python 或 @vscode-python-debugger 提交问题,请分别从扩展下拉菜单中选择 Python 或 Python Debugger。
GitHub 拉取请求
GitHub 拉取请求 扩展取得了进一步的进展,它使您能够处理、创建和管理拉取请求和问题。新功能包括
- 在“评论”视图中,过时的评论与当前评论的显示方式不同。
auto
为githubPullRequests.createDefaultBaseBranch
设置的新值将上游的默认分支用作派生仓库的基础分支。- 在“评论”视图中,评论线程具有内联操作(解决/取消解决和“用 HEAD 比较评论”,用于过时评论)和上下文菜单操作。
查看该扩展 0.86.0 版本更新日志,了解其他亮点。
Jupyter
单元格执行分析改进
借助最新的 Pylance 预览版,我们改进了 Jupyter 单元格的依赖关系分析。它现在可以理解模块导入,当您有一个单元格导入在前一个单元格中定义的模块时,这尤其有用。
要启用此功能,请在 VS Code Insiders 中安装最新的 Pylance 预览版,并启用 jupyter.executionAnalysis.enabled
和 notebook.consolidatedRunButton
设置。
扩展创作
使用报告问题命令报告扩展 bug
在上一个迭代中,我们最终确定了一种方式,使扩展在通过 VS Code 的问题报告器提交到 GitHub 时,可以贡献额外的数据或要填写的模板。扩展可以贡献一个命令,可以通过 帮助:报告问题... 命令访问。选择其扩展将运行其贡献的命令。请查看我们的 问题报告文档/发行说明,了解更多关于此功能如何与您的扩展一起工作的信息!
此外,可以通过快速打开快速报告所有已安装的扩展。在快速打开 (⌘P (Windows, Linux Ctrl+P)) 中输入 issue
,即可快速选择或搜索已安装的扩展进行报告。
某些扩展将开始采用这种新的问题报告流程,并且不再需要直接贡献到命令面板中的自定义 Report Issue...
命令。
预览功能
调整终端中重叠字形的比例
新设置 terminal.integrated.rescaleOverlappingGlyphs
可用于调整与后续单元格重叠的字形的比例。这旨在涵盖宽度不明确的字符,这些字符的字体字形可能与底层 pty/unicode 版本认为的不符。例如,在大多数字体中,罗马数字 Unicode 字符 (U+2160+
) 通常占用多个单元格,因此启用此设置时,它们会在水平方向上调整比例。
未调整比例
已调整比例
调整比例发生的规则仍在调整中,我们正在考虑在未来稳定后默认启用此功能。如果您试用此功能并看到正在调整比例但不应该调整的字符,请 创建一个问题。
本地工作区扩展
我们很高兴推出这项新的预览功能,它允许您直接在工作区中打包扩展。此功能旨在满足您特定的工作区需求,并提供更定制化的开发体验。
要使用此功能,您需要在工作区中的 .vscode/extensions
文件夹中打包您的扩展。然后 VS Code 会在“扩展”视图的 工作区推荐 部分显示此扩展,用户可以从那里安装它。VS Code 只会为该工作区安装此扩展。此外,在安装和运行此扩展之前,还需要用户信任该工作区。
例如,考虑位于 VS Code 仓库 中的 vscode-selfhost-test-provider
扩展。此扩展提供了测试功能,使贡献者能够直接在工作区内查看和运行测试。下面的截图显示了“扩展”视图的“工作区推荐”部分中的 vscode-selfhost-test-provider
扩展及其安装能力。
此功能通过 extensions.experimental.supportWorkspaceExtensions
在 Insiders 版本中提供预览。请试用并 在 VS Code 仓库 中创建问题,向我们提供反馈。
提议的 API
终端 Shell 集成 API
现在提供了一个新的提议 API,它允许访问由 Shell 集成激活的终端提供的一些信息。通过此 API,可以监听在终端中执行的命令的传入数据和退出代码。它还引入了一种更可靠的方式来执行命令,即在发送命令之前等待提示符可用,这有助于修复在各种 Shell 设置中可能发生的一些冲突/竞态条件。
这是使用 Terminal.shellIntegration.executeCommand
提议的一个示例
// Execute a command in a terminal immediately after being created
const myTerm = window.createTerminal();
window.onDidActivateTerminalShellIntegration(async ({ terminal, shellIntegration }) => {
if (terminal === myTerm) {
const command = shellIntegration.executeCommand('echo "Hello world"');
const code = await command.exitCode;
console.log(`Command exited with code ${code}`);
}
}));
// Fallback to sendText if there is no shell integration within 3 seconds of launching
setTimeout(() => {
if (!myTerm.shellIntegration) {
myTerm.sendText('echo "Hello world"');
// Without shell integration, we can't know when the command has finished or what the
// exit code was.
}
}, 3000);
这是监听命令数据流的一个示例
// Create a terminal and log all data via console.log
const myTerm = window.createTerminal();
window.onDidStartTerminalShellExecution(execution => {
if (execution.terminal === myTerm) {
const stream = execution.createDataStream();
for await (const data of stream) {
console.log(data);
}
}
});
您可以在 此处 查看新的 API。
Authentication API 的“了解更多”属性
在此迭代中,我们添加了一个新的提议 API,它允许您在 AuthenticationForceNewSessionOptions
中指定 learnMore
属性。想法是,如果您在选项中调用 getSession
并带有 forceNewSession
属性,您可以包含一个 URI
,该 URI 将呈现给用户,以便他们了解您为何请求身份验证的更多信息。以下是其外观示例
这是代码中的样子
vscode.authentication.getSession('github', ['repo'], {
forceNewSession: {
detail: l10n.t('To show you more relevant Copilot Chat results, we need permission to read the contents of your repository on GitHub.'),
learnMore: Uri.parse('https://aka.ms/copilotRepoScope')
};
});
您可以在 此处 查看新的 API。
过时的评论
新的评论线程 applicability
属性允许在“评论”视图中将评论线程标记为过时
您可以在 此处 查看 API 提议。
评论视图菜单
commentsView/commentThread/context
提议菜单允许将操作添加到“评论”视图中评论线程的右键上下文菜单中。通常的 inline
组也会受到尊重,因此操作会以内联方式显示在“评论”视图中。
工程
Electron 28 更新
在此迭代中,我们将 Electron 28 更新推广到稳定版用户。此更新附带 Chromium 120.0.6099.291 和 Node.js 18.18.2。我们要感谢所有在 Insiders 构建上自托管并提供早期反馈的人。
值得关注的修复
- 204886 在简单文件选择器中打开不同路径但同名文件失败
致谢
最后但同样重要的是,向 VS Code 的贡献者们致以诚挚的 感谢。
问题跟踪
对我们问题跟踪的贡献
- @gjsjohnmurray (John Murray)
- @IllusionMH (Andrii Dieiev)
- @RedCMD (RedCMD)
- @starball5 (starball)
- @the-coder-o (Abdul basit)
- @ArturoDent (ArturoDent)
拉取请求
对 vscode
的贡献
- @333fred (Fred Silberberg): 不要修剪作为字符串或正则表达式一部分的空格 PR #198164
- @89netraM (Mårten Åsberg): 为间隔设置渲染最终行号 PR #207227
- @a-stewart (Anthony Stewart)
- 在 QuickAccess 中更改前缀时阻止光标跳转 - v2 PR #204702
- 在 nls.mock.ts 中导出 ILocalizedString PR #206449
- @akbyrd (Adam Byrd)
- 在存在多个光标时,为主光标和次光标实现不同的颜色 PR #181991
- 将 editor.action.focusNextCursor 更改为显示主光标而不是所有光标 PR #182148
- @AndreasBackx (Andreas Backx): 修复 Linux Wayland 的平滑滚动。 PR #205122
- @andrewbranch (Andrew Branch): [typescript-language-features] 修复 autoImportFileExcludePatterns 格式以使其在 Windows 上工作 PR #202762
- @andyscho (Andy Schoenberger): onDidChangeSelectedNotebooks 的内核只有一个订阅者 PR #204417
- @BABA983 (BABA): 更好的测试侧边栏重试颜色 PR #207949
- @BrandonXLF (Brandon Fowler): 覆盖终端选项卡图像图标的 CSS 内容 PR #207220
- @BrookMaoDev (Brook Mao): 改进了 editor.useTabStops 设置的描述 PR #206552
- @btwiuse: cli: 为
code serve-web
命令添加 --server-base-path 标志 PR #207932 - @BusinessDuck (Dmitriy Yurov): 修复浏览器自动填充表单事件的“e.getModifierState is not a function”错误 PR #206883
- @cchanche (Clément Chanchevrier): 调整终端方向 PR #205015
- @CGNonofr (Loïc Mangeonjean)
- 修复键盘布局检测 PR #205193
- 修复当全屏容器不在 body 上时检测尺寸的问题 PR #205884
- @cpendery (Chapman Pendery)
- fix: 终端建议按模糊分数排序 PR #208486
- fix: 当键盘绑定发送到 Shell 时不要显示终端建议 PR #208523
- fix: 修复在接受完成时建议小组件持续存在的问题 PR #208524
- @deyihu (hu de yi): 编辑器粘贴事件结果返回 ClipboardEvent PR #192732
- @dgileadi (David Gileadi): 引入 Minimap 分节标题,类似于 Xcode PR #190759
- @futurist (James Yang): feat: 为 IPCServer 添加 ipcLogger 和 timeoutDelay PR #193896
- @gjsjohnmurray (John Murray): 使通道日志级别可在输出视图中设置 PR #205159
- @harbin1053020115 (ermin.zem): fix: 如果没有内置的入门指南,首次启动时选择第一个扩展入门指南。 PR #207303
- @hickford (M Hickford): Sort lines: 如果未选择任何内容,则排序所有行。 PR #200325
- @hsfzxjy (Xie Jingyi)
- 修复设置编辑器列表项溢出问题 PR #206681
- 在点击 gutter 中间时添加日志点 PR #206684
- @IncognitaDev (Luis Sousa): Feat: 向 CaseActions 添加 PascalCase PR #206259
- @its-miroma (Miroma): 更改默认 YAML 扩展 PR #206447
- @jeanp413 (Jean Pierre): 修复 breadcrumbs 小组件未正确调整大小的问题 PR #200591
- @jeremy-rifkin (Jeremy Rifkin): 扩展 monarch 功能以允许在规则中访问状态 PR #183463
- @jhasse (Jan Niklas Hasse): LineCommentCommand 使用 indentSize 而非 tabSize PR #193811
- @Krzysztof-Cieslak (Krzysztof Cieślak)
- 修复内联编辑中渲染删除项的 off-by-one 错误 PR #205890
- 内联编辑 - 确保在模糊时取消正在进行的请求 PR #206430
- 内联编辑 - 确保在请求新编辑之前完成接受 PR #206525
- @lusingander (Kyosuke Fujimoto): 修复
editor.cursorSurroundingLinesStyle
设置描述损坏的问题 PR #201482 - @mahmoudsalah1993 (Mahmoud Salah): 对于 diff 编辑器,解析已修改的编辑器以允许在 c... 中运行测试 PR #206026
- @marrej (Marcus Revaj): # 为内联完成句柄添加 partial accept kind PR #202668
- @mkasenberg: searchEditor: 添加单击预览的选项 PR #204413
- @mroch (Marshall Roch): 修复“Extension [object Object] is not known”错误 PR #207764
- @NriotHrreion (NoahHrreion): 修复悬停小组件位置异常的问题 PR #205502
- @orgads (Orgad Shaneh)
- Tunnel: 也为查询字符串扩展端口映射查找(第二次) PR #204807
- Tunnel: 重新添加端口映射的单元测试 PR #207249
- @PmcFizz (Fizz): 更新 IActionDescriptor.precondition 描述 PR #176124
- @raphaelgpalma (Raphael Palma): 修复语法错误:“But allow them if the are made from inside an…” PR #207584
- @rehmsen (Ole): 也为浏览器上的并排视图记录
resource
遥测数据。 PR #208196 - @russelldavis (Russell Davis): 修复 javascript 和 typescript 的 decreaseIndentPattern PR #201425
- @samdenty (Sam Denty): feat(web/lifecycleService): 正确的 startupKind PR #206563
- @Sidebail (VLADIMIR VATSURIN): 修复文件相对路径链接 PR #181475
- @SimonSiefke (Simon Siefke): fix: 修复 notebook baseCellViewModel 中的内存泄漏 PR #205499
- @solimant: 遵循 GitHub 品牌名称大小写 PR #208503
- @thegecko (Rob Moran): Web 扩展主机启动时更新 extensionPaths PR #193849
- @vinistock (Vinicius Stock): 修复 Ruby 注释中
in
和when
的意外取消缩进 PR #206132 - @yamachu (Yusuke Yamada): 修复搜索结果中显示最深目录下的文件的问题 PR #206609
- @Yesterday17 (Yesterday17): 按节点深度顺序分派 GestureEvent PR #200612
- @yiliang114 (易良): 修复 webview 中复制/剪切命令不起作用的问题 PR #206529
- @yutotnh (yutotnh): 在单词操作中添加对识别单词区域设置的支持 (#_50045) PR #203605
对 vscode-css-languageservice
的贡献
- @balaji-sivasakthi (Balaji Sivasakthi): feat: 支持 scss 的悬停提示 PR #367
对 vscode-eslint
的贡献
- @JoshuaKGoldberg (Josh Goldberg ✨): feat: 在 eslint.probe 设置中支持 json, json5, jsonc PR #1787
- @remcohaszing (Remco Haszing)
对 vscode-extension-samples
的贡献
- @juliankasimir (Julian Kasimir): feat(lang): 在 showQuickPick 函数中将德语替换为英语 PR #983
对 vscode-hexeditor
的贡献
对 vscode-js-debug
的贡献
- @Beanyy: 修复远程对象中未设置描述时数字 0 的格式问题 PR #1968
- @mdh1418 (Mitchell Hwang): [CDP] 发送 DotnetDebugger 错误事件的遥测数据 PR #1961
- @relief-melone (Relief.Melone): 添加了构建的代理支持 PR #1965
对 vscode-json-languageservice
的贡献
- @denisw (Denis Washington): 修复嵌套尾随逗号情况下的排序错误 PR #223
对 vscode-pull-request-github
的贡献
- @ipcjs (ipcjs): 修复:使
review.openLocalFile
支持从键盘触发。 PR #5840 - @mohamedamara1 (Mohamed Amara): 修复了 IssueOverviewPanel 的 ID PR #5822
对 vscode-pylint
的贡献
- @MGasiewski: 添加逻辑以将波浪号替换为 home 环境 PR #524
对 vscode-python-debugger
的贡献
- @bersbersbers: 更新
launch.json
架构 PR #243 - @StephanTLavavej (Stephan T. Lavavej): 修复拼写错误 PR #217
对 debug-adapter-protocol
的贡献
- @andyw8 (Andy Waite): 更新 Ruby LSP 的适配器列表 PR #471
- @svaante (Daniel Pettersson): 将 Emacs dape 包添加到实现工具部分 PR #469
对 inno-updater
的贡献
- @ChayimFriedman2 (Chayim Refael Friedman): 删除不必要的
unsafe impl Send
PR #25
对 language-server-protocol
的贡献
- @asukaminato0721 (Asuka Minato)
- @iliaamiri (Ilia Abedianamiri): 摘要段落中的一个小拼写错误 PR #1903
- @lukaskesch (Lukas Kesch): 更新 footer.html 中的版权年份至 2024 PR #1909
- @MariaSolOs (Maria José Solano): 诊断消息中 MarkupContent 支持的规范 PR #1905
- @oliviacrain (Olivia Crain): 移除 rnix-lsp 的服务器条目 PR #1902
对 monaco-editor
的贡献
- @jeremy-rifkin (Jeremy Rifkin): 修复 C++ 原始字符串字面量高亮显示的 bug PR #4436
对 node-pty
的贡献