August 2018 (version 1.27)

更新1.27.2 :此更新解决了这些问题 .

下载:Windows: 用户 系统 | Mac | Linux 64位: deb rpm tarball | Linux 32位: deb rpm tarball


欢迎使用Visual Studio Code的2018年8月版. 我们希望您喜欢此版本中的许多重要更新,其中一些重要的重点包括:

如果您想在线阅读这些发行说明,请访问code.visualstudio.com上的更新 .
您还可以查看来自Cloud Developer Advocate Brian Clark的 1.27版本重点视频 .

有问必答:希望尽快看到新功能? 您可以下载每晚的Insiders内部版本,并在可用时立即尝试最新更新. 有关最新的Visual Studio Code新闻,更新和内容,请在Twitter @code上关注我们!

Workbench

Settings editor

在过去的几个月中,我们一直在开发用于编辑设置的GUI. 在1.27中,我们将其设为默认设置编辑器.

Settings UI

您仍然可以通过使用" 打开设置(JSON) "命令或通过使用"workbench.settings.editor"设置更改默认设置编辑器来访问JSON设置编辑器.

我们本月所做的一项改进是通过将设置值描述( enumDescriptions )移到自定义下拉控件中来清理UI:

dropdown

现在,已修改的设置以蓝线表示,就像编辑器中的已修改线一样. 齿轮图标会打开一个上下文菜单,其中包含一个选项,可将设置重置为其默认值.

modified indicator and context menu

现在将验证设置值,并显示所有验证错误.

validation error

现在,目录在搜索过程中将保持可见,并进行过滤以仅显示具有匹配项的类别. 您可以单击一个类别以将结果过滤为仅该类别下的设置. 如果您希望在搜索过程中隐藏目录,请将"workbench.settings.settingsSearchTocBehavior"设置为"hidden" .

settings search

当您搜索设置时,由Bing支持的搜索服务仍会提供它认为相关的结果. 现在,该服务还将向您显示具有相关设置的Marketplace扩展. 您会在设置搜索结果的底部看到一个按钮, 显示匹配的扩展程序 . 单击后,"扩展"视图将打开并显示匹配的扩展.

extension settings

Custom title bar and menus on Windows and Linux

同样,在过去的几次迭代中,我们一直在努力改善Windows和Linux上标题栏和菜单的外观和可用性. 在此迭代中,我们将删除预览标签,以期使其尽快在Windows上成为默认体验. 要启用此功能,可以将设置"window.titleBarStyle"设置为"custom" .

Custom Title Bar and Menus

与默认值相比,新体验具有以下优点:

  • 整个产品中的标题栏,菜单栏和上下文菜单. 这意味着您的黑暗主题保持黑暗!
  • 菜单栏中的键盘导航效果更好. 我们使使用键盘在菜单之间进行切换和使用菜单助记符变得更加容易.
  • 较少干扰的菜单栏. 将"window.menuBarVisibility"设置为"toggle"时,新体验更加紧凑,震动更少.
  • 更好的可访问性. 解决了一些可访问性问题,以提高屏幕阅读器的菜单可用性.

由于我们希望将这种新体验作为Windows的默认设置,因此我们建议您尝试一下并向我们发送您的反馈,以便我们提供最佳的体验.

Breadcrumbs improvements

We have tweaked the new breadcrumbs bar, made various improvements, and fixed bugs:

  • 现在,已聚焦的文档符号在编辑器中突出显示.
  • 运行焦点命令( ⇧⌘; (Windows,Linux Ctrl + Shift +; )时,将自动启用面包屑.
  • 面包屑与主题配合使用时效果更好.
  • 面包屑现在支持该文件排除配置.

Breadcrumbs Highlights

New Terminal menu

" 任务"菜单已重命名为" 终端",并为"集成终端"添加了更多条目.

Terminal Menu

Platform specific keybindings

现在可以在键绑定的when子句中使用isLinuxisMacisWindows启用特定操作系统的键盘快捷键:

{
  "key": "ctrl+o",
  "command": "workbench.action.files.openFolder",
  "when": "!isMac"
},
{
  "key": "cmd+o",
  "command": "workbench.action.files.openFolder",
  "when": "isMac"
}

这使得跨不同机器共享keybindings.json文件变得更加容易.

Open window as new native tab

仅限macOS的新命令workbench.action.newWindowTab打开一个窗口作为新的本机选项卡. newWindowTab没有默认的键盘绑定,需要启用window.nativeTabs设置.

Files no longer close when deleted/renamed externally

我们将workbench.editor.closeOnFileDelete设置的默认值从true更改为false . 这意味着已在VS Code之外(或通过其他程序(例如,Git或来自Integrated Terminal的命令))删除或重命名的文件将不再关闭作为编辑器选项卡打开的文件. 而是,文件将指示它已从磁盘中删除,您只需保存文件即可将其还原.

Deleted from Disk

注意:除非文件脏了,否则在重新启动之间不会保留文件的内容.

Middle click to open file in a new editor

现在可以在资源管理器视图中使用鼠标中键单击以在新的编辑器中打开文件,而不必在预览模式下重用以前的编辑器.

Accessibility improvements

我们已修复了许多可访问性问题-主要涉及键盘导航,屏幕阅读器支持和焦点. 完整列表可以在这里找到. 这是一项持续的工作,我们计划在9月继续进行.

Improved Windows background update

为了解决导致某些用户安装中断的问题,我们在自定义Windows后台更新程序上做了一些稳定性工作. 这是一个连续的工作项目,在即将发布的版本中有更多改进.

Editor

Auto closing & surrounding characters

当键入某些括号时,例如{[( ,取决于编程语言,默认情况下,当它们后跟通常无法启动表达式的特定字符时,例如;:.,=}])> ,它们将自动关闭;:.,=}])> . 可以使用editor.autoClosingBrackets设置来自定义此行为. 同样,可以在使用editor.autoClosingQuotes键入诸如"'`类的引号时自定义自动关闭行为.

选择文本并键入以下字符之一后,所选内容将被方括号或引号引起来. 现在可以通过新的editor.autoSurround设置单独调整此行为.

Languages

Path completion for CSS imports

CSS,SCSS和Less @import路径完成现已可用. 也处理SCSS部分@import .

css-import

现在可以跳转到CSS,SCSS和Less中的@importurl()链接的定义.

css-definition

JSON

内置的JSON语言扩展现在支持新的JSON Schema Draft-07 .

最有趣的添加是ifthenelse关键字,以允许条件模式评估.

{
  "type": "integer",
  "minimum": 1,
  "maximum": 1000,
  "if": { "minimum": 100 },
  "then": { "multipleOf": 100 },
  "else": {
    "if": { "minimum": 10 },
    "then": { "multipleOf": 10 }
  }
}

if关键字表示如果值架构的结果通过验证,则应用then架构,否则应用else架构.

HTML

HTML格式化程序已更新为JS Beautifier的 1.8.1版本.

这会在"html.format.wrapAttributes"设置中添加一个新选项:

  • "aligned-multiple" will wrap attributes when the maximum line length is reached and aligns all wrapped lines with the first attribute.

aligned-multiple

TypeScript 3.0.3

VS Code现在随TypeScript 3.0.3一起提供. 此次发行版修复了许多错误并提高了稳定性. 您可以在此处了解完整的更改集.

Debugging

Loaded Scripts view now reusable

一年多来,"调试"视图中的" 加载的脚本资源管理器 "是由Node.js调试扩展提供的,其他调试器无法使用. 在此版本中,我们已将"加载的脚本"视图添加为内置调试器功能. 所有具有"脚本"概念的调试扩展都将能够支持在动态更新的视图中访问其脚本.

此外,我们还改善了旧的Loaded Scripts Explorer的一些缺点:

  • 现在,单子文件夹链折叠到一个节点中. 这使深入深入但稀疏的文件夹层次结构变得容易得多.
  • 我们已经开始解决可访问性问题.

Middle click to remove breakpoints

现在可以在断点视图中使用鼠标中键单击以轻松删除断点.

Change the default for "openDebug" to open on every session start

对于新用户,有时在启动调试会话时会感到困惑,并且调试视图不会每次都自动打开. 如果用户还不熟悉UI,则他们不知道要打开UI所要寻找的关键字. 为了避免混淆,我们改变了默认debug.openDebugopenOnSessionStart使调试视图上的每个会话开始打开,不仅在第一(这是以前的默认行为).

Extension Authoring

Extension logging

作为activate函数的参数使用的ExtensionContext具有新的属性logPath . 这是扩展名可以在其中存储日志文件的目录的绝对文件路径. 该路径对于扩展来说是唯一的,并且不会被其他扩展使用.

Language Server Protocol

语言服务器协议的新版本可用,并且包括与VS Code一起使用的相应节点模块.

新版本支持:

vscode-languageclient: JSON log format and log streaming

以前,当使用vscode-languageclient构建Language Server扩展时,可以指定[langId].trace.serverLSP日志发送到VS Code输出通道.

[langId].trace.server现在可以以机器可读的JSON格式输出日志记录信息:

"languageServerExample.trace.server": {
  "format": "json", // or "text"
  "verbosity": "verbose" // or "off" | "messages"
}

这打开了有趣的用例,例如将LSP日志流式传输到LSP检查器中以可视化语言服务器的行为:

lsp-streaming

您可以在Microsoft / language-server-protocol-inspectorlsp-log-streaming-sample中了解有关它的更多信息.

Debug extensions: Built-in Loaded Scripts view

现在,Loaded Scripts Explorer是VS Code调试器的内置组件. 为了使用它,调试器扩展需要以以下方式更改其调试适配器:

  • 添加supportsLoadedSourcesRequest能力与价值trueCapabilities从返回initialize请求.
  • 通过返回当前已加载的源集来实现loadedSources请求.
  • 为新加载或卸载的源发送loadedSource事件.

New theme colors

面包屑有新的主题颜色:

  • breadcrumb.background :面包屑项目的背景颜色.

设置编辑器有新的主题颜色:

  • settings.dropdownListBorder :新下拉控件的边框颜色.
  • settings.modifiedItemIndicator: The color of the line that indicates a modified setting.

Git extension API

Git扩展已经开始公开更加定义的API . 可以从任何其他扩展程序使用此API来与用户工作区中的打开的Git存储库进行交互. 由于它仍处于初步阶段,因此我们将在即将发布的版本中不断改进API.

Proposed Extension APIs

每个里程碑都随附了新提议的API,扩展作者可以尝试一下. 一如既往,我们热切希望收到您的反馈. 您必须尝试以下提议的API:

  • 您必须使用Insiders,因为建议的API经常更改.
  • 您的扩展程序的package.json文件中必须包含以下行: "enableProposedApi": true .
  • 将最新版本的vscode.proposed.d.ts文件复制到您的项目中.

请注意,您无法发布使用建议的API的扩展. 我们可能会在下一个版本中进行重大更改,而我们永远也不想破坏现有的扩展.

SCM: Selected source controls

In order for extensions to know which source control instances have been selected by the user for visibility in the UI, SourceControl instances now have a selected property as well as a onDidChangeSelection event which represent that state.

export interface SourceControl {
  /**
   * Whether the source control is selected.
   */
  readonly selected: boolean;

  /**
   * An event signaling when the selection state changes.
   */
  readonly onDidChangeSelection: Event<boolean>;
}

Comment providers

我们将在此迭代中引入评论的概念,该概念允许扩展程序在编辑器和新的" 评论"面板中创建和管理对话. 这使扩展能够支持代码审查方案.

注释被组织到线程中并与特定文档相关联.

export enum CommentThreadCollapsibleState {
  Collapsed = 0,
  Expanded = 1
}

interface CommentThread {
  threadId: string;
  resource: Uri;
  range: Range;
  comments: Comment[];
  collapsibleState?: CommentThreadCollapsibleState;
}

interface Comment {
  commentId: string;
  body: MarkdownString;
  userName: string;
  gravatar: string;
  command?: Command;
}

要显示注释,扩展必须注册DocumentCommentProviderWorkspaceCommentProvider .

export interface CommentThreadChangedEvent {
  readonly added: CommentThread[];
  readonly removed: CommentThread[];
  readonly changed: CommentThread[];
}

interface CommentInfo {
  threads: CommentThread[];
  commentingRanges?: Range[];
}

interface DocumentCommentProvider {
  provideDocumentComments(
    document: TextDocument,
    token: CancellationToken
  ): Promise<CommentInfo>;
  createNewCommentThread(
    document: TextDocument,
    range: Range,
    text: string,
    token: CancellationToken
  ): Promise<CommentThread>;
  replyToCommentThread(
    document: TextDocument,
    range: Range,
    commentThread: CommentThread,
    text: string,
    token: CancellationToken
  ): Promise<CommentThread>;
  onDidChangeCommentThreads: Event<CommentThreadChangedEvent>;
}

interface WorkspaceCommentProvider {
  provideWorkspaceComments(token: CancellationToken): Promise<CommentThread[]>;
  onDidChangeCommentThreads: Event<CommentThreadChangedEvent>;
}

使用DocumentCommentProvider ,可以返回打开文档的注释. 提供注释时,扩展名同时指定了文档上的当前线程,以及文档的哪个范围支持添加新注释. 可以在文档中添加或回复注释.

A comment within an editor

首次注册WorkspaceCommentProviderCommentsPanel变为可见并显示提供给它的所有注释. 注释按注释线程和资源分组. 在面板中选择注释后,运行注释command ,因此扩展名决定了行为.

Comments panel

Preview Features

预览功能尚未准备发布,但足以使用. 我们欢迎您在开发过程中提早提供反馈.

Electron 3.0 exploration

在这个里程碑期间,我们探索了将Electron 3.0.0捆绑到VS Code中的过程. 这是Electron的主要版本,并带有Chrome 66和Node.js 10.x(与我们当前具有Chrome 61和Node.js 8.x的版本相比,是一个重大的飞跃). 我们计划在不久的将来向内部人员发布更新,以收集更多反馈. 如果您有兴趣提供帮助,请确保安装VS Code Insiders .

Engineering

Extensions and webpack

我们现在使用webpack捆绑扩展. 它带来了两个成就:(1)减少了扩展的启动时间,因为要加载的文件更少,需要解析的源也更少;(2)减少了安装时间,因为需要提取并写入磁盘的文件更少. 到目前为止,我们已将捆绑包大小减少了约4000个文件!

Performance canary

我们添加了一个测试工具,以确保我们的启动性能不会下降. 有一个新脚本可以部署到专用计算机上,以测试Insider构建的性能. 该脚本仅安装最新版本,并确保它在一定时间内启动. 目前,我们从Windows开始,因为性能通常会受到防病毒软件更新的影响,但计划是在我们支持的所有平台上进行测试.

IPC stack improvements

我们改进了自己的IPC堆栈,以支持进程之间的字节缓冲区消息 . 这使某些情况成为可能,例如在我们的不同进程之间发送二进制数据而没有开销,以及使我们能够优化IPC的性能.

Notable Fixes

  • 6363 :保存时删除备用数据流
  • 25919 :新命令强制打开新窗口作为本机选项卡
  • 49021 :请勿在保存时重置WSL权限元数据
  • 49403 :在集成终端中调试时,自动附加会导致问题
  • 55025 :扩展主机重新启动时允许继续调试
  • 56084 :开放式编辑器:根据视觉顺序重新访问组的顺序
  • 56691 :路径中存在#时,启动vscode时出错
  • 57018 :停止/重新启动调试器无法停止babel-node

Thank You

最后但同样重要的是,非常感谢! 致使VS Code变得更好的以下人员:

vscode贡献:

vscode-vsce贡献:

vscode-eslint贡献:

language-server-protocol贡献:

vscode-languageserver-node贡献:

debug-adapter-protocol贡献:

vscode-css-languageservice贡献:

vscode-html-languageservice贡献:

vscode-json-languageservice贡献:

node-jsonc-parser贡献:

vscode-generator-code贡献:

localization贡献:

Transifex VS Code项目团队中约有1200名成员,每月约有100名活跃参与者. 通过提供新的翻译,对翻译进行投票或建议改进流程,我们对您的贡献表示感谢.

这是此版本贡献者的快照. 有关项目的详细信息(包括贡献者姓名列表),请访问项目站点, 网址https://aka.ms/vscodeloc .

  • 保加利亚语: ЛюбомирВасилев.
  • 克罗地亚语: NikšaMihaica.
  • 丹麦文:克里斯托弗·贝克(Christoffer Bech).
  • 英语(英国): Matthew John Cheetham,Swotboy2000.
  • 芬兰语: PetriNiinimäki,Feetu Nyrhinen,Jussi Palo.
  • 法语: Antoine Griffard,Guillaume Bauer,Smrman.
  • 德语: Carsten Siemens,Carsten Kneip,Jonas Droste,Markus Hatvan,Christian Studer,Peter Schneider,Jonas Keller,thefreshman89.
  • 匈牙利语: Daniel Tar,拉兹洛·本斯.
  • Chinese Simplified: Joel Yang, 子实 王, Wang Dongcheng, pluwen, DongWei, Henry Chu, aimin guo, Chris Pan 潘冬冬, 子昂 马.
  • 繁体中文:谢德华,林小薇,张爱玲,蔡艾伦.
  • 印尼文: G-RiNe项目Wildan Mubarok.
  • 意大利语:卢卡·布鲁尼(Luca Bruni),亚历山德罗·阿尔皮(Alessandro Alpi),安德里亚·杜托(Andrea Dottor),埃马努埃拉·库拉蒂(Emanuele Curati),里卡多·卡佩洛(Riccardo Cappello),吉安卢卡·阿塞比斯(Gianluca Acerbis),埃米莉·罗兰丁(Emilie Rollandin),马可·达尔·皮诺(Marco Dal Pino),路易吉·布鲁诺(Luigi Bruno),洛特希尔克(Lorthirk),奥尔多·多内蒂(Aldo Donetti).
  • 日语:田岛俊也,香浦聪,沼山裕一,森裕之雪,吉音.
  • 韩国语: Kongghee Ko,PaulNara,smallsnail,Kwangjin Hwang.
  • 立陶宛语: Tomas Cimermonas.
  • 波兰语: Artur,hawkeye116477,Patryk Brejdak,Mateusz Gazdziak,RobertSkórski,Sebastian Baran.
  • 葡萄牙语(巴西):罗伯托·丰塞卡,布鲁诺·索尼诺,马塞洛·费尔南德斯,卢卡斯·米兰达,若昂·梅斯基塔,达尼洛·丹塔斯,罗德里戈·克雷斯皮,亚瑟·布鲁尔,蒂亚戈·莫雷拉·德·索萨·阿莱雷斯,奥塔西里奥·萨拉瓦·迈亚·内托,洛伊恩·格罗纳,法比奥·科雷亚.
  • 葡萄牙文(葡萄牙): Richard Nunes,Daniel Correia,Tiago Costa.
  • 罗马尼亚文: Sogaka Bogdan Mateescu.
  • 俄语:罗曼·斯洛塔,伊万·库兹曼科.
  • 西班牙语:亚历杭德罗·麦地那,何塞·M·阿吉拉尔,罗伯托·丰塞卡,哈维尔·莫雷诺,安迪·冈萨雷斯,阿尔贝托·波巴西翁,南希·托德,安东尼奥·桑马汀.
  • 泰卢固语: Jujjavarapu日,Sridhar L.