2024 年 3 月 (版本 1.88)
更新 1.88.1:此更新解决了这些问题。
下载:Windows:x64 Arm64 | Mac:Universal 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 上的更新页面。内测版:想尽快试用新功能?您可以下载每晚的内测版构建,并在更新可用时立即试用最新功能。
辅助功能
语音录制声音
我们为语音录制添加了新的辅助功能信号音效
- 语音录制开始 - 可通过
accessibility.signals.voiceRecordingStarted
设置配置 - 语音录制结束 - 可通过
accessibility.signals.voiceRecordingStopped
设置配置
改进的 Diff 编辑器辅助功能
如果您正在使用屏幕阅读器,当 Diff 编辑器成为活动编辑器时,您现在会收到通知。您可以通过 accessibility.verbosity.diffEditorActive
设置禁用此行为。
我们还添加了有关Diff 编辑器:切换侧边的信息,这是一个对键盘用户有用的命令,已添加到辅助功能帮助对话框。
辅助功能信号现在可以在 Diff 编辑器的两侧工作。此前,它们仅在修改侧可用。
辅助视图聊天代码块命令
当您在辅助视图中检查聊天响应时,您现在可以使用聊天视图中可用的代码块命令和键盘快捷键。
其中包括聊天:插入到光标处、聊天:插入到终端和聊天:插入到新文件。
笔记本单元 Aria 标签更新
笔记本单元的 Aria 标签现在会更新,以指示单元是否正在执行或等待执行。
工作台
浮动窗口中的自定义编辑器支持
我们扩展了对在浮动窗口中打开自定义编辑器的支持,以及通常使用 webview API 的所有编辑器。这包括 Markdown 预览、浏览器预览和复杂的自定义编辑器,例如我们的十六进制编辑器。
注意:由于技术限制,在窗口之间移动基于 webview 的编辑器需要重新加载该编辑器的内容。然后由编辑器负责恢复您之前累积的状态。在某些情况下,您的状态可能会被重置,就像您首次打开编辑器一样。
打开的编辑器的自定义标签
您现在可以自定义编辑器选项卡和“打开的编辑器”视图的显示标签。此功能有助于区分同名文件对应的编辑器。
您可以通过在 workbench.editor.customLabels.patterns
设置下添加条目来根据您的偏好调整这些标签。每个条目都应包含一个匹配文件路径的全局模式(glob pattern)和一个定义编辑器选项卡新名称的模板。此自定义仅在文件路径匹配指定模式时应用。模式是否匹配取决于它是否被定义为相对或绝对文件路径模式。
模板可以包含变量,例如 ${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) 也会在工作台中打开“重构预览”面板。
Diff 编辑器暂存/还原选择按钮
Diff 编辑器现在有一个单独的边槽,用于暂存和还原控件。这些操作使您能够暂存或还原已更改的代码块。
如果您选择了一些更改的文本,这些按钮可让您暂存或还原所选更改(选择范围内所有已更改的字符)。
您可以通过将 diffEditor.renderGutterMenu
设置为 false
来隐藏 Diff 编辑器边槽。
重命名建议行为
我们改进了重命名建议的使用流程,使其与快速选择相匹配。当您从列表中选择一个重命名建议时,输入值现在会相应更新,使您可以进一步修改建议。
源代码管理
传入更改的文件装饰
为帮助避免从远程合并/变基更改时可能发生的冲突,我们现在会为所有具有传入更改且已获取但尚未合并/变基的文件显示文件装饰。要使用此功能,您应同时启用 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
设置来配置此行为。
Notebook
笔记本输出中的键盘快捷键
我们现在在笔记本输出中支持一些标准键盘快捷键:
- 输出可以使用键盘通过 Ctrl+A 和 Ctrl+C 键盘绑定分别进行选择和复制。
- 可滚动的输出可以使用键盘通过 Up 和 Down 键盘绑定分别进行滚动。
- 可滚动输出的顶部和底部滚动可以使用键盘通过 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 或远程隧道连接的远程机器,或者 适用于 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)
我们重新定位了重跑和反馈控件,并使查看差异的切换控件与“接受”和“丢弃”按钮并列显示,更加突出。
主题: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 This
时的范围选择
当您在活动编辑器中未使用任何选择而使用 /explain
,并且存在多个相关范围时,我们增加了提示支持,以澄清要解释哪个符号或块范围。
此行为目前是可选加入的,通过 github.copilot.chat.scopeSelection
设置进行控制。
Python
改进的 Flask 和 Django 调试配置选择
为 Flask 和 Django 应用创建启动配置变得更加容易!在为您的 Web 应用创建 launch.json
时,已改进了检测工作区中可能的启动文件。
对于 Django,Python 调试器扩展会在工作区的根目录或下一级子目录中查找 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 调试器扩展现在使您可以更轻松地向我们的仓库报告问题!如果您使用报告问题命令 (workbench.action.openIssueReporter
) 提交问题,大部分繁重的工作已经完成,您只需提供一些额外信息,以便我们的团队能够高效地分类您遇到的问题。
要使用帮助:报告问题命令为 @vscode-python 或 @vscode-python-debugger 提交问题,请分别从扩展下拉菜单中选择 Python 或 Python 调试器。
GitHub 拉取请求
GitHub Pull Requests 扩展取得了更多进展,它使您能够处理、创建和管理拉取请求和问题。新功能包括:
- 评论视图中,过时的评论与当前评论显示方式不同。
githubPullRequests.createDefaultBaseBranch
的新值auto
使用上游的默认分支作为分支仓库的基础分支。- 评论视图中的评论线程具有内联操作(解决/取消解决,以及针对过时评论的“与 HEAD 比较评论”)和上下文菜单操作。
查看扩展 0.86.0 版本的更新日志,了解其他亮点。
Jupyter
单元格执行分析改进
借助最新的 Pylance 预发布版,我们对 Jupyter 单元格进行了更好的依赖分析。它现在能够理解模块导入,当您有一个单元格导入了在前一个单元格中定义的模块时,此功能尤其有用。
要启用此功能,请在 VS Code Insiders 中安装最新的 Pylance 预发布版,并启用 jupyter.executionAnalysis.enabled
和 notebook.consolidatedRunButton
设置。
扩展创作
使用问题报告器命令报告扩展错误
在上次迭代中,我们最终确定了一种方式,允许扩展在通过 VS Code 的问题报告器提交到 GitHub 时贡献额外数据或要填写的模板。扩展可以贡献一个命令,该命令可以通过帮助:报告问题... 命令访问。选择其扩展将运行其贡献的命令。请查看我们的问题报告文档/发布说明,了解此功能如何与您的扩展配合使用!
此外,所有已安装的扩展都可以通过快速打开(Quick Open)快速报告问题。通过在快速打开 (⌘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
扩展以及安装它的能力。
此功能在 Insiders 版本中通过 extensions.experimental.supportWorkspaceExtensions
开放预览。请尝试使用并向我们反馈,您可以在 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。
认证 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 Opening a file on a different path but with the same name in the simple file picker fails
感谢
最后但同样重要的是,向 VS Code 的贡献者们致以衷心的感谢。
问题跟踪
对我们问题跟踪的贡献
- @gjsjohnmurray (John Murray)
- @IllusionMH (Andrii Dieiev)
- @RedCMD (RedCMD)
- @starball5 (starball)
- @the-coder-o (Abdul basit)
- @ArturoDent (ArturoDent)
拉取请求
对 vscode
的贡献
- @333fred (Fred Silberberg): Do not trim whitespace when part of strings or regexes PR #198164
- @89netraM (Mårten Åsberg): Render final line number for interval setting PR #207227
- @a-stewart (Anthony Stewart)
- Stop the cursor from jumping when changing prefix in QuickAccess - v2 PR #204702
- Export ILocalizedString in nls.mock.ts PR #206449
- @akbyrd (Adam Byrd)
- Implement separate colors for primary and secondary cursors when multiple cursors are present PR #181991
- Change editor.action.focusNextCursor to reveal the primary cursor instead of all cursors PR #182148
- @AndreasBackx (Andreas Backx): Fix smooth scrolling Linux Wayland. PR #205122
- @andrewbranch (Andrew Branch): [typescript-language-features] Fix autoImportFileExcludePatterns format to work on Windows PR #202762
- @andyscho (Andy Schoenberger): Only one subscriber for kernels for onDidChangeSelectedNotebooks PR #204417
- @BABA983 (BABA): Better testing side bar retried color PR #207949
- @BrandonXLF (Brandon Fowler): Override CSS content for terminal tab image icons PR #207220
- @BrookMaoDev (Brook Mao): Improved description for editor.useTabStops setting PR #206552
- @btwiuse: cli: add --server-base-path flag to
code serve-web
command PR #207932 - @BusinessDuck (Dmitriy Yurov): Fix 'e.getModifierState is not a function' error for browser auto filled form events PR #206883
- @cchanche (Clément Chanchevrier): Resize terminal direction PR #205015
- @CGNonofr (Loïc Mangeonjean)
- Fix keyboard layout detection PR #205193
- Fix fullscreen container dimension detection when not directly on body PR #205884
- @cpendery (Chapman Pendery)
- fix: terminal suggestions to sort by fuzzy score PR #208486
- fix: don't show terminal suggestions when keybindings are sent through to shell PR #208523
- fix: suggest widget persisting on completion acceptance PR #208524
- @deyihu (hu de yi): editor paste event result return ClipboardEvent PR #192732
- @dgileadi (David Gileadi): Introduce minimap section headers, a la Xcode PR #190759
- @futurist (James Yang): feat: add ipcLogger and timeoutDelay for IPCServer PR #193896
- @gjsjohnmurray (John Murray): Make channel log level settable from output view PR #205159
- @harbin1053020115 (ermin.zem): fix: Select first extension walkthrough for first launch if no built-in walkthroughs present. PR #207303
- @hickford (M Hickford): Sort lines: sort all lines if nothing selected. PR #200325
- @hsfzxjy (Xie Jingyi)
- Fix setting editor list item overflow PR #206681
- Add log point on middle clicking gutter PR #206684
- @IncognitaDev (Luis Sousa): Feat: Add PascalCase to CaseActions PR #206259
- @its-miroma (Miroma): Change default YAML extension PR #206447
- @jeanp413 (Jean Pierre): Fixes breadcrumbs widget does not get resized properly PR #200591
- @jeremy-rifkin (Jeremy Rifkin): Expand monarch functionality to allow state access within rules PR #183463
- @jhasse (Jan Niklas Hasse): Use indentSize instead of tabSize for LineCommentCommand PR #193811
- @Krzysztof-Cieslak (Krzysztof Cieślak)
- Fix off-by-one error in rendering removals in inline edits PR #205890
- Inline edit - make sure we cancel in-progress request on blur PR #206430
- Inline Edit - make sure we finalize accepting before requesting new edit PR #206525
- @lusingander (Kyosuke Fujimoto): Fix broken description of
editor.cursorSurroundingLinesStyle
setting PR #201482 - @mahmoudsalah1993 (Mahmoud Salah): for diff editors, resolve the modified editor to allow run tests in c… PR #206026
- @marrej (Marcus Revaj): # Add partial accept kind to inline completion handle PR #202668
- @mkasenberg: searchEditor: Add option to peek with a single click PR #204413
- @mroch (Marshall Roch): fix "Extension [object Object] is not known" PR #207764
- @NriotHrreion (NoahHrreion): Fix the unexpected position of hover widgets PR #205502
- @orgads (Orgad Shaneh)
- Tunnel: Extend port mapping lookup also for querystring (take 2) PR #204807
- Tunnel: Re-add unit tests for port mapping PR #207249
- @PmcFizz (Fizz): Update IActionDescriptor.precondition desc PR #176124
- @raphaelgpalma (Raphael Palma): Fix grammatical error: 'But allow them if the are made from inside an…' PR #207584
- @rehmsen (Ole): Log
resource
telemetry also for side-by-side views on browsers. PR #208196 - @russelldavis (Russell Davis): Fix decreaseIndentPattern for javascript and typescript PR #201425
- @samdenty (Sam Denty): feat(web/lifecycleService): correct startupKind PR #206563
- @Sidebail (VLADIMIR VATSURIN): Fix file relative path link PR #181475
- @SimonSiefke (Simon Siefke): fix: memory leak in notebook baseCellViewModel PR #205499
- @solimant: Honor GitHub brand name casing PR #208503
- @thegecko (Rob Moran): Update extensionPaths when web extension host started PR #193849
- @vinistock (Vinicius Stock): Fix accidental dedent for
in
andwhen
dedent in Ruby comments PR #206132 - @yamachu (Yusuke Yamada): Fixed to show files in deepest directory in search results PR #206609
- @Yesterday17 (Yesterday17): Dispatch GestureEvent in node depth order PR #200612
- @yiliang114 (易良): Fix Copy/Cut command not working in webview PR #206529
- @yutotnh (yutotnh): Add support for recognizing word locales in word operations (#_50045) PR #203605
对 vscode-css-languageservice
的贡献
- @balaji-sivasakthi (Balaji Sivasakthi): feat: support hover tooltip for scss PR #367
对 vscode-eslint
的贡献
- @JoshuaKGoldberg (Josh Goldberg ✨): feat: support json, json5, jsonc in eslint.probe setting PR #1787
- @remcohaszing (Remco Haszing)
对 vscode-extension-samples
的贡献
- @juliankasimir (Julian Kasimir): feat(lang): replace German with English in showQuickPick function PR #983
对 vscode-hexeditor
的贡献
对 vscode-js-debug
的贡献
- @Beanyy: Fix formatting of number 0 in remote object when description is not set PR #1968
- @mdh1418 (Mitchell Hwang): [CDP] Send telemetry for DotnetDebugger error event PR #1961
- @relief-melone (Relief.Melone): added proxy support for build PR #1965
对 vscode-json-languageservice
的贡献
- @denisw (Denis Washington): Fix sorting error in case of nested trailing comma PR #223
对 vscode-pull-request-github
的贡献
- @ipcjs (ipcjs): fix: make
review.openLocalFile
support triggering from the keyboard. PR #5840 - @mohamedamara1 (Mohamed Amara): fixed ID of IssueOverviewPanel PR #5822
Contributions to vscode-pylint
- @MGasiewski: Add logic to replace tilde with home environment PR #524
对 vscode-python-debugger
的贡献
- @bersbersbers: Update
launch.json
schema PR #243 - @StephanTLavavej (Stephan T. Lavavej): Fix typos PR #217
对 debug-adapter-protocol
的贡献
- @andyw8 (Andy Waite): Update adapters list for Ruby LSP PR #471
- @svaante (Daniel Pettersson): Add Emacs dape package to Implementations tools section PR #469
对 inno-updater
的贡献
- @ChayimFriedman2 (Chayim Refael Friedman): Remove unneeded
unsafe impl Send
PR #25
对 language-server-protocol
的贡献
- @asukaminato0721 (Asuka Minato)
- @iliaamiri (Ilia Abedianamiri): A small typo in the summary paragraph PR #1903
- @lukaskesch (Lukas Kesch): Updating copyright year to 2024 in footer.html PR #1909
- @MariaSolOs (Maria José Solano): Specification for MarkupContent support in diagnostic messages PR #1905
- @oliviacrain (Olivia Crain): Remove server entry for rnix-lsp PR #1902
对 monaco-editor
的贡献
- @jeremy-rifkin (Jeremy Rifkin): Fix bug with highlighting of C++ raw string literals PR #4436
Contributions to node-pty