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 内联聊天对话。
如果您想在线阅读这些发行说明,请访问 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+向上/向下
,在 macOS 上,它是 Cmd+向上/向下
。在此示例视频中,您可以看到活动项目在以下位置之间移动
- 命令面板中的
最近使用
和其他命令
分隔符 - 快速搜索中的文件路径分隔符之间
快速选择禁用的复选框项目
在此迭代中,我们更清楚地表明快速选择何时显示禁用的项目。这方面的一个例子可以在“管理受信任的扩展”快速选择中找到,可以为任何您登录的帐户访问该快速选择。
扩展更新改进
重启扩展
当扩展更新时,您现在可以重启扩展,而无需重新加载窗口。
注意: 当您连接到 WSL 或 SSH 或开发容器等远程服务器时,您仍然需要重新加载窗口才能更新扩展。
使用 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) 也会在工作台中打开“重构预览”面板。
差异编辑器暂存/还原选择按钮
差异编辑器现在为 暂存 和 还原 控件设置了单独的装订线。这些操作使您可以暂存或还原已更改的代码块。
如果您执行某些更改的文本选择,这些按钮可让您暂存或还原所选的更改(选择范围内的所有已更改字符)。
您可以通过将 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。一些扩展,例如 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 调试器 扩展程序现在让你更容易向我们的仓库报告问题!如果你使用报告问题命令 (workbench.action.openIssueReporter
) 提交问题,大部分繁重的工作已经完成,你只需提供一些额外的信息,以便我们的团队可以高效地分类你遇到的问题。
要使用 帮助: 报告问题 命令为 @vscode-python 或 @vscode-python-debugger 提交问题,请从扩展程序下拉菜单中分别选择 Python 或 Python 调试器。
GitHub Pull Requests
GitHub Pull Requests 扩展程序取得了更多进展,该扩展程序使你能够处理、创建和管理拉取请求和问题。新功能包括
- 过时的评论在“评论”视图中与当前评论的显示方式不同。
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
(⌘P (Windows, Linux Ctrl+P)),你可以快速选择或搜索要报告的已安装扩展程序。
某些扩展程序将开始转向使用这种新的问题报告流程,并且不再需要直接贡献到命令面板的自定义 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
扩展程序以及安装它的功能。
此功能在 Insiders 版本中通过 extensions.experimental.supportWorkspaceExtensions
提供预览。试用一下,并通过在 VS Code 仓库 中创建问题来告知我们你的反馈。
建议的 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 的贡献者。
问题跟踪
对我们的问题跟踪的贡献
- @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 不是函数”错误 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): 引入迷你地图节标题,类似于 Xcode PR #190759
- @futurist (James Yang): feat: 为 IPCServer 添加 ipcLogger 和 timeoutDelay PR #193896
- @gjsjohnmurray (John Murray): 使通道日志级别可从输出视图设置 PR #205159
- @harbin1053020115 (ermin.zem): 修复:如果不存在内置演练,则为首次启动选择第一个扩展程序演练。PR #207303
- @hickford (M Hickford): 排序行:如果未选择任何内容,则对所有行进行排序。PR #200325
- @hsfzxjy (谢景奕)
- 修复设置编辑器列表项溢出 PR #206681
- 在中间单击装订线时添加日志点 PR #206684
- @IncognitaDev (Luis Sousa): Feat: 向 CaseActions 添加 PascalCase 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): # 向内联完成句柄添加部分接受类型 PR #202668
- @mkasenberg: searchEditor:添加单次点击即可速览的选项 PR #204413
- @mroch (Marshall Roch): 修复“扩展程序 [object Object] 未知” PR #207764
- @NriotHrreion (NoahHrreion): 修复悬停小部件的意外位置 PR #205502
- @orgads (Orgad Shaneh)
- Tunnel:扩展端口映射查找也适用于查询字符串(版本 2) PR #204807
- Tunnel:重新添加端口映射的单元测试 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): 修复笔记本 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