原文链接: https://zhuanlan.zhihu.com/p/396681297
欢迎使用 2021 年 7 月版的 Visual Studio Code 。希望你会喜欢此版本中的许多更新与改进,以下是其中的一些高亮:
如果您想在线阅读这些发行说明,请访问 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"
}
},
您可以列出多个主题,或者,在名称的开头或者结尾使用*
通配符来选取多个主题。
本月,我们把支援 *.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)
)
通过设置 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 月的版本中,我们引入了一个下拉按钮,用以在编辑器标题区域的中央(紧凑)位置对运行和调试命令进行分组。根据一些用户反馈,我们尝试通过记忆上次执行的操作来改进下拉按钮。下拉按钮现在将会拥有两个单击区域,一个用于默认动作(左),另一个用于下拉(右),其中,所选运行操作将被记忆并存为新的默认值。
请注意:
实时预览扩展插件本月出现了一些令人兴奋的新功能!这包括:
Live Preview: Show Debug Preview
来尝鲜使用!webvivew
DevTools 。要查看有关本月进度的更多详细信息,请参阅扩展的发行说明。
GitHub 拉取请求和问题 扩展插件的工作仍在继续,它允许您响应、创建和管理拉取请求和问题。本月重点对问题的 "开始工作" 进行了扩展,让您可以处理当前打开的存储库之外的问题。
要了解所有新功能和更新,您可以查看 0.29.0 版扩展的完整变更日志。
Jupyter扩展插件的工作仍在继续。要了解所有的新功能和更新,您可以查看 7 月版本的完整更新日志。
Jupyter 交互窗口提供了另一种构建和使用 Jupyter 笔记本的方法,使用文本文件而不是笔记本界面。上个月,我们预览了 Jupyter 交互式窗口的升级版本,现在我们提供了具有更深入的工作台集成,包括对主题的支持、自定义键绑定、片段、与扩展的兼容性等!非常感谢我们的用户通过 GitHub 问题提供有关预览体验版的反馈。内置交互窗口现在已经成为了 1.59 版本中的默认界面。之前的界面在 "jupyter.enableNativeInteractiveWindow": false
后将仍然可用,并会在即将发布的版本中删除。我们期待您的反馈!
我们一直致力于支持 Jupyter 笔记本中的 "逐行运行" 功能。此功能本质上是一种简化的调试模式,可让您逐行执行单元代码,而无需任何复杂的调试 UI 。这依然是实验性的,您可以通过设置 "jupyter.experimental.debugging": true
,在您选择的内核中安装 ipykernel 的第 6 版,然后选择单元格工具栏中的 " 按行运行" 按钮来尝鲜一下。
远程- 容器 扩展适用于在 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 博客上阅读有关 TypeScript 4.4 中新语言功能和改进的更多信息。一些工具亮点:
要开始使用 TypeScript 4.4 内测版本,请安装 TypeScript Nightly 扩展。
如果您在使用 TypeScript 4.4 时遇到任何错误,请分享您的反馈并告诉我们。
感谢微软 C++ 团队贡献的大量代码,我们很高兴在这个里程碑版本中包括了 反汇编视图 的预览功能。
反汇编视图可以从编辑器的上下文菜单中打开,用以显示活动堆栈帧的反汇编源码,它支持单步执行汇编指令,并且可以在单个指令上设置断点。
反汇编视图仅在活动的调试会话中可用。注意,底层调试扩展插件也需要有相应的支持。
目前,只有 C++和 Mock Debug可以支持反汇编视图。
从技术角度而言,VS Code 的反汇编视图实现了 DAP (Debug Adapter Protocol) 协议另外四个功能:
disassembly
请求,用以提供基于内存位置的反汇编源码。instructionPointerReference
属性。granularity
属性。setInstructionBreakpoints
请求。去年秋天,我们开始在 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
设置为 false
,以便在设置编辑器中支持对象。否则,设置编辑器会解读为复杂设置(不规律的设置),并将用户定向到设置 JSON 文件。
要在设置编辑器中添加多行字符串设置的支持,请将 "editPresentation": "multilineText"
作为键值配对添加到字符串设置中。将字符串设置更改为多行设置将导致设置编辑器在多行文本区域(而非单行输入框中)呈现设置值。
我们已经添加了下列新图标到 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
请求已经完成,现在可以在 Debug Adapter Protocol的 1.48 版和与之相对应的 npm 模块中使用。如果调试适配器具有 supportsWriteMemoryRequest
功能,客户端可以使用 writeMemory
请求将字节写入给定位置的内存。
memory
事件有一个新的提案,将在下一个里程碑中添加到 DAP 。
每个里程碑版本都附有新提议的 API,扩展插件的作者们可以试用它们。我们期待您的反馈。如果您想要尝鲜提议的新 API,请完成以下步骤:
package.json
文件中加入这一行: "enableProposedApi": true
。您将不能使用建议 API 发布扩展插件。因为新的版本可能会有重大变化,我们需要保证现有的扩展插件可以被继续使用。
group
属性存在于tasks.json
文件中定义的任务上,也通过任务 API 公开。 group
属性有一个 isDefault
属性,该属性直到现在在 API 中都不可用。该提案将isDefault
属性公开为TaskGroup
上的只读属性,以便扩展可以读取哪个任务是组的默认任务,但不能通过为组设置默认值来覆盖用户配置。
到目前为止,用于获取身份验证会话对象的getSession
API 从来没有能力要求用户需要再次登录。然而这对于使用 SAML/单点登录 (SSO) 体验的 GitHub 等身份验证服务是必需的,其中访问令牌最终会在 SSO 会话到期时失去对资源的访问权限。该提案为 AuthenticationGetSessionOptions
添加了另一个名为 forceRecreate
的属性,允许您要求用户再次登录。向用户显示类似于您指定 createIfNone
时显示的模式体验。
本月我们完成了从 Electron 的 webview 标签元素过渡到基于普通 <iframe>
元素的 webview 。这更好地协调了 VS Code 的 webviews 跨桌面和 web 的实现,也让我们删除了很多现在冗余的代码。
在这个里程碑版本中,我们完成了将 Electron 13 捆绑到 VS Code 的实验,这要感谢所有参与 Insiders 测试和自托管的参与者。这是 Chromium 91.0.4472.124 附带的主要 Electron 版本。此版本的 Node.js 版本没有变化,它仍然是 v14.16.0 。
随着我们准备让 VS Code 工作台启用 Electron 的沙盒功能,我们希望在 linux 上启用混合沙盒模式,且不在分布式软件包 deb 、rpm 、snap 、tar 存档中捆绑 cli 参数--no-sandbox
。Chromium 在 linux 上有一个多层沙盒模型。如果 Chromium 无法将命名空间沙盒用于第 1 层,它将尝试通过帮助程序 chrome-sandbox
来使用 setuid 沙盒。要使 setuid 二进制文件工作,它需要满足以下条件:
我们能够为 deb 和 rpm 包保留这些条件。目前无法获得 snap 的这些权限,我们有以下跟踪问题 https://github.com/microsoft/vscode/issues/127140 。
至于其他使用 tar 存档的应用程序,如果应用程序无法使用命名空间沙盒(这在容器内运行时可能会发生)它将失败并显示以下错误:
FATAL:setuid\_sandbox\_host.cc(158)]
找到了 SUID 沙盒助手二进制文件,但没有正确配置。而不是在没有沙盒的情况下运行,我现在正在中止程序。您需要确保 chrome-sandbox 由 root 用户拥有并且模式为 4755 。
如果发生这种情况,您可以使用以下两个选项之一来使其正常工作:
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 库,我们采用了他们的跟踪工具,这使得我们可以查看并且重复运行失败的烟雾测试。
1
IgniteWhite 2021-08-06 08:25:13 +08:00
Jupyter 的话 JupyterLab 比较好用。VSCode 的 Jupyter 插件可以期待一下,这个使用文本文件编辑 notebook 的功能看起来有点像 jupytext,应该也是方便 VCS 了
|
2
LiuJiang 2021-08-06 08:57:57 +08:00
好,问题来了,.jsx 的文件,import 引入的函数或组件,如何按 ctrl + 鼠标左键或其他方式,跳到其声明位置? .tsx 可以,.jsx 我 Google 了很久,没有找到。
|
3
CodeCodeStudy 2021-08-06 09:10:09 +08:00
Vue 项目,根据网上教程装了扩展,依然没有办法使用 ctrl + 鼠标左键跳转至声明
|
5
zzlit 2021-08-06 09:45:48 +08:00
我就想知道这个解决了没有 https://github.com/microsoft/vscode/issues/123056
|
7
yellowV2ex 2021-08-06 10:06:24 +08:00
然而依然不能把文件在新窗口打开
|
8
736531683 2021-08-06 10:07:57 +08:00
问一下,为什么 remote ssh 连接服务器没法用 intellicode 补全,本地可以,我看 issue 提了作者也没办法解决.有没有其他替代
|
9
calmWei 2021-08-06 10:26:28 +08:00
更新 1.58 以后,写 XML,属性冒号后面的智能提示没了,不知道有没有解决,现在只能强制降级到 1.57 了
|
10
fpure 2021-08-06 10:31:31 +08:00
1.59 把 Split JSON 设置编辑器的模糊搜索给砍掉了😡😡😡,微软砍刀部名不虚传👎👎👎
大家去 https://github.com/microsoft/vscode/issues/125952 下面点个👎吧 |
11
fpure 2021-08-06 10:35:54 +08:00
我又看了一下,Split JSON 设置编辑器不止砍掉了模糊搜索,还砍掉了快速复制设置项到自定义设置的铅笔图标😡😡😡,👴🤮了
|
12
fpure 2021-08-06 10:37:31 +08:00
做个人事吧,要砍去砍 GUI 不好吗,GUI 才是一个编辑器最大的技术债!
👍https://github.com/microsoft/vscode/issues/129594 |
13
azkaban 2021-08-06 11:03:37 +08:00
快进到以后只开 vscode 搞定一切开发
|
14
Akiya 2021-08-06 11:16:09 +08:00 1
快进到 vscode 成为新一代操作系统
|
16
Smash 2021-08-06 13:34:22 +08:00
vscode 可能是我见过更新得最频繁的开发工具了...😂 , 好多新功能我基本上都没有用到过.
|
17
kblacksheep 2021-08-06 17:00:17 +08:00
请教前端大佬们一个问题。我之前做自己项目的时候,前端用 vue 会经常无法跳转到定义的问题,按网上说的装插件也不好使,用的我很烦躁。。。后来换 webstorm 了就没有这个问题了,是我用的姿势不对还是 vsc 本身的问题?这个导致我后来很长一段时间不想打开 vsc🤣
|
19
jingslunt 2021-08-06 17:30:06 +08:00
|
23
feiandxs 2021-08-06 21:19:44 +08:00
不愧是摸鱼神器
|
24
chaleaoch 2021-08-06 23:49:34 +08:00
什么时候允许三栏布局啊...我看已经有 pr 了但是还没 merge
|
25
Nyarime 2021-08-06 23:51:45 +08:00
我在等待 AI 引用他人代码,哦不,AI 引用他人 BUG 的功能
|
26
chaleaoch 2021-08-06 23:55:25 +08:00
@IgniteWhite 说是话作为一个 web 后端开发 我一直没认识到 JupyterLab 或类似产品的意义在哪里. 除了做算法的.
|
27
IgniteWhite 2021-08-07 01:30:03 +08:00 via iPhone
@chaleaoch Jupyter 主要是面对数据科学从业者和各学科科研人员做的,和你说的一样,是做算法的
|
28
DiamondYuan 2021-08-07 17:36:19 +08:00 via iPhone
@Nyarime tabnine 插件
|
29
Nyarime 2021-08-07 18:26:24 +08:00
@DiamondYuan I wanna the bug for free
|
30
anjianshi 2021-08-08 17:09:43 +08:00
@LiuJiang alias 目录需要配置过,VS Code 才能知道它是跳到哪。
在项目根目录上加一个 `jsconfig.json` 里面带上 `{ "paths": { "@/*": ["./src/*"] } }` 路径根据你实际情况改。 这个文件是写给 VS Code 的项目配置文件,官方说明: https://code.visualstudio.com/docs/languages/jsconfig |