2024 年 3 月(版本 1.88)
更新 1.88.1:此更新解决了以下 问题。
下载:Windows:x64 Arm64 | Mac:通用 Intel silicon | Linux:deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 2024 年 3 月版。此版本包含许多更新,我们希望您会喜欢,其中一些主要亮点包括
- 应用自定义编辑器标签 - 区分具有相同文件名的编辑器。
- 锁定滚动 - 并排比较编辑器并同步滚动。
- 扩展更新改进 - 无需重新加载即可重启扩展,并在 VS Code 发布时更新扩展。
- 测试覆盖率 API - VS Code 中的原生代码覆盖率支持。
- 迷你地图中的折叠标记 - 从迷你地图轻松识别和导航到代码段。
- 快速搜索改进 - 固定文件路径分隔符和分隔符按钮。
- 笔记本在节中运行单元格 - 快速运行笔记本节中的所有单元格。
- Copilot 改进 - 改进的内联聊天 UI、提交消息和使用的引用。
- Python 自动检测改进 - 检测 Flask 和 Django 的启动文件,发现 Hatch 环境。
- 预览:终端内联聊天 - 直接从终端启动 Copilot 内联聊天对话。
如果您想在线阅读这些发行说明,请访问 Updates 上的 code.visualstudio.com。Insiders: 想尽快试用新功能吗?您可以下载每晚构建的 Insiders 版本,并在最新更新可用时立即试用。
辅助功能
语音录制声音
我们为语音录制添加了新的辅助功能信号声音
- 语音录制开始 - 使用
accessibility.signals.voiceRecordingStarted
设置进行配置 - 语音录制结束 - 使用
accessibility.signals.voiceRecordingStopped
设置进行配置
改进的差异编辑器辅助功能
如果您正在使用屏幕阅读器,当差异编辑器变为活动编辑器时,您现在会收到通知。您可以使用 accessibility.verbosity.diffEditorActive
设置禁用此行为。
我们还在 辅助功能帮助对话框 中添加了有关 差异编辑器:切换侧(对键盘用户有用的命令)的信息。
辅助功能信号 现在在差异编辑器的两侧都有效。以前,它们仅在修改侧可用。
可访问视图聊天代码块命令
当您在可访问视图中检查聊天回复时,您现在可以使用聊天视图中可用的代码块命令和快捷键。
这些包括 聊天:在光标处插入、聊天:插入到终端 和 聊天:插入到新文件。
笔记本单元格 aria 标签更新
笔记本单元格的 Aria 标签现在会更新以指示单元格当前是否正在执行或等待执行。
工作台
浮动窗口中的自定义编辑器支持
我们将编辑器打开到 浮动窗口 的支持扩展到自定义编辑器,以及通常所有使用 webview API 的编辑器。这包括 Markdown 预览、浏览器预览和复杂的自定义编辑器,例如我们的 十六进制编辑器。
注意: 由于技术限制,在窗口之间移动基于 webview 的编辑器需要重新加载该编辑器的内容。然后,编辑器负责恢复您之前累积的状态。在某些情况下,您的状态可能会重置,就像您第一次打开编辑器一样。
打开编辑器的自定义标签
我们现在允许您自定义编辑器选项卡和“打开的编辑器”视图的显示标签。此功能对于区分具有相同文件名的文件的编辑器非常有用。
您可以通过在 workbench.editor.customLabels.patterns
设置下添加条目,根据您的偏好定制这些标签。每个条目应包含一个 glob 模式,该模式与文件路径匹配,以及一个定义编辑器选项卡新名称的模板。此自定义仅在文件的路径与指定的模式匹配时适用。模式是否匹配取决于它是否定义为相对或绝对文件路径模式。
模板可以包含变量,例如 ${filename}
、${extname}
、${dirname}
和 ${dirname(N)}
,这些变量会动态替换为文件路径中的值。
要启用或禁用这些自定义标签,请使用 workbench.editor.customLabels.enabled
设置。这使您可以随时切换到原始编辑器名称,而无需删除您的自定义模式。
锁定滚动
您现在可以使用 视图:切换编辑器之间的锁定滚动 命令,跨所有可见编辑器同步滚动。这意味着当您在一个编辑器中滚动时,所有其他编辑器都会滚动相同的量,从而保持所有内容对齐。如果您需要并排比较文件,此功能非常有用。
如果您想要更多控制来启用和禁用锁定滚动,您可以选择仅在按住特定快捷键时激活滚动同步。为 workbench.action.holdLockedScrolling
命令设置一个键盘快捷键,您就可以在需要时临时锁定跨编辑器的滚动。
底部的活动栏
以前,我们引入了将活动栏移动到侧边栏顶部的选项。我们现在允许您将活动栏也移动到底部。为此,请将 workbench.activityBar.location
设置更改为 bottom
。
我们还改进了活动栏位于顶部时的外观,以确保它与界面的其余部分完美契合。
搜索编辑器单次点击行为
您现在可以配置 search.searchEditor.singleClickBehaviour
设置,以确定当您在搜索编辑器条目上单击一次时会发生什么。目前,该设置仅支持打开“速览定义”。
快速搜索改进
固定文件路径
在快速搜索中,我们使文件名分隔符固定,以便更清楚地了解搜索结果与哪个文件关联。当文件中搜索词出现多次时,这可能很有用。
文件路径分隔符按钮
当您将鼠标悬停在特定文件的文件结果上,或者如果您向下箭头到结果时,按钮(例如,用于打开文件)也会出现在文件路径分隔符上。
快速选择分隔符导航快捷键
我们收到了反馈,希望能够快速选择导航分隔符。在此迭代中,我们添加了一个快捷键来执行此操作。在 Windows 和 Linux 上,您可以使用 Alt+Up/Down
,而在 macOS 上,它是 Cmd+Up/Down
。在此示例视频中,您可以看到活动项在以下位置之间移动
- 命令面板中的
最近使用
和其他命令
分隔符 - 快速搜索中的文件路径分隔符之间
快速选择禁用的复选框项
在此迭代中,我们更清楚地表明何时快速选择显示禁用的项目。这方面的一个示例可以在“管理受信任的扩展”快速选择中找到,可以为任何您登录的帐户访问该快速选择。
扩展更新改进
重启扩展
当扩展更新时,您现在可以重启扩展,而无需重新加载窗口。
注意: 当您连接到远程服务器(如 WSL 或 SSH 或开发容器)时,您仍然需要重新加载窗口才能更新扩展。
使用 VS Code 更新更新扩展
当您启用 扩展自动更新
时,VS Code 现在会更新与可用于更新的较新 VS Code 版本兼容的扩展。如果较新版本的扩展与当前版本的 VS Code 不兼容,则只有在您更新 VS Code 后才会启用较新版本的扩展。
跳转到评论回复
评论视图中评论线程的上下文菜单现在包含“回复”操作(当评论线程允许回复时)。这使您可以快速跳转到回复输入框并开始键入回复。
编辑器
迷你地图节标题
迷你地图现在可以识别和渲染由折叠标记定义的节,例如 TypeScript 中的 //#region
或使用 MARK:
的注释。这使您可以快速扫描和导航大型文件。
重构预览快捷键
我们更新了用于预览重命名符号重构 (F2) 编辑的快捷键,以保持与其他上下文(例如代码操作)中预览重构的一致性。您现在可以使用 ⌘Enter (Windows, Linux Ctrl+Enter) 预览编辑(以前为 Shift + Enter
)。
当鼠标悬停在代码操作上时,⌘Enter (Windows, Linux Ctrl+Enter) 也会在工作台中打开“重构预览”面板。
差异编辑器暂存/还原选择按钮
差异编辑器现在为 暂存 和 还原 控件设置了单独的装订线。这些操作使您可以暂存或还原更改的代码块。
如果您执行某些更改的文本选择,这些按钮可让您暂存或还原选定的更改(选择范围内的所有更改字符)。
您可以通过将 diffEditor.renderGutterMenu
设置为 false
来隐藏差异编辑器装订线。
重命名建议行为
我们改进了使用重命名建议的流程,使其与快速选择的流程相匹配。当您从列表中选择重命名建议时,输入值现在会相应更新,这使您可以进一步修改建议。
源代码管理
传入更改文件装饰
为了帮助避免在合并/变基来自远程的更改时可能发生的冲突,我们现在为所有具有传入更改且已获取但尚未合并/变基的文件显示文件装饰。要从此功能中受益,您应该同时启用 git.autofetch
和 git.decorations.enabled
设置。
主题:GitHub Sharp(在 vscode.dev 上预览)
终端
调试终端中的 Shell 集成
为了向用户和扩展提供增强的功能,现在在调试时启动的终端中自动启用 Shell 集成。
运行最近的命令改进
由 Shell 集成驱动的 运行最近的命令 (⌃⌥R (Windows, Linux Ctrl+Alt+R)) 现在滚动到并显示命令上次运行的时间(如果可能)。运行命令或取消快速选择会将终端返回到之前的状态。
主题:Sapphire(在 vscode.dev 上预览)
打开检测到的链接改进
打开检测到的链接 命令 (⇧⌘G (Windows, Linux Ctrl+Shift+G)) 现在在编辑器中预览链接结果,并在终端中突出显示链接源。
此外,重复链接现在已从列表中过滤掉,并且所有链接都以一致的格式呈现。
单词链接的其他上下文
单词链接 由 terminal.integrated.wordSeparators
设置定义,并且在找不到文件/文件夹/URI 时作为后备。激活后,这些链接现在包含额外的周围上下文,以添加搜索的行和列信息。
请注意,在屏幕截图中,选择了链接 terminalLinkParsing
,但结果搜索还包括链接后面的行号。
新的链接格式
即使路径包含空格,现在也可以在终端中检测到以下链接格式
FILE path:line:column
终端粘性滚动透明度支持
终端中的粘性滚动 现在支持透明度。主题可以通过将 terminalStickyScroll.background
主题颜色配置为透明值,或在您的 settings.json
中指定覆盖来使用此功能。例如
{
"workbench.colorCustomizations": {
"[Default Dark Modern]": {
"terminalStickyScroll.background": "#181818c0"
}
}
}
这将产生透明的粘性滚动背景,允许后面的文本透出来
测试
测试覆盖率
在此迭代中,我们完成了我们的测试覆盖率 API,为 VS Code 带来了原生覆盖率支持。如果您的测试系统支持,您可以使用新的 运行并覆盖 按钮来获取覆盖率
同样,还有用于运行并覆盖的新快捷键,例如 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
设置配置此行为。
笔记本
笔记本输出中的键盘快捷键
我们现在在笔记本输出中支持一些标准键盘快捷键
- 可以使用键盘分别使用 Ctrl+A 和 Ctrl+C 快捷键选择和复制输出。
- 可以使用键盘分别使用 向上 和 向下 快捷键滚动可滚动的输出。
- 可以使用键盘分别使用 Ctrl+Home 和 Ctrl+End 快捷键滚动到可滚动输出的顶部和底部(macOS 上为 Cmd+Up 和 Cmd+Down)。
- 可以使用键盘分别使用 Ctrl+Shift+Up 和 Ctrl+Shift+End 快捷键选择从当前选择点到输出顶部或底部的输出(macOS 上为 Shift+Cmd+Up 和 Shift+Cmd+Down)。
单元格错误诊断
扩展现在可以为失败的单元格提供错误详细信息,以便错误诊断显示在单元格中。当焦点位于单元格容器上时,notebook.cell.openFailureActions
(⌘. (Windows, Linux Ctrl+.)) 跳转到该错误的快速操作菜单。仅当语言模型可用以提供快速操作时,才会显示诊断。
在节中运行单元格
为了更轻松地运行笔记本中相关的单元格,您现在可以使用 在节中运行单元格 操作来运行由 Markdown 节标题分组在一起的单元格。此操作在笔记本大纲视图和粘性滚动元素上可用。
在粘性滚动元素中,右键单击您选择的标题,并通过上下文菜单中的操作运行该节。在大纲视图中,选择悬停或选择时出现的工具栏图标,然后通过显示的操作运行单个单元格或单元格节。
大纲视图中的筛选器支持
您现在可以在笔记本大纲视图中使用筛选器,使您可以控制 Markdown 标题、代码单元格和代码单元格符号的包含。筛选器对应于以下设置
notebook.outline.showMarkdownHeadersOnly
notebook.outline.showCodeCells
notebook.outline.showCodeCellSymbols
关闭时提示保存交互窗口
通过启用 interactiveWindow.promptToSaveOnClose
设置,当交互窗口关闭时,系统会提示您保存交互窗口中的内容,以确保您不会丢失任何工作。当前唯一支持的文件格式是 .ipynb
。
远程开发
远程开发扩展 允许您使用 开发容器、通过 SSH 或 远程隧道 的远程计算机或 Windows Subsystem for Linux (WSL) 作为功能齐全的开发环境。
亮点包括
- 针对具有扩展支持的发行版的备用服务器下载
- 基于 URI 查询字符串的端口转发
- 开发容器扩展自动启动 Docker
- 通过组策略限制对开发隧道和端口转发的访问
您可以在 远程开发发行说明 中了解有关这些功能的更多信息。
扩展贡献
VS Code 语音
延迟激活
VS Code 语音 扩展现在仅在 VS Code 中请求语音转文本服务时才激活。这确保了扩展不会对扩展主机启动时间产生负面影响。
使用显示语言作为默认语音语言
默认情况下,VS Code 语音扩展现在使用 VS Code 的显示语言作为语音语言,并在支持该语言的情况下选择相应的模型。
对于 accessibility.voice.speechLanguage
设置,auto
是新的默认值。
GitHub Copilot
内联聊天改进
内联聊天现在以浮动控件的形式启动,使其更轻巧。在第一个请求之后,控件会展开以占用更多空间。我们还调整了渲染,使其与其他聊天体验(如聊天视图或快速聊天)更加一致。
主题:GitHub Light Colorblind (Beta)
我们重新定位了重新运行和反馈控件,并使用于查看差异的切换控件与“接受”和“放弃”按钮并排更突出。
主题:GitHub Light Colorblind (Beta)
笔记本内核状态作为上下文
当您在笔记本中时,内核状态(例如,变量和可用包)现在会自动包含在内联聊天中作为上下文。这使 Copilot 可以使用笔记本的当前状态来提供更相关的完成。
主题: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+down, Tab, Tab,在 macOS 上为 Cmd+down, Tab, Tab)。
身份验证流程的清晰度
围绕身份验证的清晰度非常重要。我们希望清楚地说明我们如何进行身份验证以及我们要求什么。如果您在 VS Code 中打开一个私有存储库,而我们没有针对此场景的正确身份验证,我们将显示一个身份验证对话框。该对话框描述了为什么需要身份验证,以及一个 了解更多 按钮,用于了解有关这些要求的更多信息。
了解更多 按钮会将您带到我们关于 身份验证要求 的文档。
变量引用
聊天回复中的 使用的引用 部分提供了有关使用的上下文的信息。以前,此部分仅显示隐式拉入的上下文。现在,它还显示您在聊天提示中显式提及的变量,例如 #file
或 #editor
。如果“使用的引用”中缺少变量,则可能表明它被忽略了,因为它对于语言模型的上下文窗口来说太大了。
辅助聊天提交操作
在聊天视图中,聊天提交按钮现在有一个下拉菜单,可以轻松访问更多操作。
- 发送到 @workspace 将您的查询提交到
@workspace
聊天参与者,这对于有关您的工作区内容的问题很有用 - 发送到新聊天 启动一个新的空聊天,然后提交查询
使用 Copilot: 解释此内容
时的范围选择
当您在活动编辑器中使用 /explain
而未进行选择,并且有多个感兴趣的范围时,我们添加了提示以澄清要解释哪个符号或块范围的支持。
此行为目前是选择加入的,位于 github.copilot.chat.scopeSelection
设置之后。
Python
改进了 Flask 和 Django 的调试配置选择
为 Flask 和 Django 应用程序创建启动配置变得更加容易!在为您的 Web 应用程序创建 launch.json
时,已改进检测工作区中可能的启动文件。
对于 Django,Python 调试器扩展在根目录或工作区中较低一级的子目录中查找 manage.py
或 app.py
文件。对于 Flask,该扩展查找包含 Flask 应用程序声明的 wsgi.py
、app.py
或 init.py
文件(例如,app = Flask()
)。
如果在项目中找不到这些文件,则下拉列表会为相应的项目类型显示 默认 选项,即使该文件可能不存在。
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 Pull Requests
GitHub Pull Requests 扩展取得了更多进展,该扩展使您能够处理、创建和管理 pull request 和 issue。新功能包括
- 过时的评论在“评论”视图中与当前的评论以不同的方式显示。
githubPullRequests.createDefaultBaseBranch
的新auto
值将上游的默认分支用作 fork 仓库的基础分支。- “评论”视图中的评论线程具有内联操作(解决/取消解决以及针对过时评论的“对比评论与 HEAD”)和上下文菜单操作。
查看扩展 0.86.0 版本的更新日志,了解其他亮点。
Jupyter
单元格执行分析改进
借助最新的 Pylance 预发布版,我们对 Jupyter 单元格进行了更好的依赖关系分析。它现在可以理解模块导入,这在您的单元格导入前一个单元格中定义的模块时特别有用。
要启用此功能,请在 VS Code Insiders 中安装最新的 Pylance 预发布版,并启用 jupyter.executionAnalysis.enabled
和 notebook.consolidatedRunButton
设置。
扩展创作
使用 Issue Reporter 命令进行扩展错误报告
在上一个迭代中,我们最终确定了一种供扩展在通过 VS Code 的 Issue Reporter 提交到 GitHub 时贡献额外数据或模板的方式。扩展可以贡献一个命令,该命令可以通过 帮助: 报告问题... 命令访问。选择他们的扩展会运行他们贡献的命令。请查看我们的 issue 报告文档/发行说明,以获取有关如何将此功能与您的扩展配合使用的更多信息!
此外,可以通过“快速打开”快速报告所有已安装的扩展。通过在“快速打开”中键入 issue
(⌘P (Windows, Linux Ctrl+P)),您可以快速选择或搜索要报告的已安装扩展。
某些扩展将开始转向使用这种新的 issue 报告流程,并且不再需要直接贡献到命令面板中的自定义 Report Issue...
命令。
预览功能
终端中重叠字形的重新缩放
新的设置 terminal.integrated.rescaleOverlappingGlyphs
可用,它可以重新缩放与后续单元格重叠的字形。这旨在涵盖二义性宽度字符,这些字符可能具有字体字形,这些字形与后备 pty/unicode 版本认为的宽度不匹配。例如,在大多数字体中,罗马数字 unicode 字符 (U+2160+
) 通常占用多个单元格,因此启用此设置后,它们会在水平方向上重新缩放。
不重新缩放
重新缩放后
重新缩放发生的规则仍在调整中,我们正在考虑在规则稳定后默认启用此功能。如果您尝试使用此功能,并看到不应重新缩放的字符被重新缩放,请创建 issue。
本地工作区扩展
我们很高兴推出这项新的预览功能,该功能允许您直接在工作区中打包扩展。此功能旨在满足您的特定工作区需求,并提供更量身定制的开发体验。
要使用此功能,您需要在工作区内的 .vscode/extensions
文件夹中打包您的扩展。然后,VS Code 会在“扩展”视图的 工作区推荐 部分中显示此扩展,用户可以从中安装它。VS Code 仅为该工作区安装此扩展。它还要求用户在安装和运行此扩展之前信任该工作区。
例如,考虑 VS Code 仓库 中的 vscode-selfhost-test-provider
扩展。此扩展插入测试功能,使贡献者能够直接在工作区中查看和运行测试。以下屏幕截图显示了“扩展”视图的“工作区推荐”部分中的 vscode-selfhost-test-provider
扩展以及安装它的功能。
此功能在 Insiders 版本中通过 extensions.experimental.supportWorkspaceExtensions
提供预览。试用它,并通过在 VS Code 仓库 中创建 issue 来告知我们您的反馈。
提议的 API
终端 shell 集成 API
一个新的提议的 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。
身份验证 API 的“了解更多”属性
在此迭代中,我们添加了一个新的提议的 API,使您能够在 AuthenticationForceNewSessionOptions
中指定 learnMore
属性。其想法是,如果您使用选项中的 forceNewSession
属性调用 getSession
,则可以包含一个 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 的贡献者。
Issue 跟踪
对我们的 issue 跟踪的贡献
- @gjsjohnmurray (John Murray)
- @IllusionMH (Andrii Dieiev)
- @RedCMD (RedCMD)
- @starball5 (starball)
- @the-coder-o (Abdul basit)
- @ArturoDent (ArturoDent)
Pull requests
对 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)
- 修复: 终端建议按模糊分数排序 PR #208486
- 修复: 当键绑定被发送到 shell 时,不显示终端建议 PR #208523
- 修复: 建议小部件在完成接受时持续存在 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): 修复: 如果没有内置 walkthrough,则为首次启动选择第一个扩展 walkthrough。 PR #207303
- @hickford (M Hickford): 排序行: 如果未选择任何内容,则对所有行进行排序。 PR #200325
- @hsfzxjy (Xie Jingyi)
- 修复设置编辑器列表项溢出 PR #206681
- 在中间单击装订线时添加日志点 PR #206684
- @IncognitaDev (Luis Sousa): Feat: 将 PascalCase 添加到 CaseActions PR #206259
- @its-miroma (Miroma): 更改默认 YAML 扩展名 PR #206447
- @jeanp413 (Jean Pierre): 修复了面包屑导航小部件无法正确调整大小的问题 PR #200591
- @jeremy-rifkin (Jeremy Rifkin): 扩展 monarch 功能以允许在规则内访问状态 PR #183463
- @jhasse (Jan Niklas Hasse): 将 indentSize 而不是 tabSize 用于 LineCommentCommand PR #193811
- @Krzysztof-Cieslak (Krzysztof Cieślak)
- 修复内联编辑中渲染删除时的一位错误 PR #205890
- 内联编辑 - 确保在模糊时取消正在进行的请求 PR #206430
- 内联编辑 - 确保在请求新的编辑之前完成接受 PR #206525
- @lusingander (Kyosuke Fujimoto): 修复
editor.cursorSurroundingLinesStyle
设置的错误描述 PR #201482 - @mahmoudsalah1993 (Mahmoud Salah): 对于差异编辑器,解析修改后的编辑器以允许在 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)
- 隧道: 将端口映射查找范围扩展到查询字符串(take 2) PR #204807
- 隧道: 重新添加端口映射的单元测试 PR #207249
- @PmcFizz (Fizz): 更新 IActionDescriptor.precondition desc 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): 修复: 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: 添加逻辑以将波浪号替换为主目录环境 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++ 原始字符串文字突出显示中的错误 PR #4436
对 node-pty
的贡献