共计 9820 个字符,预计需要花费 25 分钟才能阅读完成。
欢送应用 2021 年 7 月版的 Visual Studio Code。咱们心愿您会喜爱此版本中的许多更新与改良,以下是其中的一些高亮:
- 扩大视图的改良 – 丰盛的扩大详细信息悬停,新的运行状态标签页。
- 设置编辑器验证 – 疾速查找到对象设置的编辑谬误。
- 拖放终端 – 将终端跨窗口挪动到编辑器和面板区域。
- 扩大的主题定制 – 一次定制多个色彩主题。
- Jupyter 笔记本的内建反对 – 间接在 VS Code 中关上 .ipynb 文件。
- 笔记本 UI 的改良 – 显示折叠单元格的第一行,每个单元格的吊销 / 重做。
- 测试 API 的最终确定 – 原生反对 VS Code 中应用测试资源管理器运行测试。
- 调试反汇编视图预览 – 在 VS Code 中显示反汇编的 C++ 代码。
- 实时预览扩大 – VS Code 中的实时的 HTML 预览,反对 JavaScript 调试。
- 近程 – 容器 devcontainer CLI – 用于开发容器的命令行界面。
如果您想在线浏览这些发行阐明,请拜访 code.visualstudio.com上的 更新。
更多对于 VS Code 的材料请拜访微软 MS Learn 平台:http://aka.ms/vscodelearn
外部领先版:想更先一步体验新性能吗?您能够下载每晚的 Insiders 版本,并在最新更新可用时立刻试用。
工作台
扩大插件
改良了调整大小后的扩大视图。在上面的动图中,你能够看到默认宽度的扩大视图显示了所有详细信息(以前未显示图标、评分和装置计数)。当它放大时,会显示较小的扩大图标,当其宽度进一步减小时,图标和评分将被暗藏。
扩大视图当初会显示自定义悬停信息。这个丰盛的悬停包含扩大的残缺形容和其余有用的信息,例如为什么禁用或举荐扩大。
您当初能够在插件面板中看到更多的插件运行状态,例如其激活工夫、是否在启动时激活,以及扩大编辑器中新引入的 运行时状态 选项卡中是否生成了任何正告或谬误。当然,你也能够悬停在插件试图上看到局部的运行状态信息。
插件面板的详细信息标签页当初会显示分类信息,资源链接,和诸如插件公布工夫和更新工夫的其余信息。抉择某个分类会显示以后分类下的所有插件。
设置编辑器
设置编辑器当初反对对象验证性能。验证会涵盖间接编辑 JSON 文件时可能引入的类型谬误。
非编辑模式下,数组设置当初具备了拖放性能的反对。
此外,将 uniqueItems 属性设置为 true 的枚举数组设置当初仅显示残余选项,而不是下拉列表中的所有选项。
设置编辑器当初还反对多行字符串设置,其中值出现在多行文本区域而不是单行输入框中:
扩大的主题自定义语法
色彩自定义设置容许用户自定义以后主题的色彩:
- workbench.colorCustomizations
- editor.tokenColorCustomizations
- editor.semanticTokenColorCustomizations
以下语法能够用来一次自定义多个主题的色彩:
"workbench.colorCustomizations": {"[Abyss][Red]": {"activityBar.background": "#ff0000"},
"[Monokai*]": {"activityBar.background": "#ff0000"}
},
您能够列出多个主题,或者,在名称的结尾或者结尾应用 *
通配符来选取多个主题。
Jupyter 笔记本文件的反对
本月,咱们把声援 *.ipynb
文件的代码从 Jupyter 笔记本 插件排汇为了内建插件。这意味着你当初能够在一个全新装置的 VS Code 环境中失去 Jupyter 笔记本的原生反对。你甚至都不必装置 Jupyter 的插件。须要留神的是,如果你想要执行 ipywidgets 或者其余简单渲染类型的代码单元或者查看运行后果时,你仍然须要残缺装置 Jupyter 插件。
笔记本布局的改良
咱们在本次迭代中对笔记本布局进行了一些改良:
- 咱们当初将会在折叠时渲染代码单元的第一行。
- 当窗口宽度不足以出现所有次要操作时,笔记本编辑器工具栏上的操作将移至溢出区。
notebook.undoRedoPerCell
的默认值当初更改为true
。
咱们还更新了代码单元格的默认款式,显示背景色彩以帮忙辨别单元格。主题能够应用 notebook.cellEditorBackground 来自定义这个色彩。
最初,您当初能够应用 notebook.globalToolbarShowLabel
设置在笔记本工具栏上切换文本标签:
“ 复制相对路径 ” 配置门路分隔符
在调用 “ 复制相干门路 ” 操作时,新设置 explorer.copyRelativePathSeparator 容许显式设置应用门路分隔符。以下为可用选项:
Auto
(默认)– 应用操作系统特定的门路分隔符/
– 应用斜线作为门路分隔符\\
– 应用反斜杠作为门路分隔符
跨编辑器组共享视图状态
增加了一个新设置 workbench.editor.sharedViewState
以配置编辑器视图状态(例如,编辑器中的滚动地位)在编辑器组之间共享的形式。
默认状况下,此设置被禁用以保留以后设置。如果您在靠边关上编辑器并稍后敞开该编辑器组,只是为了再次关上编辑器到靠边,则不会复原视图状态,因为您正在关上一个新的编辑器组。然而,当您启用此设置时,除非为编辑器组找到更具体的视图状态,否则将在所有编辑器组中保留并应用最新的编辑器视图状态。
编辑器
在不同的折叠范畴之间切换
以下的新指令能够将光标地位设置为相应的折叠:
- 转到下一个折叠 (
editor.gotoNextFold
) - 转到上一个折叠 (
editor.gotoPreviousFold
) - 转到父级折叠 (
editor.gotoParentFold
)
这些命令目前没有默认键绑定,然而你能够通过以下办法增加本人的键盘快捷键:
首选项:关上键盘快捷键(kb(workbench.action.openGlobalKeybindings)
)
主动折叠 Import 语句
通过设置 editor.foldingImportsByDefault
来主动折叠 Import 语句。
当文件被关上后,折叠的状态将会被保留。
TypeScript,JavaScript,Java,C#,C++ 和其余具备折叠范畴提供程序的编程语言都反对这项新性能。注:折叠范畴提供程序特指将 Import 语句标注为 FoldingRangeKind.Imports
的提供程序。
选择项的种子搜寻字符串
Find Widget 设置 editor.find.seedSearchStringFromSelection
已反对从非空抉择中收获搜寻字符串。默认状况下,当显示小部件时,编辑器将应用以下两项作为搜寻关键词:
- 选择项。
- 空抉择四周的单词。
内联倡议的改良
咱们扭转了内联倡议的出现形式。这不仅修复了许多谬误,而且还使主动换行辨认了内联倡议。
此外,当初反对了非尾随地位的多行内联倡议。
嵌入提醒的改良
咱们还扭转了嵌入提醒的出现形式。通过应用与内联倡议雷同的机制,嵌入提醒当初也被用于主动换行。
这种机制还实现了嵌入提醒四周的独自光标停泊。
终端
在窗口之间拖拽终端
当初,您能够任意地从标签页或一个窗口的编辑区域,拖拽终端到标签页,编辑区域,或者另一个窗口的面板。
子过程跟踪和敞开正告
当用户尝试敞开一个有子过程的终端时,terminal.integrated.confirmOnExit
和新的设置 terminal.integrated.confirmOnKill
会正告用户。默认状况下,这仅影响编辑器区域中的终端,但用户能够配置为显示所有的(面板区域中)终端正告。
设置所提供的终端配置文件为默认
当初用户能够将插件所提供的终端配置文件设为默认的配置文件。
下划线和删除线反对
终端当初反对下划线和删除线属性。例如,用能够能够配置 git 来应用这些新属性:
上述的例子应用了下列 .gitconfig
参数:
[color "status"]
added = green bold
changed = red bold strike
untracked = cyan
branch = yellow black bold ul
编辑区域靠边创立终端
当初,用户能够在流动编辑区域应用新指令workbench.action.createTerminalEditorSide
来创立一个靠边新的终端。
流动终端标签页指示器
主题当初能够应用主题键 terminal.tab.activeBorder
设置垂直线的色彩,用以批示流动的终端选项卡。
如果没有设置 terminal.tab.activeBorder
,色彩将回退到tab.activeBorder
。
禁用终端标签页动画图标
terminal.integrated.tabs.enableAnimation
会禁用终端标签页动画图标。如果是针对工作而不是微调器,播放按钮会被应用:
调试
改良了编辑器题目区域内的 播放 / 调试 按键
在 2 月的版本中,咱们引入了一个下拉按钮,用以在编辑器题目区域的地方(紧凑)地位对运行和调试命令进行分组。依据一些用户反馈,咱们尝试通过记忆上次执行的操作来改良下拉按钮。下拉按钮当初将会领有两个单击区域,一个用于默认动作(左),另一个用于下拉(右),其中,所选运行操作将被记忆并存为新的默认值。
请留神:
- 如果只有一个运行或调试操作,则会省略下拉菜单。
- 如果有多个运行或调试操作,所有操作都会呈现在下拉菜单中,并且默认操作设置为下拉菜单中的第一个操作(前提是没有记住的操作)。
- VS Code 重新启动时,会为特定工作区保留默认操作;它 不会为编辑器内容保留。
对扩大插件的奉献
实时预览
实时预览扩大插件本月呈现了一些令人兴奋的新性能!这包含:
- 内建 JavaScript 调试器兼容性的内部预览。
- 请应用
Live Preview: Show Debug Preview
来尝鲜应用! - 对嵌入式浏览器的改良,例如 “ 在页面中查找 ” 的反对和快速访问
webvivew
DevTools。 - 文件系统监督主动生成文件。
- 期待更多!
要查看无关本月进度的更多详细信息,请参阅扩大的发行阐明。
GitHub 拉取申请和问题
GitHub 拉取申请和问题 扩大插件的工作仍在持续,它容许您响应、创立和治理拉取申请和问题。本月重点对问题的 “ 开始工作 ” 进行了扩大,让您能够解决以后关上的存储库之外的问题。
要理解所有新性能和更新,您能够查看 0.29.0 版扩大的残缺变更日志。
Jupyter
Jupyter 扩大插件的工作仍在持续。要理解所有的新性能和更新,您能够查看 7 月版本的残缺更新日志。
互动窗口
Jupyter 交互窗口提供了另一种构建和应用 Jupyter 笔记本的办法,应用文本文件而不是笔记本界面。上个月,咱们预览了 Jupyter 交互式窗口的降级版本,当初咱们提供了具备更深刻的工作台集成,包含对主题的反对、自定义键绑定、片段、与扩大的兼容性等!非常感谢咱们的用户通过 GitHub 问题提供无关预览体验版的反馈。内置交互窗口当初曾经成为了 1.59 版本中的默认界面。之前的界面在 "jupyter.enableNativeInteractiveWindow": false
后将依然可用,并会在行将公布的版本中删除。咱们期待您的反馈!
逐行运行
咱们始终致力于反对 Jupyter 笔记本中的 “ 逐行运行 ” 性能。此性能实质上是一种简化的调试模式,可让您逐行执行单元代码,而无需任何简单的调试 UI。这仍然是实验性的,您能够通过设置 "jupyter.experimental.debugging": true
,在您抉择的内核中装置 ipykernel 的第 6 版,而后抉择单元格工具栏中的 ” 按行运行” 按钮来尝鲜一下。
近程容器 devcontainer CLI
近程 - 容器 扩大实用于在 VS Code 中应用 Docker 容器。它当初蕴含 devcontainer 命令行界面,让您能够轻松地关上容器中的文件夹 (devcontainer open ) 或者构建开发容器映像 (devcontainer build )。
您能够在 近程开发 发行阐明中理解新的性能和谬误修复。
预览性能
无标题文件的主动语言检测
咱们很快乐地发表无标题文件的主动语言检测的初始预览版,它应用机器学习来检测您正在编码的语言并主动设置无标题文件的语言模式。此性能利用了开源 ML 库 Tensorflow.js 和 GitHub 用户 @yoeo 来自 Guesslang 的 ML 模型。
在此版本中,该性能将默认敞开,但咱们打算将其设为下一次迭代版本的默认设置。如果您想要启用它,请利用以下设置:
"workbench.editor.untitled.experimentalLanguageDetection": true
举个例子,您能够关上一个无标题文件并将一段代码粘贴到您的编辑器中。
以下是一段自动识别的 Python 代码段:
此外,您能够通过关上语言选择器查看正在检测的语言。
留神:如果语言检测后果不够确信,那么您将放弃以后的语言模式,语言选择器中不会显示任何后果,直到语言检测后果更有把握。
该设置还容许您提供语言笼罩,可用于指定您不想主动敞开的语言模式。
以下的例子展现了如何敞开 .md 文件自动检测:
"workbench.editor.untitled.experimentalLanguageDetection": true
"[markdown]": {"workbench.editor.untitled.experimentalLanguageDetection": false}
在您编辑无标题的 Markdown 文件时,主动语言检测性能 不会 运行。然而,如果您正在批改任何其余类型的无标题文件,主动语言检测性能 将会检测这些文件的内容。
咱们曾经将与 ML 模型交互的代码拆散并合并到它本人的代码库中,作为 npm 包公布,该包存在于 vscode-languagedetection 存储库中。
请让咱们晓得无标题文件的主动语言检测性能是否帮忙到了您的日常工作!
TypeScript 4.4
此版本包含对 TypeScript 4.4 版本的反对。您能够在 TypeScript 博客上浏览无关 TypeScript 4.4 中新语言性能和改良的更多信息。一些工具亮点:
- 在 JavaScript 和 TypeScript 文件中嵌入参数名称和类型的提醒。
- 纯 JS 文件中的根本拼写倡议。只有当咱们对谬误和修复有把握时才会显示这些。
要开始应用 TypeScript 4.4 内测版本,请装置 TypeScript Nightly 扩大。
如果您在应用 TypeScript 4.4 时遇到任何谬误,请分享您的反馈并通知咱们。
反汇编视图
感激微软 C++ 团队奉献的大量代码,咱们很快乐在这个里程碑版本中包含了 反汇编视图 的预览性能。
反汇编视图能够从编辑器的上下文菜单中关上,用以显示流动堆栈帧的反汇编源码,它反对单步执行汇编指令,并且能够在单个指令上设置断点。
反汇编视图仅在流动的调试会话中可用。留神,底层调试扩大插件也须要有相应的反对。
目前,只有 C++ 和 Mock Debug 能够反对反汇编视图。
从技术角度而言,VS Code 的反汇编视图实现了 DAP (Debug Adapter Protocol) 协定另外四个性能:
disassembly
申请,用以提供基于内存地位的反汇编源码。- 堆栈帧上的
instructionPointerReference
属性。 - 步进申请的
granularity
属性。 - 指令断点和
setInstructionBreakpoints
申请。
扩大创作
测试 API
去年秋天,咱们开始在 VS Code 中增加对运行测试的原生反对,本月,第一组与测试相干的 API 曾经交付。与之前的扩大插件相比,这些 API 提供了更大的灵活性、更好的性能和更丰盛的用户体验。查看无关编写测试扩大的指南以深刻理解。
测试资源管理器 UI 插件的现有用户能够通过将 testExplorer.useNativeTesting
设置为 true
来取得原生体验。然而,该转换是基于测试资源管理器 UI 扩大现有 API,因而不包含诸如丰盛差别之类的一些性能。
Java 扩大包中蕴含的 Microsoft Java 测试运行器是最早采纳测试 API 的扩大之一。
新建文件菜单的奉献点
有助于创立新文件编辑器的扩大(例如笔记本或自定义编辑器)当初能够向新的 文件 / 新文件 菜单奉献点奉献命令。能够从欢送页面或文件菜单中的 “ 新建文件 …” 我的项目拜访此菜单。
丰盛状态栏悬停
状态栏我的项目当初反对丰盛的悬停,包含链接和图标 StatusBarItem.tooltip: string | IMarkdownString
- 如果
MarkdownString.supportThemeIcons
设置为true
,您能够应用带有$(iconName)
语法的图标。 - 如果
MarkdownString
受信赖,还能够增加命令链接。语法:([test](command:vscode.newWindow))
状态栏正告色彩
示意正告的状态栏我的项目能够应用新增加的色彩 statusBarItem.warningBackground
和 statusBarItem.warningForeground
。
没有 additionalProperties 的对象设置
对象设置必须将 additionalProperties
设置为 false
,以便在设置编辑器中反对对象。否则,设置编辑器会解读为简单设置(不法则的设置),并将用户定向到设置 JSON 文件。
多行字符串设置
要在设置编辑器中增加多行字符串设置的反对,请将 "editPresentation": "multilineText"
作为键值配对增加到字符串设置中。将字符串设置更改为多行设置将导致设置编辑器在多行文本区域(而非单行输入框中)出现设置值。
更新的 Codicons
咱们曾经增加了下列新图标到 codicon 库中:
azure
compass-active
compass-active
compass-dot
compass
debug-all
debug-coverage
git-pull-request-closed
git-pull-request-draft
issue-draft
layers-active
layers-dot
layers
文本文档更改起因
当事件 workspace.onDidChangeTextDocument
被触发时,事件对象的新属性reason
会告知用户文本更改的起因是吊销或重做操作。
语言服务器协定
语言服务器协定的下一个新版本以及对应的 npm 模块曾经公布。3.17 版本蕴含了一个对于实现项标签详细信息的新提案,该提案合乎 VS Code 自身的最新变动。
调试适配器协定
最终确定 ” writeMemory” 申请和 ” memory” 事件提案
writeMemory
申请曾经实现,当初能够在 Debug Adapter Protocol 的 1.48 版和与之绝对应的 npm 模块中应用。如果调试适配器具备 supportsWriteMemoryRequest
性能,客户端能够应用 writeMemory
申请将字节写入给定地位的内存。
memory
事件有一个新的提案,将在下一个里程碑中增加到 DAP。
提议的扩大插件 API
每个里程碑版本都附有新提议的 API,扩大插件的作者们能够试用它们。咱们期待您的反馈。如果您想要尝鲜提议的新 API,请实现以下步骤:
- 您必须应用 Insiders 版本,因为提议的 API 常常被批改。
- 你必须在你的扩大的
package.json
文件中退出这一行:"enableProposedApi": true
。 - 将最新版本的 vscode.proposed.d.ts 文件复制到我的项目的源地位。
您将不能应用倡议 API 公布扩大插件。因为新的版本可能会有重大变动,咱们须要保障现有的扩大插件能够被持续应用。
isDefault 用于 TaskGroup
group
属性存在于 tasks.json
文件中定义的工作上,也通过工作 API 公开。group
属性有一个 isDefault
属性,该属性直到现在在 API 中都不可用。该提案将 isDefault
属性公开为TaskGroup
上的只读属性,以便扩大能够读取哪个工作是组的默认工作,但不能通过为组设置默认值来笼罩用户配置。
用于 AuthenticationGetSessionOptions 的 forceRecreate
到目前为止,用于获取身份验证会话对象的 getSession
API 素来没有能力要求用户须要再次登录。然而这对于应用 SAML/ 单点登录 (SSO) 体验的 GitHub 等身份验证服务是必须的,其中拜访令牌最终会在 SSO 会话到期时失去对资源的拜访权限。该提案为 AuthenticationGetSessionOptions
增加了另一个名为 forceRecreate
的属性,容许您要求用户再次登录。向用户显示相似于您指定 createIfNone
时显示的模式体验。
工程
基于 iframe 的 webviews 当初在桌面上随处可见
本月咱们实现了从 Electron 的 webview 标签元素过渡到基于一般 <iframe>
元素的 webview。这更好地协调了 VS Code 的 webviews 跨桌面和 web 的实现,也让咱们删除了很多当初冗余的代码。
Electron 13 更新
在这个里程碑版本中,咱们实现了将 Electron 13 捆绑到 VS Code 的试验,这要感激所有参加 Insiders 测试和自托管的参与者。这是 Chromium 91.0.4472.124 附带的次要 Electron 版本。此版本的 Node.js 版本没有变动,它依然是 v14.16.0。
Electron 沙盒反对的停顿
随着咱们筹备让 VS Code 工作台启用 Electron 的沙盒性能,咱们心愿在 linux 上启用混合沙盒模式,且不在分布式软件包 deb、rpm、snap、tar 存档中捆绑 cli 参数 --no-sandbox
。Chromium 在 linux 上有一个多层沙盒模型。如果 Chromium 无奈将命名空间沙盒用于第 1 层,它将尝试通过帮忙程序 chrome-sandbox
来应用 setuid 沙盒。要使 setuid 二进制文件工作,它须要满足以下条件:
- 沙箱二进制文件必须可由 Chromium 过程执行。
- 它必须是 SUID 并且能够被其他人执行。
咱们可能为 deb 和 rpm 包保留这些条件。目前无奈取得 snap 的这些权限,咱们有以下跟踪问题 https://github.com/microsoft/…。
至于其余应用 tar 存档的应用程序,如果应用程序无奈应用命名空间沙盒(这在容器内运行时可能会产生)它将失败并显示以下谬误:
FATAL:setuid\_sandbox\_host.cc(158)]
找到了 SUID 沙盒助手二进制文件,但没有正确配置。而不是在没有沙盒的状况下运行,我当初正在停止程序。您须要确保 chrome-sandbox 由 root 用户领有并且模式为 4755。
如果产生这种状况,您能够应用以下两个选项之一来使其失常工作:
-
修复 setuid helper 权限问题
sudo chown root <path-to-vscode>/chrome-sandbox sudo chmod 4755 <path-to-vscode>/chrome-sandbox
- 应用
--no-sandbox
标记运行
烟雾测试的一些改良
咱们始终为每个构建版本运行一套残缺的烟雾测试。咱们测试关上 VSCode(桌面和 Web)并执行一堆 UI 元素以确保正确的性能。这个里程碑版本中咱们在这个根底上投入了更多资源,从而使咱们可能从最终打算中移除手动的烟雾测试。
烟雾测试当初能够在所有平台(macOS、Linux 和 Windows)上运行。最重要的是,咱们曾经实现在每次代码提交时主动运行烟雾测试,从而咱们能够及时地发现 VS Code 新版本可能引入的软件谬误。
最初,感激咱们用于自动化 Web 冒烟测试的 Playwright 库,咱们采纳了他们的跟踪工具,这使得咱们能够查看并且反复运行失败的烟雾测试。
学习材料
http://aka.ms/vscodelearn
重大修复
- 26425:没有更改时不应显示 ” 关上更改 ” 按钮
- 100815:内部终端在连贯到近程 WSL 时中断
- 106981:当窗口缩放设置为 -1 时,终端光标重影
- 127959:调试程序暂停时将关上调试窗格
- 129059:设置编辑器中的对象小组件不出现阐明
- 129070:无奈通过仅按 ” 确定 ” 按钮更正下拉列表设置值
- 129415:无奈在繁多文件模式下运行用户工作