现已发布!阅读 10 月份的新功能和修复。

2018 年 10 月(版本 1.29)

更新 1.29.1:此更新解决了这些 问题

下载:Windows:x64 | Mac:Intel | Linux 64 位:deb rpm tarball | 32 位:deb rpm tarball


欢迎使用 2018 年 10 月版的 Visual Studio Code。此版本中包含许多重大更新,我们希望您会喜欢,其中一些主要亮点包括

如果您想在线阅读这些发行说明,请访问 更新,位于 code.visualstudio.com
您还可以观看此 1.29 版本的 亮点视频,该视频由云开发倡导者 Brian Clark 制作。

发行说明按以下与 VS Code 关注领域相关的部分排列。以下是其他一些更新

  • 工作区 - 平台特定的行尾符,突出显示修改的文件选项卡。
  • 集成终端 - 拆分终端 cwd 选项,使用 Cmd+Backspace 删除到行首。
  • 语言 - 在悬停时显示 CSS 特定性,处理未知的 CSS 属性。
  • 调试 - 多个调试控制台,从入口点开始停止,样式化 console.log 消息。
  • 扩展开发 - 活动终端 API,对自定义视图有更多控制。

内部人员:想尽快看到新功能?您可以下载 nightly 的 内部人员 构建并尽快尝试最新的更新。要获取最新的 Visual Studio Code 新闻、更新和内容,请在 Twitter 上关注我们 @code

VS Code 现在支持多行搜索!与编辑器中的情况相同,正则表达式搜索仅当包含 \n 文字时才在多行模式下执行。搜索视图在每个多行匹配旁边显示提示,其中包含其他匹配行的数量。

Multiline search

此功能得益于 ripgrep 工具中完成的工作,该工作实现了多行搜索。

现在还可以通过设置 "search.usePCRE2": true 在正则表达式搜索中使用 反向引用先行断言。这将配置 ripgrep 以使用 PCRE2 正则表达式引擎。虽然 PCRE2 支持许多其他功能,但我们只支持在 JavaScript 中仍然有效的正则表达式,因为开放的编辑器仍然使用编辑器的基于 JavaScript 的搜索进行搜索。

Fancy regex search

如果您仍然缺少后行断言,请不要担心!此功能最近才得到 JavaScript 的支持,应该会在以后的 Electron Shell 更新中引入 VS Code。

我们添加了一个设置 search.showLineNumbers,它将在搜索视图中为每个匹配项显示行号。

禁用搜索和替换预览

有一个新的设置 search.useReplacePreview,它允许您禁用在搜索视图中执行搜索/替换时出现的预览差异。

line numbers

Git 允许您使用 core.excludesfile 配置属性配置全局 gitignore 文件。默认情况下,搜索不尊重全局 gitignore 文件,但您现在可以通过启用新的设置 search.useGlobalIgnoreFiles 来更改此行为。

工作区

macOS Mojave 深色模式支持

macOS Mojave 深色模式现在在 VS Code 中得到了更好的支持。以前,即使 macOS 正在深色模式下运行,VS Code 菜单和对话框也会以默认的浅色主题显示。现在,如果启用深色模式,所有本机 UI 元素都将以深色模式显示。

macOS Mojave Dark Mode

macOS 全屏支持

引入了一个新的设置 window.nativeFullScreen,如果将其设置为 false,将为 VS Code 启用不使用本机 macOS 全屏功能的全屏模式。这样做的好处是,进入全屏模式不会在桌面上创建一个 macOS 空间。默认情况下,VS Code 仍然会使用 macOS 本机全屏。

files.eol 的新默认值:auto

files.eol 行尾设置现在有一个新的默认值 auto。当设置为 auto 时,新文件的行尾符特定于操作系统。在 Windows 上为 \r\n,在 macOS 和 Linux 上为 \n。您还可以显式地将 file.eol 设置为 \n\r\n

突出显示修改的选项卡

一个新的设置 workbench.editor.highlightModifiedTabs 在编辑器处于脏状态(具有未保存的更改)时,会在编辑器选项卡顶部显示一条粗线。这使得更容易找到需要保存的文件。边框的颜色可以自定义(见下文)。

Highlight modified tabs

居中编辑器布局自动调整大小

当打开多个编辑器组时,居中布局视图现在会自动调整大小以最大宽度显示。这应该使居中布局更容易使用,并减少手动切换的需要。此行为由一个新的设置 workbench.editor.centeredLayoutAutoResize 控制,该设置默认启用。

面包屑中的符号顺序

有一个新的设置控制面包屑选择器中符号的排序方式:breadcrumbs.symbolSortOrder

允许的值为

  • position - 文件中的位置(默认值)
  • name - 按字母顺序
  • type - 符号类型顺序

下面的示例显示了按名称排序的面包屑符号列表

Breadcrumb picker ordered by name

面包屑和预览编辑器

当在面包屑导航中中间单击项目时,它们现在将在新编辑器中打开,并且不会重用预览编辑器。此行为现在与在资源管理器中中间单击文件相匹配。

即使显示按钮,通知也会自动隐藏

以前,如果通知包含按钮,VS Code 永远不会隐藏它们。这会导致通知可能堆积在右下角并覆盖编辑器的一部分。在此版本中,即使通知显示按钮,也会在超时后隐藏它们。

有两个例外

  • 严重性为 error 的通知不会被隐藏,因为假设用户需要采取一些措施。
  • 来自 VS Code 的一些特定通知将保持打开状态。例如,在浏览 VS Code Marketplace 后询问您是否要安装扩展的通知。

注意:即使通知被隐藏,您也可以始终从通知中心访问所有通知,方法是单击状态栏中的小铃铛图标或通过显示通知notifications.toggleList)命令。

面板位置按钮到上下文菜单

为了保留水平空间并减少杂乱,我们从面板标题区域删除了切换面板位置按钮(移至右侧移至底部)。该操作现在可在面板标题区域上下文菜单中使用,也可在视图 > 外观 > 切换面板位置主菜单中使用。删除此按钮的另一个原因是我们认为用户设置一次布局,通常不会来回切换。

Move panel

根据文件类型更新文件图标

上一个版本 中,我们为常见的 VS Code 文件类型添加了自定义图标。我们现在将这些图标添加到较小的视图中,因此它们将出现在列表视图中。

Updated file icons

在设置编辑器中,当在与当前选定范围不同的范围(用户、工作区)中配置设置时,我们显示提示。其他范围提示现在是链接,将带您转到其他范围内的设置。

modified in link

树形小部件性能

VS Code 树形小部件控件在 VS Code UI 的许多地方使用,但在某些特定用例(问题面板、大纲视图)中遇到了性能限制。我们一直在努力开发更快的虚拟树形小部件实现,这些实现可以适应不同级别的性能与 API 便利性。您可以阅读 此处 以了解详细信息。

新的 `ObjectTree` 小部件现在已在“问题”面板中使用,我们已经看到了显著的改进。我们能够大幅提高工作台可以处理的问题项数量,并提高某些操作(如 **全部折叠**)和高级筛选场景的速度。这些改进现在使处理更大集合大小变得可行。

工作台导航命令

添加了四个命令来改进工作台导航

  • workbench.action.nextSideBarView: 转到侧边栏中的下一个视图。
  • workbench.action.previousSideBarView: 转到侧边栏中的上一个视图。
  • workbench.action.nextPanelView: 转到下一个面板。
  • workbench.action.previousPanelView: 转到上一个面板。

默认情况下,这些命令没有键盘快捷键。

还添加了两个上下文键,sideBarFocuspanelFocus。这允许在不同的工作台区域中使用相同的键绑定来执行不同的命令。

[
  { "key": "cmd+]", "command": "workbench.action.nextEditor" },
  { "key": "cmd+[", "command": "workbench.action.previousEditor" },
  {
    "key": "cmd+]",
    "command": "workbench.action.nextSideBarView",
    "when": "sideBarFocus"
  },
  {
    "key": "cmd+[",
    "command": "workbench.action.previousSideBarView",
    "when": "sideBarFocus"
  },
  {
    "key": "cmd+]",
    "command": "workbench.action.nextPanelView",
    "when": "panelFocus"
  },
  {
    "key": "cmd+[",
    "command": "workbench.action.previousPanelView",
    "when": "panelFocus"
  }
]

workbench-navigation

显示视图组父级

**打开视图** 命令(快速打开中的 `view`)现在显示每个视图组的父级,以便更好地表示视图层次结构。例如,资源管理器组现在显示为 **侧边栏 / 资源管理器**,终端组显示为 **面板 / 终端**。

structured-view

编辑器

IntelliSense 中的文件和文件夹图标

IntelliSense 小部件现在根据您的文件图标主题为文件补全显示文件和文件夹图标。这提供了统一的外观,并有助于您快速识别不同的文件类型。

File Icons in IntelliSense

格式化选择

为了加快小型格式化操作的速度,没有编辑器选择的 **格式化选择** 命令现在将格式化当前行。

显示错误代码

如果定义了错误代码,编辑器现在将显示问题的错误代码。错误代码将显示在行尾的方括号中。

您可以在下面看到 TypeScript 正在显示错误代码 '2339'

error codes

集成终端

拆分终端可以继承工作目录

添加了一个设置 terminal.integrated.splitCwd 来控制拆分终端时新终端的当前工作目录 (cwd)

  • workspaceRoot - 之前的行为;新拆分的终端将使用工作区根目录作为工作目录。在多根工作区中,将提供要使用的根文件夹的选择。
  • initial - 新拆分的终端将使用父终端启动时使用的工作目录。
  • inherited - 在 macOS 和 Linux 上,新拆分的终端将使用父终端的工作目录。在 Windows 上,这与 initial 的行为相同。

Cmd+Backspace 删除到行首

在 macOS 上添加了一个新的键绑定 Cmd+Backspace,它向终端发送 \u0015(Ctrl+U)。在 bash 中,这将从光标删除到行首,在 zsh 中,它将删除整行。

实验性缓冲区改进

一个新的设置 terminal.integrated.experimentalBufferImpl 允许将终端存储其缓冲区的方式更改为基于 TypedArray/ArrayBuffer 的实现。如果您想选择加入,您可以期待在整个过程中获得性能改进,包括减少内存使用和垃圾回收,以及提高终端的吞吐量。

{
  "terminal.integrated.experimentalBufferImpl": "TypedArray"
}

这仅仅是开始,我们预计在接下来的几次发布中吞吐量和内存使用量会进一步提高,然后将其设为默认实现。特别感谢来自 xterm.js 团队的 @jerch,他一直是这个 为期数月的项目 的主要推动者。

任务

在执行任务之前清除终端

在任务 `presentation` 配置中添加了一个新属性 clear。将 clear 属性设置为 true,以便在运行任务之前清除终端。

调试

可折叠的堆栈帧

有时,调试器中的调用堆栈包含对用户来说不重要的堆栈帧(外部代码、跳过的文件等...)。为了减少混乱并节省垂直空间,我们现在将这些不重要的堆栈帧呈现为折叠的。

stack frames

改进的加载脚本视图

在此里程碑中,我们更新了 **加载的脚本** 视图以支持文件图标,并添加了显示 **相关资源** 作为子元素的功能。调试扩展可以使用此功能来显示已转译为脚本的源文件。

来自 Node.js 调试器的以下图片显示了 JavaScript 文件的 TypeScript 源代码(如源映射中所提供的那样)

loaded scripts view

请注意,相关资源功能需要调试扩展选择加入。在 10 月发布的版本中,只有 node-debug 对 Node.js 版本 < 8.0(也称为“旧版”)的此功能提供实验性支持。

多个调试控制台

调试多个调试会话时,我们现在在不同的调试控制台中显示它们的输出。这使得更容易区分哪个调试会话负责哪个输出和评估。

multiple debug consoles

以停止进入的方式开始调试

对于 Node.js 调试,我们添加了一个新命令 **调试:开始调试并停止进入**(extension.node-debug.startWithStopOnEntry)。如果您想开始调试并立即停止在程序的入口处,请使用此命令。默认键绑定为 F11。请注意,此命令仅在您选择的启动配置类型为 node 时才可用。

Node 调试支持 console.log 样式

调试 Node.js(或使用“Chrome 调试器”扩展的 Chrome)时,您现在可以使用 %c 为来自 console.log 的消息设置样式,类似于 Chrome DevTools 的支持。支持的属性为 colorbackgroundfont-weight: boldtext-decoration: underline

console styles

断点小部件扩展到多行

断点小部件现在可以扩展到多行,使用 Shift+Enter 插入额外的行,或者简单地粘贴多行条件或日志消息。这应该有助于编辑更复杂的条件和日志消息。

breakpoint widget

语言

TypeScript 3.1.4

此版本包含 TypeScript 3.1.4,这是一个小的更新,它 修复了一些重要的错误

Markdown 片段改进

内置的 Markdown 片段,例如用于链接和代码块的片段,现在默认情况下使用当前选定的文本。这允许您 创建键绑定,将当前选定的文本转换为链接或标题。

{
  "key": "cmd+k",
  "command": "editor.action.insertSnippet",
  "when": "editorTextFocus",
  "args": {
    "langId": "markdown",
    "name": "Insert link"
  }
}

悬停消息中的 CSS 特定性

CSS 悬停现在向您显示 CSS 特定性

css-specificity

处理未知的 CSS 属性

使用 PostCSS 等 CSS 预处理器时,您可能会使用在开发过程中编译为有效属性的无效属性。[css/less/scss].lint.validProperties 设置可以防止 VS Code 将这些无效属性标记为错误。

改进的 CSS 零单位警告

CSS 现在会对 CSS 速记属性值中使用的 零单位 进行 lint。例如,0px 现在将导致警告。

优雅地处理 JSON 架构加载错误

如果 VS Code 无法下载用于 IntelliSense 或错误检查 JSON 文件的 JSON 架构,则状态栏中将显示警告。

json-schema-loading

过去,您会在编辑器中看到错误。

工程

继续探索 Electron 3.0

在此里程碑中,我们继续探索将 Electron 3.0.0 打包到 VS Code 中。这是一个主要的 Electron 版本,它包含 Chrome 66 和 Node.js 10.x(与我们当前版本相比,这是一个巨大的进步,当前版本包含 Chrome 61 和 Node.js 8.x)。我们计划在不久的将来将更新推送到我们的 Insiders 用户,以收集更多反馈。如果您有兴趣帮忙,请确保安装 VS Code Insiders

严格的空值检查核心 VS Code

在此里程碑中,我们还 开始工作,以便在核心 VS Code 源代码中启用 TypeScript 的 严格的空值检查。严格的空值检查有助于捕获许多常见的编程错误,并使程序员的意图更加明确。我们已经看到在 VS Code 的内置扩展中使用严格的空值检查带来的明显好处。

由于 VS Code 的 核心源代码 包含数千个文件,因此我们正在逐步采用严格的空值检查。我们首先对没有导入的文件进行严格的空值检查,现在正在迭代地对仅导入其他严格的空值检查文件的启用严格的空值检查。这将持续进行,直到整个代码库都完成转换。

启用严格的空值检查是一项重大的工程工作,但我们认为它在源代码和产品质量方面的回报将是值得的。您可以 这里 跟踪我们的严格空值检查进度。

其他

低对比度菜单栏

如果您使用的是 Ubuntu 18.10 或将浅色或深色上下文菜单与应用程序菜单栏的相反主题相混合的 GTK 主题,您可能会遇到难以阅读的低对比度菜单栏。

为此有两个可能的解决方法。

  • 尝试使用 VS Code 自定义标题栏样式,方法是将设置 window.titleBarStyle 配置为 custom
  • 更改您的 GTK 主题。您可以通过安装 Gnome Tweaks 应用程序并使用之前的默认主题 Adwaita 来执行此操作。

有关此问题的更多信息,请跟踪问题 62593

Electron 更新

在此版本中,我们从 Electron 2.0.9 更新到 2.0.12。

预览功能

预览功能尚未准备好发布,但功能足够强大,可以供您使用。我们欢迎您在开发过程中提供早期反馈。

引用视图

新增了一个**查找所有引用**命令,它会显示一个专用的侧边栏视图,用于展示引用搜索结果。这补充了现有的 Peek 视图,并提供了一个更稳定的引用列表。在上下文菜单中,选择**查找所有引用**(),引用将显示在一个独立的视图中,就像搜索结果一样。

References View

结果是稳定的,可以清除单个结果,这对于将视图用作待办事项列表非常有用。可以使用F4⇧F4 (Windows, Linux Shift+F4)在结果之间导航,无需将手从键盘上移开。

请告诉我们您的想法,我们将在下一次更新中改进用户体验。

扩展开发

规范化的扩展示例

位于 vscode-extension-samples 的 VS Code 扩展示例已更新以保持一致性。

每个扩展示例现在包含

  • 统一的编码风格和结构。
  • 一个 README,用简短的动画解释示例的功能。
  • 每个示例中使用的 vscode API 或贡献点的列表。

捆绑扩展

捆绑的扩展加载速度更快。因此,我们创建了一个示例,展示了如何 使用 webpack 打包扩展

无需发布者即可开发扩展

为了简化初始扩展开发,publisher 字段已从 Yeoman Extension Generator 模板中删除。对于没有 publisher 标识符的扩展,VS Code 现在使用 undefined_publisher 作为其发布者加载它们。但是,如果您在尝试将扩展发布到 Marketplace 时缺少有效的发布者,vsce 发布工具会发出警告。

活动终端 API

提供对活动终端访问权限的提议 API,window.activeTerminalwindow.onDidChangeActiveTerminal,现在已稳定。

带有按钮的通知会在超时后隐藏

如果您的扩展使用 showInformationMessageshowWarningMessage API 以及非模态选项和按钮,请注意这些通知现在会在特定超时后隐藏。只有通过 showErrorMessage 触发并带有按钮的通知才会像以前一样保持打开状态。如果您需要立即获得用户的输入或需要突出显示消息,您仍然可以使用 modal: true 作为选项。这将弹出一个模态对话框,阻止用户执行任何操作,直到将其关闭。但是,我们不鼓励过度使用此选项,因为它会打断用户。

自定义视图:展开显示的元素

您现在可以使用 reveal API 中的 expand 选项展开元素以显示。它还支持通过传递级别数来递归展开子元素。

注意:您最多只能展开 3 个级别。

/**
 * Reveals the given element in the tree view.
 * If the tree view is not visible then the tree view is shown and element is revealed.
 *
 * By default revealed element is selected.
 * In order to not to select, set the option `select` to `false`.
 * In order to focus, set the option `focus` to `true`.
 * In order to expand the revealed element, set the option `expand` to `true`. To expand recursively set `expand` to the number of levels to expand.
 * **NOTE:** You can expand only to 3 levels maximum.
 *
 * **NOTE:** [TreeDataProvider](#_TreeDataProvider) is required to implement [getParent](#_TreeDataProvider.getParent) method to access this API.
 */
reveal(element: T, options?: { select?: boolean, focus?: boolean, expand?: boolean | number }): Thenable<void>;

新的主题颜色

新增了以下主题颜色

  • tab.activeModifiedBorder:活动组中已修改(脏)的活动选项卡顶部的边框。
  • tab.inactiveModifiedBorder:活动组中已修改(脏)的非活动选项卡顶部的边框。
  • tab.unfocusedActiveModifiedBorder:未聚焦组中已修改(脏)的活动选项卡顶部的边框。
  • tab.unfocusedInactiveModifiedBorder:未聚焦组中已修改(脏)的非活动选项卡顶部的边框。
  • editor.stackFrameHighlightBackground:编辑器中顶部调试堆栈帧突出显示的背景颜色。默认情况下,此颜色为黄色。
  • editor.focusedStackFrameHighlightBackground:编辑器中聚焦的调试堆栈帧突出显示的背景颜色。默认情况下,此颜色为绿色。

Git 扩展 API 新增功能

Git 扩展 API 已更新,以公开有关每个存储库的实际 更改 的详细信息。

此外,还公开了以下方法

使用 Azure Pipelines 进行扩展 CI

我们更新了有关 如何使用 Azure Pipelines 为您的扩展设置持续集成解决方案 的文档。新指南提供了一个配置,您可以使用它在 Windows、macOS 和 Linux 上同时运行扩展测试。

Azure Pipelines CI results

建议的扩展 API

每个里程碑都附带新的提议 API,扩展作者可以尝试使用它们。一如既往,我们热切期待您的反馈。以下是如何尝试使用提议 API 的方法

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

请注意,您无法发布使用提议 API 的扩展。我们可能会在下一次发布中进行重大更改,我们绝不希望破坏现有扩展。

剪贴板 API

我们有一个提议的 API 用于访问剪贴板。它遵循即将推出的浏览器 剪贴板 API,目前允许读取和写入文本。

export interface Clipboard {
  readText(): Thenable<string>;
  writeText(value: string): Thenable<void>;
}
export namespace env {
  const clipboard: Clipboard;
}

完成文本插入规则

有一个新的提议 API 用于修改完成项的插入行为。默认情况下,多行完成将被“重新格式化”,以匹配当前行的缩进。有时,这种缩进是多余的,新的提议 API 允许完成关闭它。CompletionItemInsertTextRule 是一个位掩码,它有一个 KeepWhitespace 规则,完成可以设置它。

自定义视图

折叠全部操作

您可以通过在创建 TreeView 时将 showCollapseAll 选项设置为 true 来将**折叠全部**操作添加到您的视图中。

/**
 * Options for creating a [TreeView](#_TreeView]
 */
export interface TreeViewOptions<T> {
  /**
   * A data provider that provides tree data.
   */
  treeDataProvider: TreeDataProvider<T>;

  /**
   * Whether to show collapse all action or not.
   */
  showCollapseAll?: boolean;
}

namespace window {
  export function createTreeView<T>(
    viewId: string,
    options: TreeViewOptions<T>
  ): TreeView<T>;
}

VS Code 提供**折叠全部**功能,并以相同的图标和位置显示所有已加入的视图。

Collapse All

TreeItem 标签突出显示

您可以通过使用 highlights 选项提供范围来突出显示 TreeItem 标签。由于它是一个提议的 API,您必须使用 TreeItem2 来更新突出显示。

/**
 * Label describing the [Tree item](#_TreeItem)
 */
export interface TreeItemLabel {
  /**
   * A human-readable string describing the [Tree item](#_TreeItem).
   */
  label: string;

  /**
   * Ranges in the label to highlight. A range is defined as a tuple of two number where the
   * first is the inclusive start index and the second the exclusive end index
   */
  highlights?: [number, number][];
}

export class TreeItem2 extends TreeItem {
  /**
   * Label describing this item. When `falsy`, it is derived from [resourceUri](#_TreeItem.resourceUri).
   */
  label?: string | TreeItemLabel | /* for compilation */ any;

  /**
   * @param label Label describing this item
   * @param collapsibleState [TreeItemCollapsibleState](#_TreeItemCollapsibleState) of the tree item. Default is [TreeItemCollapsibleState.None](#_TreeItemCollapsibleState.None)
   */
  constructor(label: TreeItemLabel, collapsibleState?: TreeItemCollapsibleState);
}

Label highlights

隐藏源代码管理输入框

SourceControlInputBox 实例上有一个新的提议 API 属性,它可以让您隐藏源代码管理提供程序 UI 视图顶部的输入框。

export interface SourceControlInputBox {
  /**
   * Controls whether the input box is visible (default is  true`).
   */
  visible: boolean;
}

SignatureHelpContext

提议的 SignatureHelpContextSignatureHelpProviders 提供了有关为什么请求签名帮助的更多信息

export interface SignatureHelpProvider {
  provideSignatureHelp(
    document: TextDocument,
    position: Position,
    token: CancellationToken,
    context: SignatureHelpContext
  ): ProviderResult<SignatureHelp>;
}

SignatureHelpContext 包含

  • 导致触发签名帮助的操作
  • 触发字符(如果有)
  • 这是重新触发吗?(签名帮助已经在显示)
/**
 * Contains additional information about the context in which a
 * [signature help provider](#_SignatureHelpProvider.provideSignatureHelp) is triggered.
 */
export interface SignatureHelpContext {
  /**
   * Action that caused signature help to be requested.
   */
  readonly triggerReason: SignatureHelpTriggerReason;

  /**
   * Character that caused signature help to be requested.
   *
   * This is `undefined` when signature help is not triggered by typing, such as when invoking signature help
   * or when moving the cursor.
   */
  readonly triggerCharacter?: string;

  /**
   * Whether or not signature help was previously showing when triggered.
   *
   * Retriggers occur when the signature help is already active and can be caused by typing a trigger character
   * or by a cursor move.
   */
  readonly isRetrigger: boolean;
}

/**
 * How a [Signature provider](#_SignatureHelpProvider) was triggered
 */
export enum SignatureHelpTriggerReason {
  /**
   * Signature help was invoked manually by the user or by a command.
   */
  Invoke = 1,

  /**
   * Signature help was triggered by a trigger character.
   */
  TriggerCharacter = 2,

  /**
   * Signature help was triggered by the cursor moving or by the document content changing.
   */
  ContentChange = 3
}

此外,该提议允许 SignatureHelpProvider 注册一组 triggerCharacters 和一组不同的 retriggerCharacters

export interface SignatureHelpProviderMetadata {
  readonly triggerCharacters: ReadonlyArray<string>;
  readonly retriggerCharacters: ReadonlyArray<string>;
}

namespace languages {
  export function registerSignatureHelpProvider(
    selector: DocumentSelector,
    provider: SignatureHelpProvider,
    metadata: SignatureHelpProviderMetadata
  ): Disposable;
}

retriggerCharacters 仅在签名帮助已显示时才会导致签名帮助提供程序被调用。

扩展贡献

我们的团队维护或为许多 VS Code 扩展做出贡献。本月最值得注意的是

Go

以下是您在 Go 1.11 中使用新的 Go 模块 时,Go 扩展现在支持的一些关键功能

  • 代码导航(转到定义、签名帮助、悬停时显示符号信息)
  • 代码完成
  • 代码覆盖率
  • 代码诊断
  • 与包相关的命令,如**Go:添加导入**和**Go:浏览包**

有关更多详细信息,请阅读有关 Visual Studio Code 中的 Go 模块支持 的 Wiki。

Go 扩展中的其他值得注意的功能是

  • Sourcegraph 的语言服务器现在也支持 Windows。
  • 自动完成小部件现在显示建议符号的文档。按下 ⌃Space (Windows, Linux Ctrl+Space) 以展开/折叠自动完成小部件的详细信息部分。
  • 交叉编译时现在支持自动完成。当您尝试使用 Go 1.11 中的新 WebAssembly 支持 时,这尤其有用。
  • 调试视图的变量窗格中现在提供带有**复制值**、**复制为表达式**和**添加到监视**选项的上下文菜单。
  • 仅在文件保存时对当前文件进行代码风格检查的选项。

TypeScript TSLint 插件

新的 TypeScript TSLint 插件 使 TSLint 成为 TypeScript 语言服务插件。这些插件可以在任何使用 TypeScript 语言服务的编辑器中使用,包括 VS Code、Visual Studio、Atom 和 Sublime Text。

我们还发布了 一个扩展,它捆绑了 TypeScript TSLint 插件,这样您就不必在工作区中配置插件。

GitHub Pull Requests

在本里程碑中,我们致力于改进 GitHub Pull Requests 扩展。该扩展现在支持编辑和删除评论,无论是在编辑器内还是在描述页面上,并且对尚未提交的评论进行了更好的缓存。您可以 在此处 阅读扩展的完整发行说明。

新文档

部署 Python 教程

有两个新的 Python 教程展示了如何使用 VS Code 部署 Python Web 应用程序。

调试配方

PHPPythonRuby on Rails 提供了新的 VS Code 调试 配方

显著修复

  • 54214:即使构建失败,vscode 中的 startDebugging 方法仍然返回 true
  • 57289:设置 UI 应记住其在重新加载时的搜索
  • 57321:当设置搜索没有返回结果时,显示“清除搜索”和“清除过滤器”按钮
  • 59305:在 .code-workspace 文件中显示“打开工作区”按钮
  • 59430:无法再在节点内部文件断点
  • 61711: 所有断点均未验证
  • 62085: 调试适配器未收到 PauseRequest
  • 62346: 初始化期间无法取消调试会话
  • 62354: Node 10.12 后远程调试问题

感谢

最后,还要特别感谢以下人士帮助让 VS Code 变得更好!

vscode 的贡献

vscode-eslint 的贡献

vscode-languageserver-node 的贡献

language-server-protocol 的贡献

vscode-html-languageservice 的贡献

vscode-css-languageservice 的贡献

vscode-json-languageservice 的贡献

debug-adapter-protocol 的贡献

vscode-debugadapter-node 的贡献

vscode-chrome-debug-core 的贡献

  • @digeff
    • 我们适应最新的 Node.js 版本,该版本使用 file:///,并且我们不会为存在的文件发送 sourceRef PR #373
    • 修复在 NTVS 单元测试的第一行不命中断点的问题 PR #369
    • 修复节点在网络路径中不命中断点的问题 PR #368
  • @rdegelo
    • 改进调试控制台样式。添加下划线和背景支持 PR #374
    • 添加了对调试控制台上的基本颜色转义序列的支持 PR #367

vscode-generator-code 的贡献

vscode-vsce 的贡献

vscode-extension-samples 的贡献

vscode-recipes 的贡献

inno-updater 的贡献

localization 的贡献

Transifex VS Code 项目 团队中有近 1400 名成员,每月有约 100 名活跃贡献者。感谢您的贡献,无论是提供新的翻译、对翻译投票,还是建议流程改进。

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

  • 波斯尼亚语: Dario Fuzinato.
  • 保加利亚语: Любомир Василев.
  • 加泰罗尼亚语: joanmiro pisa.
  • 捷克语: Vít Staniček, Kryštof Černý, Michal Franc.
  • 荷兰语: Gerald Versluis, Vincent Verbist.
  • 英语(英国): Matthew John Cheetham, Alexander Ogilvie.
  • 芬兰语: Petri Niinimäki, Feetu Nyrhinen.
  • 法语: Antoine Griffard, Adrien Clerbois.
  • 德语: J.M. Rütter, Volkmar Rigo.
  • 希腊语: Dimitris Siakavelis, Christos Koutsiaris.
  • 印地语: Ashwini Gupta, Bimal ., Brahma Dev, Rahul Bhammarker.
  • 匈牙利语: Tar Dániel.
  • 简体中文: Joel Yang, pluwen, Zijian Zhou, Simon Chan.
  • 繁体中文: Duran Hsieh, Poy Chang, Alan Tsai, Kevin Yang, Winnie Lin.
  • 印度尼西亚语: Rizki A. Wibowo, Laurensius Dede Suhardiman, Fahmi Irsyad khairi, Wildan Mubarok, G-RiNe Project, Pratikto Ariestyadi, Joshua Siagian, William Tantiono, Herman Prawiro, Febrian Setianto (Feber), Angger Rafi Akbar, Joseph Aditya P G, Oka bRionZ, rodin.
  • 意大利语: Alessandro Alpi, Riccardo Cappello, Marco Dal Pino, Roberto Albano, Andrea Dottor, Luigi Bruno.
  • 日语: Shunya Tajima, Yuichi Nukiyama, Satoshi Kajiura, Yoshihisa Ozaki.
  • 卡纳达语: Sanjay !.
  • 韩语: Kyunghee Ko, Junseong Jang.
  • 立陶宛语: Martynas Jusys.
  • 马拉雅拉姆语: Ajith S Punalur, Anand Chalakkal Jose Mohan, Kiren Paul.
  • 挪威语博克马尔语: Espen Klein Nilsen.
  • 波兰语: Artur, Andrzej Supermocny, Jan Bońkowski, Mateusz Wyczawski, Warchlak.
  • 葡萄牙语(巴西): Rodrigo Crespi, Roberto Fonseca, Danilo Dantas, Thiago Aragão, Thiago Moreira de Souza Arrais, Atílio Dadalto, Marcelo Fernandes, Douglas Heydt, Robson Cassiano, Lucas Miranda, Thiago Custodio.
  • 葡萄牙语(葡萄牙): Diogo Barros, António Santos, Antonio Lourenco.
  • 俄语: Ivan Kuzmenko, Roman Slauta, Michael Crane.
  • 西班牙语: José M. Aguilar, Matias Menich, Alberto Poblacion, Daniel J. Pérez Nieto, Andrés Reyes Galgani.
  • 泰米尔语: Nadar Solomon Sunder, Sarath Jasrin, Sakthi Raj, rajakvk, Avinash, ஜெகன் லங்கா சாமி துரை, Anand AV, Jeyanthinath Muthuram, Narayanan Singaram.
  • 泰卢固语: Rama Chandu, Hari Jujjavarapu, Sai Pavan Koundinya Upadhyayula.
  • 乌克兰语: Svitlana Galianova, Borys Lebeda, Dmytro Kyrychuk, Victor Kubrak, Volodymyr Holovka.
  • 乌尔都语: Haseeb Anwer, Saqib Ameen, Ahmad Awais.
  • 越南语: Thanh Phu, Daniel Nguyen, Nguyễn Nhật Tân, Hung Nguyen, Vuong.