2016 年 10 月(版本 1.7)
1.7.2 恢复版本
我们今天发布了 1.7.2 版本,其中包括新版 TypeScript 服务器 (2.0.10)。服务器更新后,JavaScript 用户的“自动类型获取 (ATA)”功能将默认重新启用。此功能极大地改进了 JavaScript 项目中的 IntelliSense,无需手动安装 TypeScript 声明文件(.d.ts 文件)。此功能通过查询 npmjs 服务来检索所用模块的相关声明文件。有关此功能的更多详细信息,包括如何禁用此功能的详细信息,请参见这些发行说明的相关部分。
1.7.2 版本还添加了最终的 1.7 翻译,并修复了几个重要问题。
下载:Windows | Mac | Linux 64 位:.tar.gz .deb .rpm | Linux 32 位:.tar.gz .deb .rpm
1.7.1 恢复版本
我们正在发布 1.7.1 恢复版本,以禁用自动 JavaScript 类型文件获取功能。我们需要调整获取以避免 NPM 注册表上不必要的负载,我们正在与 TypeScript 和 npmjs.org 团队密切合作。我们预计将在未来的版本中启用此功能。
如果您对详细信息感到好奇,可以阅读我们的博客文章,其中描述了事件以及 NPM 和 VS Code 的缓解措施。
下载:Windows | Mac | Linux 64 位:.tar.gz .deb .rpm | Linux 32 位:.tar.gz .deb .rpm
10 月发布摘要
欢迎使用 Visual Studio Code 10 月版本。此版本中有许多重要的更新,我们希望您会喜欢,其中一些主要亮点包括
- 水平布局 - 以垂直或水平组排列您的编辑器。
- 键盘快捷键参考 - 新的可打印键盘快捷键 PDF 速查表。
- HTML 中的 CSS 自动完成 - 获取 HTML 中嵌入的 CSS 的丰富自动完成功能。
- 调试命中计数控制 - 设置断点命中计数条件。
- 简化 Node.js 调试 - 轻松配置您的 Node.js 调试会话。
- Sublime 和 Atom 的键映射 - 您现在可以在 VS Code 中使用这些著名的键盘快捷键。
- 禁用扩展 - 快速全局或为特定工作区禁用扩展。
- 改进的 TypeScript 和 JavaScript 语法 - Dark+ 主题现在为变量和函数引用着色。
- 扩展包 - 直接在扩展详细信息中查看扩展包的依赖项。
发布说明按以下与 VS Code 重点领域相关的部分进行排列。以下是一些进一步的更新
- 工作台 - 一些视图状态现在保存在用户设置中。从快速打开中打开多个文件。
- 编辑器 - 键盘快捷键参考,更精细的格式控制。
- 语言 - JavaScript 和 CSS 改进。
- 扩展 - 用于键映射和格式化程序的新类别,以便更轻松地搜索。
- Node.js 调试 - 多目标调试支持,新的调试设置。
- 扩展创作 - 支持扩展 CHANGELOG.md 文件。添加到编辑器选项卡上下文菜单。
工作台
水平布局
您现在可以将编辑器组的布局更改为垂直或水平。两种布局的行为与以前相同,允许您移动和调整编辑器和编辑器组的大小。
要为当前工作区启用水平布局,请使用
- 视图菜单中的切换编辑器组布局。
- 命令面板中的切换垂直/水平编辑器组布局。
- 打开的编辑器视图标题中的一个操作。
还有一个键盘快捷键 (⌥⌘0 (Windows、Linux Shift+Alt+0)) 可以快速在两种布局之间切换。
一旦您选择了布局,我们将为当前工作区保留它,并在重新启动后恢复它。
切换最大化面板
我们引入了一个全局工作台命令,可以最大化面板的大小(总高度的 80%)。如果面板已经最大化,此命令将缩小面板到其以前的大小。当您需要快速查看大量输出时,这非常方便。此命令目前未绑定到任何键盘快捷键,但您可以轻松添加自己的键绑定。
切换侧边栏和隐藏状态栏现在保存在用户设置中
我们更改了视图菜单中的一些切换,以更新您的用户设置文件,而不是在浏览器中保留其状态。这将使通过复制设置文件在不同的机器上恢复相同的状态变得更容易。
当您从视图菜单更改以下设置时,它们现在将在您的用户设置文件中更改
workbench.sideBar.location
用于控制侧边栏的位置(左或右)workbench.statusBar.visible
用于控制状态栏的可见性
此外,从视图菜单更改缩放级别现在会写入window.zoomLevel
。
从快速打开中打开多个文件
感谢Will Prater (@wprater),您现在只需按向右箭头键即可从快速打开中打开多个文件。这将在后台打开当前选定的文件,您可以继续从快速打开中选择文件。
编辑器
键盘快捷键参考
帮助 > 键盘快捷键参考会显示 VS Code 命令键盘快捷键的可打印 PDF 参考表。将此参考资料放在手边,您将很快成为 VS Code 高级用户。
这是 macOS 的版本
以下是三个平台特定版本的链接
注意:我们还添加了一个菜单命令,用于转到介绍视频(帮助 > 介绍视频)。
格式化文档/格式化选区
编辑器现在有两个明确的格式化操作:格式化文档 (⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I)) 和格式化选区 (⌘K ⌘F (Windows, Linux Ctrl+K Ctrl+F))。
我们还添加了新的配置选项,用于启用/禁用 JavaScript、TypeScript、JSON 和 HTML 的默认格式化程序。当您安装了提供相同语言格式化功能的其他扩展时,请使用这些选项。
我们已向 Marketplace 添加了一个新的Formatters
类别,以便您可以轻松搜索和查找源代码格式化扩展。
语言
更好的 JavaScript IntelliSense
注意:此功能在 1.7.1 版本中已禁用。请继续阅读以了解未来版本中将推出什么。
VS Code 使用 TypeScript 语言服务器在 JavaScript 文件中提供 IntelliSense。以前,您必须创建一个jsconfig.json
文件。您还必须手动安装所有正在使用的模块和库的类型(类型声明)文件。这不是一项容易的工作,特别是当您是纯 JavaScript 开发人员时。
我们与 TypeScript 团队的朋友讨论后,他们提出了“自动类型获取”。ATA 使类型文件几乎不可见。启用了 ATA 的 TypeScript 语言服务器会监视您的package.json
文件,并自动将所有依赖项的类型文件安装到文件系统上的缓存中。当它找到对知名客户端库的引用时,它也会执行相同的操作。当您随后调用 IntelliSense 时,TypeScript 服务器会使用缓存中的类型文件。缓存由所有工作区共享。如果没有jsconfig.json
文件,TypeScript 服务器假定您的工作区中的所有内容都属于同一个项目。
我们认为这太酷了,我们希望您尽快体验到它。我们对 ATA 的集成仍然有些粗糙,但我们决定默认启用它。如果您遇到问题,可以通过在用户设置中将typescript.disableAutomaticTypeAcquisition
设置为true
来将其关闭。
以下是使用 ATA 时应注意的几点
- ATA 向后兼容。如果您有
typings
文件夹或使用npm
安装了类型,则这些类型优先于自动获取的类型文件。 - ATA 获取最新可用版本的类型文件。如果您依赖旧版本的库或模块,则库或模块公开的实际 API 与类型文件中描述的 API 之间可能存在差异。如果您需要特定版本的类型文件,可以手动安装:
npm install @types/<module name>@x.y.z
。 - 越来越多的 npm 模块捆绑了它们的类型文件,这意味着获取类型的唯一方法是安装模块。ATA 不会为您安装 npm 模块,因此您必须自己完成。
- 从
package.json
文件中对依赖项进行更改到获取相应的类型文件并可用于 IntelliSense 之间存在短暂的延迟。 - 在实现中,ATA 功能首先向 npmjs 查询包含已知声明文件列表的模块。如果您的项目包含任何这些模块,它们的声明文件将被拉取并添加到全局缓存中。
HTML 中的 CSS 补全
您现在可以看到 CSS 语言功能,例如 HTML 中嵌入的 CSS 样式的代码补全、验证和颜色注释。
改进的 TypeScript 和 JavaScript 语法
TypeScript 和 JavaScript 语法高亮基于 TypeScript 团队编写的TypeScript textmate 语法。最近几个月,该语法已完全重写。
主要目标是尽可能多地解决已报告的问题。此外,我们希望通过生成更接近其他流行 JavaScript 语法(如Atom 语法)的范围,同时仍支持 JavaScript React 语法等功能,从而提供更好的现有颜色主题体验。
由于这项工作,100 多个问题已得到修复,包括报告变量和函数引用的请求。我们决定利用新范围,现在还在我们的默认深色和浅色 Plus 主题中为变量和函数引用着色。希望您喜欢!
注意:如果您已经一直在帮助我们使用最新 TypeScript 和 JavaScript 语法扩展测试最新语法:您现在可以卸载该扩展。
Linter 扩展
vscode-eslint
和vscode-tslint
扩展现在提供设置,以便在保存时自动纠正可修复的警告。
{
"eslint.autoFixOnSave": true,
"tslint.autoFixOnSave": true
}
注意:当files.autoSave
设置为afterDelay
时,此设置将被忽略。
扩展
键映射类别
键盘快捷键对于提高工作效率至关重要,改变键盘使用习惯可能很困难。为了解决这个问题,我们添加了两个新扩展,并在 Marketplace 中引入了一个新类别Keymaps
。这样做的目的是通过消除学习新键盘快捷键的需要,使在编辑器之间切换变得更容易。
我们为Atom和Sublime Text构建了一个扩展。我们发现了一些最流行的键盘快捷键,并希望您就我们缺少的内容提供反馈。如果我们错过了某个键盘快捷键,请在仓库中提交问题或提出 PR。
此外,您可以使用keybindings
贡献点创建自己的键映射扩展,并将其添加到Keymaps
类别中。
格式化程序类别
存在许多提供源代码格式化功能的扩展。一些最流行的格式化程序拥有超过 10 万次安装!我们希望让您更容易找到格式化程序,因此我们在 Marketplace 中添加了一个新类别,自然地称为Formatters
。立即在 Marketplace 上搜索并安装一个Formatter
。
以下是我们最喜欢的一些
禁用扩展
通常您有不止一个工作区,并且安装了各种扩展来支持这些工作区。大多数情况下,这些扩展仅限于单个工作区,而不需要用于其他工作区。例如,如果您有 JavaScript 和 Go 语言工作区,则在 Go 工作区中不需要 JavaScript linting 扩展,反之亦然。在此版本中,您现在可以只运行您认为工作区必需的扩展,并禁用其余的扩展。如果您不想卸载它们,并且不想让它们运行,您还可以禁用整个 VS Code 应用程序的扩展。
您还可以通过 VS Code 中的几次点击禁用或启用所有扩展。
扩展包
上一个版本我们引入了“扩展包”,它们是依赖于其他扩展的扩展。在此版本中,我们为扩展编辑器添加了一个新选项卡,以显示安装包时安装的这些依赖项。
当您卸载扩展包时,其所有引用的依赖扩展也会被卸载。
Node 调试
简化的启动配置
为了使 Node.js 调试的设置尽可能简单,我们尝试简化初始的“launch.json”体验
- 必需但很少更改的属性现在以灰色呈现,以使其更明显,即在最常见的情况下无需更改它们。
- 不常用属性(具有良好的默认值)已从初始配置中删除,以减少“噪音”。这些属性仍然可以通过 IntelliSense 轻松发现。
- 添加了注释和在线文档链接。
- 在线调试文档已重写和改进。
注意:由于我们只能更改 VS Code 内置的 Node.js 调试器,因此我们依赖其他调试扩展的作者做类似的事情(如果需要)。
命中计数条件断点
VS Code 现在支持为断点设置“命中计数条件”(除了之前引入的“表达式条件”)。“命中计数条件”控制断点在“中断”执行之前需要命中的次数。
“命中计数条件”是否受尊重以及表达式的确切语法取决于所使用的调试器扩展。在此里程碑中,只有内置的 Node.js 调试器支持命中计数(但我们希望其他调试器扩展很快会跟进)。
Node.js 调试器支持的命中计数语法可以是整数或以下运算符之一:<
、<=
、=
、>
、>=
、%
,后跟一个整数。
一些示例
>10
始终在命中 10 次后中断<3
仅在前两次命中时中断10
等同于>=10
%2
每隔一次命中时中断
多目标调试
10 月版本包含“多目标调试”的早期实现,即单个 VS Code 实例(和单个项目文件夹)中可以同时激活多个调试会话。
此功能有助于以下场景
- 同时调试扩展及其调试适配器和/或语言服务器。
- 从单个项目文件夹调试客户端和服务器。
- 调试集群程序。
注意:在此里程碑中,重点是正确实现多目标调试的内部抽象,而不是如何将其呈现在 UI 中。因此,多目标调试的 UI 及其设置方式具有高度实验性,并且在接下来的里程碑中肯定会发生变化。
要启用“多目标调试”,请创建一个类型为composite
的新启动配置,并添加一个数组类型属性configurationNames
。在该属性下,列出应并行启动的其他启动配置的名称。
启动composite
配置后,各个会话将作为顶级元素显示在“调用堆栈”视图中。操作(例如,浮动调试小部件中的所有操作)始终在“调用堆栈”视图中当前选定的会话上执行。
调试设置
我们引入了以下新设置
debug.allowBreakpointsEverywhere
- 允许在任何文件(而不仅仅是显式注册的文件)中设置断点。这对于使用现有调试器(例如 Node.js 调试器)调试新的(转译的)语言很有用。debug.openExplorerOnEnd
- 控制调试会话结束时是否自动打开资源管理器。
扩展开发
破坏性更改:MarkedString[]
语义
返回MarkedString | MarkedString[]
的 API 相关实现已更改语义。每个MarkedString
将与其他MarkedString
通过水平线视觉分隔开来。HoverProvider
和Decoration
API 都受到此影响。
更改日志
您现在可以直接在扩展详细信息视图中显示扩展的 CHANGELOG.md。
我们建议扩展作者将其扩展的 README.md 中任何现有的更改日志移动到单独的 CHANGELOG.md 文件中。与 README.md 类似,如果 CHANGELOG.md 放置在扩展的工作区根目录中,它将由vsce
发布工具自动包含。
为编辑器选项卡上下文菜单提供菜单项
我们添加了一个额外的位置,扩展可以在其中贡献菜单项,即编辑器选项卡的上下文菜单(当选项卡被禁用时也有效)。此处贡献的相关菜单路径是editor/title/context
。
例如
"commands": [{
"command": "doSomething",
"title": "Do Something"
}],
"menus": {
"editor/title/context": [
{
"command": "doSomething"
}
]
}
onDidChangeVisibleTextEditors 事件
我们添加了一个onDidChangeVisibleTextEditors
事件,该事件在可见编辑器列表更改时触发。
立即更新:使用最新的 vscode.d.ts
一如既往,我们扩展 API 的最新版本在vscode.d.ts文件中定义。
注意:当您更新您的扩展以使用 API 版本 1.7.0 或更高版本时,请确保您使用最新版本的vscode-node-module (^1.0.3),并确保使用 TypeScript 2.0。
请阅读此处以了解如何将现有扩展迁移到最新的 vscode 模块。
新命令
键 | 命令 | 命令 ID |
---|---|---|
⌥⌘0 (Windows、Linux Shift+Alt+0) | 切换编辑器组布局 | workbench.action.toggleEditorGroupLayout |
未分配 |
切换最大化面板 | workbench.action.toggleMaximizedPanel |
格式化 | ||
⇧⌥F (Windows Shift+Alt+F, Linux Ctrl+Shift+I) | 格式化文档 | editor.action.formatDocument |
⌘K ⌘F (Windows、Linux Ctrl+K Ctrl+F) | 格式化选区 | editor.action.formatSelection |
集成终端 | ||
⌘Home (Windows Ctrl+Home, Linux Shift+Home) | 滚动到顶部 | workbench.action.terminal.scrollToTop |
⌘End (Windows Ctrl+End, Linux Shift+End) | 滚动到底部 | workbench.action.terminal.scrollToBottom |
显著变化
- 929:Windows 10:焦点未置于窗口,但任务栏闪烁
- 2814:Windows:在资源管理器中显示功能不再将资源管理器窗口置于 vscode 前面
- 6466:使用 cmder 时,在命令提示符中打开无法打开 cwd
- 10210:无法复制调试元素(如异常消息)的值
- 11334 和 13229:改进终端 IME 支持
- 11431:RPM 包在 PATH 中缺少快捷方式
- 12036:在带触摸屏的系统上使用 VS Code 时非常卡顿
- 12260:终端中没有足够的存储空间来处理此命令
- 12969:HTML:script 标签内的注释不再对 script 语言敏感
- 13554:集成终端偶尔会换行
- 14102:默认折叠默认设置并记住编辑器状态
由于13919,Windows 中的文件扩展名关联已损坏。您需要重置文件扩展名关联才能使用 VS Code 打开。
这些是针对 1.7 更新的已关闭错误,这些是已关闭功能请求。
对扩展的贡献
我们的团队维护或贡献了许多 VS Code 扩展。最值得注意的是
感谢
最后但同样重要的是,衷心感谢!以下帮助使 VS Code 变得更好的各位:
- @barakd:Git 快速打开应更正无效分支名称 PR #12194
- Christian Alexander (@ChristianAlexander)
- Cliff Koh (@cliffkoh):修复拼写错误和一致性问题 PR #14078
- Sergey Shakhnazarov (@daserge):避免退出时出现“写入 EPIPE process.send”错误 PR #13774
- xzper (@f111fei):修复 #13670 PR #13739
- @greams:为 --list-extensions arg 添加选项 PR #13131
- Kei Son (@heycalmdown):为当前窗口添加指示器 PR #13113
- Huachao Mao (@Huachao):更新 handlebars 块注释符号 PR #12271
- Michael Hudson (@Huddo121):增加 IAction.isAction() 测试覆盖率 PR #13992
- Yuki Ueda (@Ikuyadeu):修复 ini #13648 PR #13923
- Jeong Woo Chang (@inspiredjw):无法读取 null 的 'uri' 属性修复 PR #13263
- Jess Chadwick (@jchadwick)
- Kai Wood (@kaiwood):添加设置以防止复制空选区 PR #13678
- Krzysztof Cieślak (@Krzysztof-Cieslak)
- Michael (@michaelchiche):修复类型定义中的拼写错误 PR #13159
- Michael Chou (@MikeChou):在 Linux 启动脚本中递归跟随符号链接 PR #14046
- Denis Malinochkin (@mrmlnc)
- Renfred Harper (@renfredxh):为只读编辑器启用行高亮显示 PR #14022
- Robin Munn (@rmunn):删除 LF 的不正确 ANSI 转义码 PR #13345
- Sirisak Lueangsaksri (@spywhere):对已安装的扩展列表进行排序 PR #13399
- Tereza Tomcova (@the-ress)
- Ivan Samoylenko (@The-Smallest):project.json 中的拼写错误 PR #13461
- Will Prater (@wprater)
- Toru Nagashima (@mysticatea):修复零位置支持 PR-ESLint #153
- Dario Fuzinato (@fussinatto):修复 readme 中的拼写错误 PR-ESLint #157
- Morton Fox (@mortonfox):修复许可证链接 PR-LSP #74
- Asad Saeeduddin (@masaeedu):修复协议文档中的拼写错误 PR-LSP #85
- Anton Kosyakov (@akosyakov)
- 修复 Microsoft/language-server-protocol #87 PR-LSP #90
- 修复问题 #72 和 #78 PR-LSP #91
- Richard Lasjunies (@rlasjunies):支持 TSLint 引擎提供的修复 PR #96
- Robert Stoll (@robstoll):修复正则表达式模式,缺少违反规则 PR #107