2022 年 8 月(版本 1.71)
更新 1.71.1:此更新解决了此安全问题。
更新 1.71.2:此更新解决了这些问题。
下载:Windows:x64 Arm64 | Mac:通用 Intel 硅 | Linux:deb rpm tarball Arm snap
欢迎使用 Visual Studio Code 2022 年 8 月版本。8 月是 VS Code 许多工程师休假的时候,但此版本中仍然有很多更新,我们希望您会喜欢。
- 合并编辑器改进 - 更容易在文本编辑器和合并编辑器之间转换。
- 扩展的编解码器支持 - 为了帮助在笔记本和 Webview 中显示嵌入式音频和视频。
- 文件重命名选择 - 按 F2 键可选择文件名、完整名称或文件扩展名。
- 新的代码操作 UI - 快速找到您需要的代码操作。
- 终端更新 - 用于 fish 和 Git Bash 的 Shell 集成,新的平滑滚动。
- Jupyter 笔记本图像粘贴 - 在笔记本 Markdown 单元格中粘贴和预览图像文件。
- TypeScript 直播 - 在 YouTube 上观看 TS“速成课程”或“技巧和窍门”。
- 实时预览扩展 - 实时预览现在支持多根 Web 项目。
- Markdown 语言服务器博客文章 - 了解 Markdown 支持如何迁移到语言服务器。
如果您想在线阅读这些发行说明,请访问 code.visualstudio.com 上的更新。
Insiders:想尽快尝试新功能吗?您可以下载每日构建的Insiders 版本,并在最新更新可用后立即试用。
工作台
合并编辑器改进
从存在冲突的文件中打开合并编辑器
现在,存在冲突的文件会自动显示一个在合并编辑器中打开按钮,以便在文本编辑器和合并编辑器之间转换。
打开时合并编辑器文件未修改
VS Code 不再在合并编辑器中打开结果文件时修改该文件(冲突区域被替换为基准)。相反,冲突标记保留在文件中,但在结果视图中隐藏。可以使用复选框将冲突标记替换为任一侧、两侧的组合,或者通过取消选中它们,替换为基准。
恢复旧的冲突装饰器
旧的内联冲突装饰器不再被禁用,因此可以一起使用合并编辑器和内联体验。打开合并编辑器时,您可以通过单击编辑器工具栏中的一个按钮来获得之前的体验。
通过单击“源代码管理”视图中文件名旁边的同一图标,您可以完全跳过合并编辑器。
但是,您可以随时在新旧体验之间切换,甚至可以并行使用它们。
复选框改进
我们现在确保冲突的复选框始终可见,即使冲突大于视口也是如此。颜色用于强调未处理冲突的复选框。
差异算法改进
我们开始探索替代的差异算法,以提高冲突的质量。可以使用以下设置启用新的实验性差异算法
"mergeEditor.diffAlgorithm": "experimental",
此新算法尚未针对性能进行优化,但改进了许多边缘情况下合并编辑器的体验。
展望未来
在此版本中,我们专注于合并编辑器最重要的 UX 问题,并修复了许多错误。如果您仍然对新的合并编辑器感到困惑,我们很乐意收到您的来信!请在我们的存储库中创建一个新问题,分享屏幕截图和您的合并编辑器状态(使用将合并编辑器状态复制为 JSON 命令)。我们非常感谢到目前为止收到的所有反馈,更多的反馈将帮助我们使合并编辑器体验对每个人都变得出色。
我们未来的工作将侧重于单独的基准视图、冲突缩小、差异算法改进和其他改进。
FFmpeg 编解码器支持
作为 VS Code 一部分提供的FFmpeg共享库以前只支持 FLAC
编解码器。在此版本中,该库已更新为支持以下编解码器和容器列表。这将允许从笔记本或通过将音频和视频嵌入到 Webview 中的扩展播放更多音频和视频文件。
- Vorbis
- Flac
- H.264
- VP8
- WAV
- MP3
- Ogg
主题:fairyfloss(在 vscode.dev 上预览)
资源管理器重命名选择改进
在对文件启动重命名操作后,按 F2
键将循环遍历文件名、整个选择和文件扩展名,以允许更灵活的仅键盘交互。
圆角按钮
我们已更新所有按钮,使其具有略微圆角,以更好地匹配我们的设计美学。
主题:Material Theme Palenight High Contrast
Windows 上的窗口控件叠加
在 1.68 版本中,VS Code 采用了来自 Electron 的窗口控件叠加功能支持,该功能位于实验性标志之后,并且默认情况下处于关闭状态。我们已解决了影响 VS Code 的此功能的剩余问题,从而允许我们为 Windows 上的所有用户默认启用它。
Windows 控制叠加功能允许 Windows 11 上的 VS Code 用户选择贴靠布局以将其 VS Code 放置在桌面上。
树视图展开模式
工作台 > 树:展开模式 (workbench.tree.expandMode
) 设置,该设置控制树节点是单击还是双击展开,现在将由扩展贡献的树视图遵守。
编辑器
粘性滚动
粘性滚动在视口的顶部显示当前范围。该功能不再是实验性的,可以通过设置 editor.stickyScroll.enabled
启用。进一步的改进是
- 可以使用 编辑器 > 粘性滚动:最大行数 (
editor.stickyScroll.maxLineCount
) 设置来设置要显示的最大行数。默认最大值为 5 行。 - 您可以使用
Ctrl/Cmd + 单击
粘性滚动,以导航到定义。
新的代码操作控件
我们已经彻底修改了代码操作控件。现在,不是简单的代码操作菜单,而是一个自定义控件,可以更容易地找到您想要的代码操作
新的控件还允许 VS Code 显示其他信息。例如,您现在可以将鼠标悬停在禁用的代码操作上,以了解它们被禁用的原因。
您还可以通过修改以下命令的键盘快捷键来自定义用于在代码操作列表中导航的键盘快捷键
selectNextCodeAction
selectPrevCodeAction
acceptSelectedCodeAction
展望未来,新的代码操作 UI 为进一步的 UX 改进提供了良好的基础。如果您有任何建议,请务必告诉我们!
配置建议匹配
有一个新的设置来配置 IntelliSense 筛选。默认情况下,第一个字符必须与单词开头匹配,例如 c
必须匹配 console
或 WebContext
,但不会匹配 description
。editor.suggest.matchOnWordStartOnly
设置会更改此行为。禁用后,筛选将考虑任何匹配项 - 这会导致更多结果,但筛选仍然按匹配质量进行。
在下面的短视频中,您可以看到当禁用 matchOnWordStartOnly
时,对 “dir” 的建议会包含更多项,例如 “mkdir” 和 “makedirs”。
源代码管理
提交操作按钮的改进
用户可以使用 git.postCommitCommand
设置全局控制在成功提交操作后执行的辅助操作(例如,pull
,sync
)。在此里程碑中,我们添加了一个新设置 git.rememberPostCommitCommand
,可以启用该设置以记住每个存储库上次执行的辅助操作。
终端
Shell 集成改进
此版本对 shell 集成进行了以下改进
- Fish shell 集成仅作为实验性的手动安装提供。有关如何安装,请参阅Shell 集成文档。
- Windows 的 Git bash shell 集成仅作为实验性的手动安装提供。有关详细信息,请参阅手动安装部分。
- 支持常见的备用当前工作目录序列:
OSC 6 ; scheme://<cwd> ST
、OSC 1337 ; CurrentDir=<cwd> ST
、OSC 9 ; 9 ; <cwd> ST
- 更好地处理各种 shell 集成边缘情况。
平滑滚动
终端现在支持平滑滚动,它会在滚动后短时间内动画滚动,以帮助您查看滚动后的位置,类似于编辑器和列表。要启用平滑滚动,请设置
"terminal.integrated.smoothScrolling": true
下划线样式和颜色
现在使用最初由 kitty 终端率先采用的转义序列支持下划线样式和颜色。对于支持的程序,只要它们将这些序列发送到 VS Code 终端,这些新的下划线应会自动亮起。
此更改包括在启用 GPU 加速时改进的下划线渲染,这避免了带有长下延部分的字形和下划线重叠
由于ConPTY 中存在未解决的问题,目前 Windows 上不支持下划线样式和颜色。
渲染改进
对终端渲染进行了一些改进
-
修复了一个长期存在的错误,该错误有时会在工作台放大或缩小时导致模糊!
-
当启用最小对比度并且文本亮度需要翻转以确保满足比率时,现在将保留文本的色调。
-
新的主题键
terminal.inactiveSelectionBackground
可用于显示不同的选择背景颜色,无论终端是否处于焦点,以便更好地与编辑器对齐。 -
自定义 Powerline 字形渲染改进了边缘剪切。这在半圆字符上最明显,现在应该是平滑的曲线。
任务
窗口重新加载时重新连接
监视任务现在在窗口重新加载时重新连接,从而在 VS Code 更新或扩展状态更改时实现不间断的工作。默认情况下启用任务重新连接,但可以使用 task.reconnection
设置禁用。
调试
launch.json 中的 suppressMultipleSessionWarning 选项
当您尝试使用启动配置开始调试时,但该配置已存在活动的调试会话,VS Code 将在启动第二个实例之前显示警告对话框。这很容易意外地发生,通常不是您想做的。但是,如果运行同一配置的多个实例是您的工作流程的一部分,您现在可以通过将 "suppressMultipleSessionWarning": true
添加到您的 launch.json
配置文件来禁用此警告。
评论
筛选
“注释”视图有一个新的筛选器,您可以在其中按注释文本和已解决/未解决状态进行筛选。
编辑器装饰
“注释”编辑器槽装饰现在使用 codicon 并且具有新的样式。
语言
TypeScript 4.8
VS Code 现在附带 TypeScript 4.8.2。此主要更新为类型检查和推断带来了语言改进。在工具方面,您还应该看到一些不错的性能改进和错误修复!
请查看TypeScript 4.8 公告,了解有关此更新的更多信息。
TypeScript 直播
如果您错过了关于 TypeScript 的 VS Code 直播,请查看Matt Pocock 的两个最近的会议。
扩展的贡献
Jupyter
笔记本图像粘贴
现在,Jupyter 扩展允许用户将屏幕截图或图像文件粘贴到其笔记本内的 Markdown 单元格中。目前仅支持 image/png
MIME 类型。要使用该功能,请添加/启用以下设置
"ipynb.experimental.pasteImages.enabled": true
"editor.experimental.pasteActions.enabled": true
通过 Pylance 改进 Jupyter 笔记本的 IntelliSense
感谢 语言服务器协议中的更新,包括笔记本支持,在使用 Pylance 时,对带有 Python 内核的 Jupyter 笔记本的 IntelliSense 支持现在要好得多。
不仅在笔记本文件中编写 Python 代码时会获得改进的自动完成选项,而且您还可以使用重构功能,例如提取变量、提取方法和重命名符号,以及自动导入和语义突出显示。
主题:Horizon Extended(在vscode.dev上预览)
实时预览
现在,实时预览扩展正式支持多根工作区!尽管用户以前可以在多根工作区中使用实时预览,但现在有一个更清晰的实现支持它。
实时预览扩展现在为多根工作区中的每个根启动一个新服务器;因此,当预览多根工作区时,相对于项目根目录的链接(以 /
开头的链接)将正常工作。
主题:GitHub 深色调暗(在 vscode.dev 上预览)
您可以通过将鼠标悬停在实时预览的状态栏指示器(位于右下角)上来查看扩展打开的服务器。在下面的图像中,每个工作区都启动了一个服务器(在端口 3000 和 3002 上),并且为不在任何打开工作区中的文件生成了另一个服务器(在端口 3004 上)。
安装实时预览扩展并立即尝试!📡✨🔎
GitHub 拉取请求和问题
在 GitHub 拉取请求和问题扩展方面取得了更多进展,该扩展允许您处理、创建和管理拉取请求和问题。此版本的亮点包括
- 拉取请求的通知。
- 可以直接从拉取请求概述中解决/取消解决审查意见。
请查看该扩展的0.50.0 版本的更新日志,了解其他亮点。
远程开发
远程开发扩展的工作仍在继续,该扩展允许您使用容器、远程计算机或 Windows Subsystem for Linux (WSL) 作为功能齐全的开发环境。
您可以在远程开发发行说明中了解新的扩展功能和错误修复。
预览功能
文件移动和重命名时 Markdown 链接更新
是否厌倦了在移动或重命名文件时意外破坏 Markdown 中的链接或图像?试试新的 markdown.experimental.updateLinksOnFileMove.enabled
设置!
启用此新的实验性设置后,当在 VS Code 资源管理器中移动或重命名文件时,VS Code 将自动更新 Markdown 中的链接和图像
可以使用 markdown.experimental.updateLinksOnFileMove.enabled
设置启用此新行为。您可以使用 markdown.experimental.updateLinksOnFileMove.externalFileGlobs
控制受影响的文件类型。
试用一下这个新功能,并务必分享反馈。
设置配置文件
我们最近几个月一直在努力在 VS Code 中支持**设置配置文件**,这是社区最受欢迎的请求之一。此功能可通过 workbench.experimental.settingsProfiles.enabled
设置进行预览。请尝试一下,并通过在 vscode 存储库中创建问题或在 issue #116740 中发表评论,向我们提供您的反馈。
命令行界面
在此里程碑中,我们添加了对设置配置文件的命令行界面 (CLI) 支持。您现在可以使用 --profile
参数传递配置文件的名称,并使用该配置文件打开文件夹或工作区。下面的命令行使用“Web Development”配置文件打开 web-sample
文件夹
code ~/projects/web-sample --profile "Web Development"
如果指定的配置文件不存在,则会创建一个具有给定名称的新空配置文件。
临时设置配置文件
现在还支持临时设置配置文件,可以创建并临时关联到文件夹或工作区。临时配置文件一旦不再与任何文件夹或工作区关联,就会自动删除。
在下面的短视频中,当用户打开一个文件夹并选择设置配置文件:创建临时设置配置文件命令时,会创建一个新的“临时 1”配置文件,并在配置文件列表中可见。当文件夹关闭时,“临时 1”配置文件会被删除。
您还可以使用 --profile-temp
开关,从 CLI 创建临时设置配置文件并将其关联到文件夹或工作区。下面的命令行使用临时配置文件打开 try-out-sample 文件夹,该临时配置文件在关闭文件夹后会被删除。
code ~/projects/try-out-sample --profile-temp
在不同的开发环境之间移动时,可以随身携带您的更改
当您浏览 GitHub 或 Azure Repos 代码库(例如 https://vscode.dev/github/microsoft/vscode)时,可以使用 继续处理 命令来选择与您的代码库一起使用的其他开发环境。
以前,如果您的虚拟工作区中有未完成的编辑,您需要将它们推送到 GitHub 或 Azure Repos 才能在其他地方查看。在这个里程碑中,我们向 继续处理 功能添加了 编辑会话 集成,以便您未提交的更改会自动随您一起转移到您的目标开发环境,例如 GitHub 代码空间。
在下面的视频中,当用户创建并切换到新的 GitHub 代码空间工作时,他们在使用 Web 版 VS Code 时对 TypeScript 文件所做的更改会被应用。
要尝试此功能,请在您的设置中设置 "workbench.experimental.editSessions.enabled": true
,启用 设置同步,然后在 Web 版或桌面版 VS Code 中运行 编辑会话:登录 命令。
当您使用 Web 版 VS Code 时,当您在以下位置使用 继续处理 时,您的未提交的更改将随您一起转移:
- GitHub Codespaces 中的新云托管环境
- 您的 GitHub 代码库的新本地克隆
- 具有相同虚拟 GitHub 代码库的本地 VS Code 实例
当您使用带有 远程代码库 扩展的桌面版 VS Code 时,当您在以下位置使用 继续处理 时,您的未提交的更改将随您一起转移:
- GitHub Codespaces 中的云托管环境(可通过 GitHub Codespaces 扩展获得)
- 您的 GitHub 代码库的新本地克隆
- 容器卷中您的 GitHub 代码库的新克隆(可通过 Dev Containers 扩展获得)
- https://vscode.dev
- 包含您的代码库克隆的现有本地文件夹
扩展创作
TerminalExitStatus.reason
现在,扩展作者可以通过新的 TerminalExitReason
API 更好地了解终端退出的原因。
export enum TerminalExitReason {
Unknown = 0,
Shutdown = 1,
Process = 2,
User = 3,
Extension = 4
}
枚举设置 enumItemLabels 文档
设置编辑器中的枚举设置支持 enumItemLabels
键,这允许扩展作者指定与 enum
值对应的下拉列表中显示的值。
主题:浅粉色(在 vscode.dev 上预览)
新的 activeWebviewPanelId 上下文键
新的 activeWebviewPanelId
上下文键 跟踪当前聚焦的 Webview 面板的 viewType
。您可以在 when 子句中使用它,以在您的 Webview 聚焦时启用命令或菜单项。
"when": "activeWebviewPanelId == 'markdown.preview'"
Web 上的 TypeScript 服务器插件
现在,Web 上支持 TypeScript 语言服务插件。这适用于使用 typescriptServerPlugins
贡献点由扩展贡献的插件。
要开始使用,您必须首先通过在 package.json
中添加 browser
入口点(除了 main
入口点之外)来告诉 TypeScript 您的插件已启用 Web 功能。
"main": "out/main.js",
"browser": "out/main.browser.js"
browser
入口点必须是一个 JavaScript 模块,该模块导出一个默认函数来激活插件。
export default function init(modules: { typescript: typeof import("typescript/lib/tsserverlibrary") }) {
...
};
请记住,在 Web 上,您的插件将在普通的 Web Worker 环境中运行,因此您不能使用 Node.js API(例如 fs
)。
已禁用树项目
启用子句解析为 false 的命令的树项目将显示为已禁用。
Markdown 语言服务器
VS Code 中的 Markdown 支持已重新实现为功能齐全的 语言服务器。您可以在 Matt Bierner 的 Markdown 语言服务器博客文章中了解他的历程,其中他描述了如何为 Markdown 文件添加编程语言功能,例如 查找所有引用、重命名符号 和损坏的链接检测。
即将对“视图/标题”菜单的上下文进行更改
在 8 月份,我们尝试传递为树视图的 view/title
菜单贡献的命令的视图树的焦点和选择。在此版本中,我们恢复了此更改,因为它给某些扩展带来了问题。我们希望将此更改恢复并在 9 月份发布。如果此更新将破坏您的扩展程序,或者您认为此行为是不希望的,请在 issue #42903 中留下评论。
调试适配器协议
关于“startDebugging”请求的提案
今天,VS Code 支持多个并发调试会话,但是 调试适配器协议 (DAP) 仅涵盖单个会话。这意味着以编程方式创建新的调试会话不是 DAP 的一部分,只能在 DAP 之外或调试适配器中完成,通常是在包含调试适配器的调试扩展中完成。由此产生的结果是,对于仅重用调试适配器而不是 VS Code 特定调试扩展的非 VS Code DAP 客户端,诸如调试子进程之类的多会话功能不容易使用。
为了改善这种情况,我们计划向 DAP 添加一个新的反向请求,以便从调试适配器内部创建新的调试会话。经过几轮讨论后,我们为 startDebugging
反向请求准备了提案。如果您是调试扩展程序或 DAP 客户端作者,并且对这个 DAP 协议添加感兴趣,我们非常感谢您的反馈。
工程
Electron 19 更新
在这个里程碑中,我们完成了将 Electron 19 捆绑到 VS Code 桌面版的探索,我们想感谢参与在 Insiders 上自托管的所有人。此更新附带 Chromium 102.0.5005.167
和 Node.js 16.14.2
。
Windows 7 支持已结束
Microsoft 在 2020 年 1 月结束了对 Windows 7 的支持。但是,Electron 通过修补 libuv
库继续支持 Windows 7。随着 Electron 19 的更新,libuv
补丁 不再起作用,我们建议用户更新到更新版本的 Windows,以便使用 VS Code 桌面版。VS Code 将不再在 Windows 7 上提供产品更新和安全修复。您可以在 support.microsoft.com 上了解有关升级 Windows 的更多信息。
值得注意的修复
- 115768 Windows:不同显示器上的不同缩放级别无法在正确的位置恢复窗口
- 133444 将设置选项卡拖到另一个编辑器组会清除搜索查询
- 140305 跨多个屏幕扩展的主窗口在重新打开时无法恢复位置
- 146683 打开时的窗口布局样式错误
- 148492 对工作区文件使用平台无关的路径
- 154963 修复了扩展程序演练中的 codicon 支持
- 155341 如果数据写入延迟,则管道传输到 VS Code 失败
- 156075 [Emmet] 每个语言的“在选项卡上触发扩展”
- 156385 运行最近的命令会显示已解析的别名 -
ls
将--color=auto
附加到执行的命令
感谢
最后但同样重要的是,非常感谢 VS Code 的贡献者。
问题跟踪
对我们的问题跟踪的贡献
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- Simon Chan (@yume-chan)
- RedCMD (@RedCMD)
- ArturoDent (@ArturoDent)
拉取请求
对 vscode
的贡献
- @babakks (Babak K. Shandiz)
- 🎁 添加对
fish
shell 历史记录的支持 PR #156058 - 🎁 支持其他终端 CWD 转义序列 PR #157783
- 🎁 添加对
- @Balastrong (Leonardo Montini):在 monaco 选择框中添加光标指针以保持一致性 PR #152976
- @ChaseKnowlden
- 将 offline_access 添加到默认范围列表 PR #157453
- 修复秘密状态中的拼写错误 PR #157559
- @CsCherrYY (Shi Chen):支持在引用视图 API 中切换到/从自定义视图 PR #152008
- @DingWeizhe (DingWeizhe):修复粘性滚动起始行号 PR #157466
- @dirondin (Mikhail Po):修复 #147912(multipleSessionWarning 调试选项)PR #147914
- @emeric-martineau (Emeric MARTINEAU):修复简化 bash PROMPT_COMMAND 处理提交 PR #157631
- @etriebe (Eric Triebe):添加一个选项,将 allowMidWordMatch 作为设置公开 PR #152292
- @Evpok (Evpok):为 snap 构建启用 Wayland 支持 PR #156551
- @FantasqueX (FantasqueX)
- 在 ipc.ts 中用 Cancellation Error 替换已弃用的 canceled PR #156965
- 修复 files.ts 中的拼写错误 PR #157280
- @ferdnyc (Frank Dana):RPM 打包:使用标准宏 PR #153247
- @gjsjohnmurray (John Murray)
- 修复在具有不同缩放比例的 Windows 第二显示器上的初始窗口大小问题 (#_146499) PR #155589
- 在任务栏中显示问题报告器窗口 (#_130497) PR #156141
- 不要链接到已弃用的
terminal.integrated.automationShell.*
设置 (#_156481) PR #156486 - 为
editor.quickSuggestions
设置提供有效的 Markdown 特定默认值 (#_156686) PR #156689 - 在 SCM 编辑器验证消息中添加关闭按钮 (#_143036) PR #158131
- @juihanamshet1 (Jui Hanamshet):如果删除括号,则缩小范围。如果添加括号,则扩大范围。 PR #156313
- @kidonng (Kid):修复当命令行为空时 fish 集成脚本的问题 PR #157778
- @MaddyDev (Maddy):检查 validExtensions 中的小写值 PR #158319
- @MonadChains (MonadChains):修复到达终端边界时的选择问题 PR #156071
- @pingren (Ping)
- 修复 PWA 进入全屏时的 isStandalone 问题 PR #156424
- 在 macOS 上为 terminalProcess getCwd Unicode 路径添加环境变量 PR #157377
- @r3m0t (Tomer Chachamu):在扩展开发期间继承更多设置 PR #151872
- @Semesse (Semesse)
- 在资源管理器中拖放文件时,跳过对嵌套子项的折叠状态检查 PR #156759
- 修复 exthost 语言功能测试 PR #158782
- @ssigwart (Stephen Sigwart):修复搜索编辑器标题不更新的问题 PR #156011
- @SvanT (Svante Boberg):清理已释放的终端 PR #156326
- @zgracem (Amy Grace)
- 为 fish 添加 shell 集成脚本 PR #157291
- 改进 vi 模式下的 fish shell 集成 PR #158127
- @zhuowei:simpleFileDialog:保存时,如果目录不存在,询问用户是否应创建目录 PR #152536
对 vscode-extension-samples
的贡献
- @gjsjohnmurray (John Murray):lsp-embedded-request-forwarding:不要编码在映射中使用的 uri (修复 #682) PR #683
对 devcontainers/cli
的贡献
- @leopoldsedev (Christian Leopoldseder):在 localEnv/containerEnv 扩展中实现可选默认值 PR #51