2020 年 10 月(版本 1.51)
更新 1.51.1:更新解决了这些 问题。
下载:Windows:x64 Arm64 | Mac:Intel | Linux:deb rpm tarball Arm snap
欢迎使用 2020 年 10 月发布的 Visual Studio Code。如在 10 月迭代计划 中宣布的那样,我们专注于处理 GitHub 问题和拉取请求,这些问题和拉取请求记录在我们的问题整理指南中。
我们还与 GitHub 的合作伙伴合作开发了 GitHub Codespaces,其最终比最初预期更复杂。为此,我们将继续在 11 月份的迭代中的一部分时间内进行问题整理工作。
在此问题整理里程碑期间,我们还解决了几个功能请求和社区 拉取请求。继续阅读以了解有关新功能和设置的更多信息。
工作区
更突出的固定标签
固定标签现在将始终显示其固定图标,即使处于非活动状态,以使它们更容易识别。如果编辑器同时被固定且包含未保存的更改,则图标将反映这两种状态。
扩展树使用自定义悬停
我们现在使用自定义悬停而不是在扩展树视图中使用原生工具提示,它在跨平台上保持一致,并且更适合整体用户体验。
在不同步的情况下安装扩展
您现在可以在设置同步启用时在不同步的情况下安装扩展。
主题:GitHub 浅色主题
从资源管理器安装扩展
VS Code 现在支持从资源管理器安装扩展 VSIX 文件,方法是右键单击 VSIX 文件并选择“安装扩展 VSIX”上下文菜单项。
输入模糊命令
现在提供一个新的内部 workbench.action.blur
命令,该命令将从任何可聚焦输入中移除焦点。您可以在“键盘快捷键首选项”中为该命令分配键盘快捷键。
集成终端
本地回显
传统上,在终端中进行修改需要将信息发送到终端进程,对其进行处理,并将其返回到 VS Code 才能生效。当您使用与 SSH 服务器 或 Codespace 的连接质量较差或距离较远时,这可能会很慢。
此版本为终端添加了“本地回显”模式,该模式尝试预测本地进行的修改和光标移动,并在 UI 中显示它们,而无需向服务器进行往返通信。默认情况下,预测的字符显示为“淡化”状态。
您可以使用两个设置来配置此选项
terminal.integrated.localEchoLatencyThreshold
配置检测到的延迟阈值(以毫秒为单位),在此阈值下,本地回显将被激活。可以将其设置为0
以始终启用此功能,或设置为-1
以禁用它。默认值为30
。terminal.integrated.localEchoStyle
配置本地字符的样式或颜色,默认值为dim
。
IntelliSense
可调整大小的建议
在此里程碑中,我们对建议 UI 进行了一些改进。最重要的是,它现在可以调整大小。拖动边框或角点以调整控件的大小。
主题:GitHub 浅色主题,字体:FiraCode
建议列表的大小将保存并在会话之间恢复。详细信息窗格的大小只保存每个会话,因为该大小往往变化更大。此外,editor.suggest.maxVisibleSuggestions
设置已过时。
建议的状态栏
建议控件现在还可以在窗口底部显示自己的状态栏。使用 editor.suggest.showStatusBar
设置启用它。它使切换详细信息更加简单,并显示完成是否支持插入、替换或两者。
主题:GitHub 浅色主题,字体:FiraCode
在上面的示例中,选择“插入”将导致 Math.floorceil
,选择“替换”将导致 Math.floor
。
新的 editor.suggest.insertMode
设置允许您配置是更喜欢插入还是替换。当建议支持两者时,您的偏好将是默认值。
移动光标以选择建议
最后但并非最不重要的一点是,您现在可以在显示建议时移动光标。例如,您可以在单词末尾触发建议,向左移动以查看更多建议,然后使用替换来覆盖该单词。
主题:GitHub 浅色主题
Emmet
Emmet 中的自定义片段已回归。此外,片段现在会在保存片段文件或更新 emmet.extensionsPath
设置时自动刷新。
源代码管理
源代码管理输入框保存提交消息历史记录
这解决了 功能请求,以导航 SCM 提交历史记录。按 ↑(Windows,Linux Up) 和 ↓(Windows,Linux Down) 以分别显示先前和下一个提交。要直接移动到输入框的第一个和最后一个位置,请按 Alt 以及相应的箭头键。
Git:子菜单中的标签命令
已将与标签相关的 Git 命令添加到“...” Git 菜单中。
Git:变基命令
已添加一个新的“Git:变基分支...”命令,它允许您使用 UI 变基分支。
Git:递归克隆命令
使用“Git:克隆(递归)”命令,您现在可以递归地克隆 Git 存储库,包括其嵌套的 Git 子模块。
时间线:表情符号简写渲染
我们现在在时间线视图中渲染表情符号简写,例如 :smile:
。
语言
Markdown 智能选择
使用以下新命令在 Markdown 文档中扩展和缩小选择
- 扩展:⌃⇧⌘→(Windows,Linux Shift+Alt+Right)
- 缩小:⌃⇧⌘←(Windows,Linux Shift+Alt+Left)
选择适用于以下内容,并遵循传统的层次结构模式
- 标题
- 列表
- 块引用
- 围栏代码块
- Html 代码块
- 段落
JavaScript 和 TypeScript 的空括号格式化选项
新的 javascript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces
和 typescript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces
格式化配置选项控制是否在空括号之间插入空格。这些设置的默认值为 true。例如,对于 JavaScript
class Foo {
doFoo() { }
}
设置 "javascript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces": false
并格式化代码将导致
class Foo {
doFoo() {} // Notice that the space has been removed
}
浏览器支持
下载文件夹(Edge,Chrome)
利用新的 文件系统访问 API,在浏览器中运行的 VS Code 现在可以为资源管理器中的文件夹提供下载操作,以将所有文件和文件夹下载到磁盘。
注意:这需要最新版本的 Microsoft Edge 或 Google Chrome。
打开工作区通知
如果您打开包含顶层 .code-workspace
文件的文件夹,您现在将看到一条通知,询问您是否要打开它。这在 VS Code 桌面版中一直都是如此,现在在浏览器中也能正常工作了。
防止意外关闭
添加了一个新的设置 window.confirmBeforeClose
,在关闭或离开工作区之前显示确认对话框。
可能的值是
keyboardOnly
仅当您使用键盘快捷键关闭时(例如,⌘W(Windows,Linux Alt+F4))才会显示确认。 (默认)always
:即使您通过鼠标手势关闭,也会始终显示确认对话框。never
:永远不会显示确认。
注意:此设置可能无法涵盖所有情况。浏览器可能仍会决定关闭选项卡或窗口而无需确认。
对扩展的贡献
GitHub 拉取请求和问题
继续开发 GitHub 拉取请求和问题 扩展,该扩展允许您处理、创建和管理拉取请求和问题。
要了解所有新功能和更新,您可以查看扩展 0.21.0 版本的完整变更日志。
远程开发
远程开发扩展的开发工作仍在继续,这些扩展允许您使用容器、远程机器或 Windows Subsystem for Linux (WSL) 作为功能齐全的开发环境。
1.51 版本中的主要功能包括
- 能够持久化/重新连接到终端会话。
- 改进的端口转发体验。
您可以在 远程开发发行说明 中了解新的扩展功能和错误修复。
预览功能
预览功能尚未准备好发布,但功能足够强大,可以供您使用。欢迎您在开发过程中尽早提供反馈。
设置同步
设置同步现在同步扩展的全局状态。扩展将必须使用新引入的 setKeysForSync API 提供要同步的状态。
记住代理凭据
我们正在彻底改造当网络连接需要使用代理进行身份验证时显示的登录对话框。新的设置 window.enableExperimentalProxyLoginDialog: true
将启用这种新体验,我们计划在将来的版本中将其设置为默认值。
主题:GitHub 浅色主题
该对话框将出现在 VS Code 窗口内,并提供一种记住凭据的方法,这样您就不必每次启动 VS Code 时都提供它们。凭据将存储在操作系统标准凭据存储区(macOS 上的钥匙串、Windows 上的 Windows 凭据管理器和 Linux 上的 gnome 密钥环)中。
我们仍然只在每次会话中显示此对话框一次,但在将来可能会重新考虑此决定。如果选择记住的凭据无效,您将再次看到该对话框。再次提供它们可以让您更改它们。
请启用此选项,如果您发现某些功能无法正常工作,请通过我们的 问题跟踪器 告诉我们。
TypeScript 4.1 beta 支持
VS Code 支持 TypeScript 4.1 beta 和夜间构建版本。4.1 更新带来了一些新的 TypeScript 语言功能,例如对 递归条件类型 的支持,以及工具改进。一个重点领域是 添加对 JSDoc 注释中 @see
标签的初始支持。
要开始使用 TypeScript 4.1 夜间构建版本,只需安装 TypeScript Nightly 扩展。请分享您的反馈,如果您遇到任何与 TypeScript 4.1 相关的错误,请告诉我们。
扩展开发
更新的扩展示例
我们已经更新了一些 扩展示例,以包含连接到我们的颜色主题令牌的 VS Code 默认样式。这意味着常见元素(文本、按钮、输入)将是可主题化的,并将与产品中的默认样式相匹配。以下是包含此
树中的 Codicon 颜色
随着 ThemeIcon
颜色 API 的最终确定,扩展作者可以在自定义树视图中使用主题颜色在 codicon 上。
同步全局状态
扩展现在可以通过提供键来同步其全局状态,这些键的值在启用设置同步时应该同步,使用 globalState
备忘录中新引入的 setKeysForSync
API。
/**
* Set the keys whose values should be synchronized across devices when synchronizing user-data
* like configuration, extensions, and mementos.
*
* Note that this function defines the whole set of keys whose values are synchronized:
* - calling it with an empty array stops synchronization for this memento
* - calling it with a non-empty array replaces all keys whose values are synchronized
*
* For any given set of keys this function needs to be called only once but there is no harm in
* repeatedly calling it.
*
* @param keys The set of keys whose values are synced.
*/
setKeysForSync(keys: string[]): void;
评论线程回复按钮的可见性
评论 扩展现在可以使用一个新属性 CommentThread#canReply
来控制评论线程中回复按钮的可见性。当它设置为 false
时,用户将看不到评论线程中的回复按钮或评论框。
建议的扩展 API
每个里程碑都包含新的提议 API,扩展作者可以尝试它们。和往常一样,我们希望收到您的反馈。这是您尝试提议的 API 的方法
- 您必须使用 Insiders,因为提议的 API 经常更改。
- 您的扩展的
package.json
文件中必须包含以下行:"enableProposedApi": true
。 - 将 vscode.proposed.d.ts 文件的最新版本复制到您项目的源代码位置。
您无法发布使用提议的 API 的扩展。在下一个版本中可能会出现重大更改,我们绝不希望破坏现有扩展。
折叠范围提供程序更改事件
折叠范围提供程序可以使用 onDidChangeFoldingRanges
事件向编辑器发出信号,表明折叠范围需要更新。
有关更多详细信息并提供反馈,请使用 问题 #108929。
密码 API
作为对 身份验证提供程序 的持续工作的一部分,我们引入了用于存储和检索敏感信息的 API。在内部,这充当 VS Code 用于存储机密的 keytar 库的包装器。
/**
* Retrieve a password that was stored with key. Returns undefined if there
* is no password matching that key.
* @param key The key the password was stored under.
*/
export function getPassword(key: string): Thenable<string | undefined>;
/**
* Store a password under a given key.
* @param key The key to store the password under
* @param value The password
*/
export function setPassword(key: string, value: string): Thenable<void>;
/**
* Remove a password from storage.
* @param key The key the password was stored under.
*/
export function deletePassword(key: string): Thenable<void>;
/**
* Fires when a password is set or deleted.
*/
export const onDidChangePassword: Event<void>;
工程
使 VS Code 符合 Trusted Types
我们一直在努力使 VS Code 符合“Trusted Types”。目标是防止基于 DOM 的跨站点脚本漏洞。您可以在 web.dev 的 Trusted Types 网站 上了解更多关于 trusted types 的信息,并在 问题 #103699 中关注我们的进展。
文档
入门
我们正在专注于如何使编辑器的入门变得更容易。我们创建了一个新的 "学习编码" 登陆页面,其中包含编码包和针对编码新手的新内容。我们还在 code.visualstudio.com/learn 上创建了新的学生友好型视频和资源。
新命令
键 | 命令 | 命令 ID |
---|---|---|
将焦点移至左侧编辑器组(不循环) | workbench.action.focusLeftGroupWithoutWrap |
|
将焦点移至右侧编辑器组(不循环) | workbench.action.focusRightGroupWithoutWrap |
|
将焦点移至上方编辑器组(不循环) | workbench.action.focusAboveGroupWithoutWrap |
|
将焦点移至下方编辑器组(不循环) | workbench.action.focusBelowGroupWithoutWrap |
|
将焦点移至活动栏 | workbench.action.focusActivityBar |
重要修复
- 43819:Windows:删除包含正在使用的文件的文件夹时,没有显示错误消息
- 71315:删除文件后应保持行焦点
- 96522:多根工作区中启动配置的用户输入变量不起作用
- 100255:移动文件应直接使用它之前的内容加载模型
- 108578:具有 onDebugDynamicConfigurations 的扩展在 v1.50 启动时会急切地激活
- 109088:为文件夹发送
vscode.workspace.onWillCreateFiles/onDidCreateFiles
事件 - 109226:调试悬停在展开/折叠时移动
感谢
最后但并非最不重要的,要感谢本月为 VS Code 做出贡献的所有人
对我们的问题跟踪的贡献
- John Murray (@gjsjohnmurray)
- Alexander (@usernamehw)
- Andrii Dieiev (@IllusionMH)
- ArturoDent (@ArturoDent)
对 vscode
的贡献
- Justin Steven (@justinsteven):(在 1.49.3 中修复)针对 CVE-2020-16881 的修复可以绕过 PR #107952
- Ashkan (@a5hk):关闭 #97890 PR #108779
- Daniel Huth (@Agreon):添加非循环编辑器组焦点操作 PR #108071
- Andrey Sinitsyn (@asn007):fix(git):在 win32 上添加、回滚文件或清理存储库时出现致命错误 [#108690] PR #108691
- Jordan Bayles (@baylesj):添加 Git:递归克隆选项 PR #109133
- Takanori Oishi (@bicstone)
- 应用语言包时,UI 项的顺序不正确 PR #109433
- Git:将标签添加到 "..." 菜单 PR #109282
- Borja Zarco (@bzarco):修复启动配置输入变量解析。 PR #97440
- Dhairya Nadapara (@dhairyanadapara):在 FindInFile 接口中添加保留大小写和排除设置 PR #107910
- Evan Krause (@evangrayk):隐藏未展开的注释时,不要将焦点设置到编辑器 PR #97101
- Fons van der Plas (@fonsp):消息“您要将所有更改暂存吗?” PR #109272
- John Murray (@gjsjohnmurray):修复 #108673 将 FileSystemProvider 错误消息放入 settings.json 创建失败通知 PR #108694
- matvii (@hodovani): 将
map
替换为forEach
PR #109217 - Jean Pierre (@jeanp413)
- 修复了在通知上中键单击有时会粘贴剪贴板内容的问题 PR #109349
- 修复了当配置目标不是用户时无法禁用文件自动保存的问题 PR #109278
- 在 ChangeEncodingAction 中以流的形式读取文件内容 PR #108052
- 修复了大纲视图元素溢出的问题 PR #108038
- Kenny Smith (@kjs3): MacOS 上的垃圾桶/删除键绑定到向前删除 PR #108863
- Li Xueli (@mixj93): 修复:删除无标题编辑器标签中的多余空格 PR #108039
- @Nafana: 以 ^ 开头的 Markdown 引用链接不应可点击 PR #108015
- Pierre Papin (@pi-r-p): 修复 Web 视图中的下载问题 PR #108603
- Rakib Fiha (@RakibFiha): 将 shebang 更改为与 code.sh 相同 PR #109372
- Ryan Clarke (@ryanclarke): 为 IConfigurationPropertySchema 添加新属性 PR #108120
- Sebastian Andil (@selrond): 修复 git 包中
No Nerify
的拼写错误 PR #108329 - Simon Siefke (@SimonSiefke): 修复拼写错误:eventLister -> eventListener PR #108066
- Tomer Stav (@tomerstav)
- 将当前分支重新基线到另一个分支 PR #108913
- 向 showOptions 添加可选参数 newEditorGroup PR #107555
- 注意:最终没有合并此内容,但我们仍然感谢您的工作。
- Tony Xia (@tony-xia): Persisten -> Persistent PR #108389
- @turara: 为“保留大小写”替换选项添加快捷键 PR #107597
- @vivekmthr: CodeLens 在鼠标抬起时激活 #107736 PR #108323
对 vscode-json-languageservice
的贡献
- Albert Nigmatzianov (@bogem): 改善自述文件 PR #78
对 vscode-html-languageservice
的贡献
- Jaime Oliveira (@IxquitilisSaid): 更新 beautify-html wrap_attributes 文档 PR #92
- Nicholas Steven Darmawan (@steve1998): 为 HTML 实体实现悬停 PR #89
对 vscode-css-languageservice
的贡献
对 vscode-eslint
的贡献
- Brandon Mills (@btmills): 为 eslint.probe 默认文档添加 Markdown PR #925
- Brad Zacher (@bradzacher): 通过指示这是一个仅工作区扩展来支持远程开发 PR #1084
- Clément Tessier (@ctessier): 修复 README.md 中的拼写错误 PR #1105
对 language-server-protocol
的贡献
- @KamasamaK
- Remy Suen (@rcjsuen): 将 textDocument/semanticTokens 中的斜杠更正为文本 PR #1111
- Andreas Matthias (@AndreasMatthias): 转义美元符号。 PR #1124
对 vscode-emmet-helper
的贡献
- Yasar Siddiqui (@yasarsid): 对于 d: 的 Emmet 扩展,应扩展为“display: block”,而不是“display: grid” PR #35
对 lsif-node
的贡献
- Noah Santschi-Cooney (@Strum355): lsif-util: 通过在顶点额外信息部分中将 \" 替换为 " 来修复 #70 PR #112
对 debug-adapter-protocol
的贡献
- Jonah Graham (@jonahgraham): 错误 #122: ProgressStartEvent 的 requestId 是一个整数 PR #123
- Mathias Fußenegger (@mfussenegger): 将 nvim-dap 添加到工具页面 PR #140
- Suzy Mueller (@suzmue): 更新 adapters.md 中的 Go 调试扩展信息 PR #142
- Ethan Reesor (@firelizzard18): 添加 byebug-dap 和 ruby-dap PR #144
对 vscode-vsce
的贡献
- James George (@jamesgeorge007): 修复:处理未知参数 PR #503
对 vscode-js-debug
的贡献
- hp8wvvvgnj6asjm7: 在不支持的操作系统上运行 Node.js 时调试器无法工作 PR #791