July 2018 (version 1.26)

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

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


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

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

在与VS Code重点领域相关的以下各节中安排了发行说明. 以下是一些进一步的更新:

  • 工作台 -新建视图菜单布局,复制相对路径操作,离线模式.
  • 集成终端 -改进的多行支持,改善了渲染效果.
  • 语言 -将命名的导入转换为名称空间导入,并进行JSX折叠.
  • 调试 -改进了停止会话和智能步骤调试.
  • 预览功能 -适用于Windows和Linux的自定义工具和菜单栏.
  • 扩展创作 -QuickInput API,extensionPack声明,webview标题栏图标.

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

Workbench

Breadcrumbs

编辑器现在在其内容上方有一个导航栏-我们称之为面包屑 . 它显示当前位置,并允许您在符号和文件之间快速导航. 要开始使用面包屑,请通过" 视图" >" 显示面包屑"命令或通过" breadcrumbs.enabled设置启用它.

使用编辑器选项卡 (默认)时,面包屑显示在编辑器标题下方的单独一行中. 如果不使用编辑器选项卡,则面包屑在标题旁边显示为交互式文件路径.

Breadcrumbs enabled

面包屑始终显示文件路径,并在扩展名的帮助下显示直到光标位置的符号路径. 显示的符号与"大纲"视图和"转到符号"中的符号相同,因此现有扩展名仅适用于面包屑.

面包屑的外观可以定制. 如果您有很长的路径,或者只对文件路径或符号路径感兴趣,则可以使用breadcrumbs.filePathbreadcrumbs.symbolPath设置. 两者都支持onofflast ,它们定义了您看到的路径的部分或内容.

要与面包屑进行交互,请使用" 聚焦面包屑"命令或按⇧⌘. (Windows,Linux Ctrl + Shift +. . 它将选择最后一个元素并打开一个下拉列表,使您可以导航到同级文件或符号. 使用 (Windows,Linux Left (Windows,Linux Right键盘快捷键转到当前元素之前或之后的元素. 出现下拉菜单时,只需开始键入-所有匹配的元素都将突出显示,并选择最匹配的元素以进行快速导航.

Breadcrumbs active

您也可以在没有选择器的情况下与面包屑进行交互. 按⇧⌘; (Windows,Linux Ctrl + Shift +;聚焦最后一个元素,使用 (Windows,Linux Left (Windows,Linux Right导航,并使用Space在编辑器中显示该元素.

Problems panel Quick Fixes

现在,您可以从"问题"面板中应用快速修复. 当您悬停或选择问题条目时,将显示一个指示"快速修复"的灯泡. 可以通过单击灯泡或打开问题条目的上下文菜单来应用快速修复.

Quick fixes

注:仅当提供"快速修复"的扩展名提供与"快速修复"相关的诊断信息时,才会显示灯泡指示器.

User setup for Windows

宣布了最新版本,Windows的用户设置程序包现已稳定可用. 安装用户设置不需要管理员权限,因为该位置位于用户的本地AppData(LOCALAPPDATA)文件夹下. 用户设置还提供了更流畅的后台更新体验.

Download User Setup

如果您是系统级Windows设置的当前用户,系统将提示您安装用户设置,建议您从现在开始使用. 不用担心,您的所有设置和扩展名都将在过渡期间保留. 在安装过程中,还将提示您卸载系统范围的安装程序.

Grid: Automated maximize of minimized editors

在引入网格编辑器布局的最后一个里程碑期间,我们失去的一个功能是能够使编辑器在聚焦时自动最大化,并使它们处于最小化状态. 此功能现在可以像以前一样工作:

Grid maximize

注意:您始终可以通过" 视图:最大化编辑器组"workbench.action.minimizeOtherEditors最大化活动编辑器,或通过" 视图:重置编辑器组大小"workbench.action.evenEditorWidths )重置所有编辑器大小.

View menu cleanup

" 视图"菜单变得越来越大,我们决定将许多条目移到一个单独的" 外观"子菜单中进行清理.

View menu

Copy relative path

VS Code始终会执行将文件的绝对路径复制到剪贴板的操作( ⌥⌘C (Windows Shift + Alt + C ,Linux Ctrl + Alt + C ). 现在,有一个新的操作" 复制相对路径"⇧⌥⌘C (Windows Ctrl + K Ctrl + Shift + C ,Linux Ctrl + Shift + Alt + C )来相对于工作区文件夹根目录复制文件路径.

注意:您可以通过在打开菜单之前Shift键(在macOS上为Alt键),从上下文菜单(例如,在选项卡或File Explorer中的文件上)执行此操作.

Custom view: File resource decorations

现在,显示文件资源的自定义视图将显示文件修饰(Git,问题). 您可以使用explorer.decorations.colorsexplorer.decorations.badges设置禁用它们,这些设置在文件资源管理器,打开编辑器和自定义视图中将其禁用.

Custom view decorations

Run npm scripts from package.json

您现在可以如下所示从悬停或从上下文菜单在package.json文件中运行npm脚本.

npm script hover

Opening folder URIs

现在,如果存在扩展为该URI贡献FileSystemProvider的扩展,则可以在VS Code中将URI作为文件夹打开. 为此,我们引入了新的命令行参数--folder-uri .

如果安装了RemoteHub扩展,则以下CLI命令将VS Code GitHub存储库作为文件夹打开.

code --folder-uri remotehub://github.com/microsoft/vscode

Open folder URI

Rapid render

在启动时,现在可以更快地恢复基本工作台布局. 还原顺序为活动栏,边栏和状态栏,后跟标题和图标,然后填充"浏览器"和"编辑器"区域.

Rapid render

快速渲染的目的是随着您减少查看空白画布的时间而改善感知性能. 我们有更多有关如何改善渲染性能的想法,我们对您的反馈意见很感兴趣.

Output panel

VS Code的主进程,窗口进程和共享进程每个都有自己的日志记录通道,现在您可以在其中查看将日志级别设置为"跟踪"时发送的遥测事件. 为了简洁起见,所有遥测事件共有的数据在此处将不可见. 每个遥测事件的完整有效负载都记录在一个名为telemetry.log的单独日志文件中,您可以通过" 开发人员:打开日志文件..."命令访问该文件 .

Offline mode

某些用户不希望来自VS Code的任何传出网络请求,除非他们专门调用需要联机访问的功能. 为了支持这种离线模式,我们添加了新的设置以关闭功能,例如自动扩展名更新检查,A / B实验的查询设置以及自动完成的在线数据获取.

以下是用于控制发出网络请求的VS Code功能的设置的完整列表:

  • update.mode
  • update.showReleaseNotes
  • extensions.autoupdate
  • extensions.autoCheckUpdates
  • extensions.showRecommendationsOnlyOnDemand
  • workbench.settings.enableNaturalLanguageSearch
  • workbench.enableExperiments
  • telemetry.enableTelemetry
  • telemetry.enableCrashReporter
  • git.autofetch
  • npm.fetchOnlinePackageInfo

Accessibility improvements

我们已解决了许多可访问性问题-主要涉及键盘导航,屏幕阅读器支持和颜色对比度. 完整列表可以在这里找到.

Integrated Terminal

Column selection

现在,通过Alt+click在集成终端中支持列选择.

Terminal column selection

Improved multiline support

现在,在终端中双击以选择单词时,将选择在行中分开的单词.

Frontend and backend are now synchronized

现在,进入集成终端的数据流与后备伪终端/ shell进程同步. 这意味着进入终端的数据将不再淹没UI线程并导致无响应,SIGINT(Ctrl + C)应该始终是响应性的,并且time命令应该返回准确的结果.

Dynamic texture atlas

现在,集成终端默认使用"动态纹理图集"进行画布渲染. 这改变了终端用来存储字符字形的缓存策略. 现在,字形不再是默认背景上的固定字形集合,而是根据需要添加到纹理图集,而与使用的背景无关. 这将减少第一终端的启动时间和不使用默认背景的字符的渲染时间,并提高整体渲染性能.

这是对xterm.js的上游社区贡献.

Languages

TypeScript 3.0

VS Code现在随TypeScript 3.0.1一起提供. 此重大更新带来了对项目引用的支持,对元组的更好支持以及其他语言和工具功能. 您可以在此处阅读有关TypeScript 3.0的更多信息.

Better error reporting

TypeScript团队做了很多工作,以使JavaScript和TypeScript错误消息更加智能和清晰. 现在,某些错误消息包括指向源代码中相关位置的链接.

Related locations showing in a diagnostic. Clicking on 'box.ts' will show the definition of 'width' in 'box'

给工会和其他复杂类型的消息也应该更加简洁和有用. 例如,JSX中的简单类型错误有时可能会产生如下复杂错误消息:

How this simple type error used to be reported by TypeScript 2.8

多亏了TypeScript 3.0,该错误在VS Code 1.26中更加可读:

How the error is now reported

JSX tag completion

现在,当您在JavaScript或TypeScript文件中键入>时,JSX标记会自动关闭:

Tag completion of JSX tags

此行为与HTML文件中已提供的VS Code匹配. 可以通过设置"javascript.autoClosingTags": false"typescript.autoClosingTags": false来禁用标签的自动关闭.

Add all missing imports Quick Fix

现在,可以将添加缺失的导入快速修复应用于JavaScript / TypeScript文件中的所有缺失的导入:

Adding multiple missing imports with a single quick fix

此快速修复将仅为具有单个潜在定义的符号添加导入. 如果当前项目中可能有多个符号定义,例如,有两个不同的文件导出一个名为Button的符号,则必须快速修复单个错误并选择所需的特定导入.

要在JavaScript文件中使用此快速修复,请启用语义检查 .

JSX folding

JSX标签现在可以在使用语法感知折叠折叠 .

Folding JSX tags

Convert between named imports and namespace imports

两项新的重构使您可以在JavaScript和TypeScript中的命名导入和命名空间导入之间快速转换:

convert to namespace import

Quickly navigate jsconfig.json and tsconfig.json project references by Ctrl clicking on project reference paths (Cmd+click on macOS):

Cmd click on the path to open the referenced project's tsconfig

现在, extends路径也可以单击.

Debugging

Improved stop debug behavior

在以前的版本中," 调试:停止"操作(位于"调试"工具栏上)总是会立即杀死一个被调试对象及其子进程,而不会给被调试对象一个优雅地清理的机会. 一些用户不喜欢这种行为,因为他们在停止调试会话后被迫进行手动清理.

在此版本中,我们通过以下方式改进了" 调试:停止"操作:

  1. 第一次按" 停止 "时,不再立即终止调试对象,而是要求它正常关闭(并在必要时清理所有内容).

  2. 如果该关闭代码中没有断点(或问题),则调试对象和调试会话将终止. 用户将不会发现其行为与以前版本的VS Code有任何区别.

  3. 但是,如果调试器在关闭代码中遇到了断点,或者调试对象没有正确地自行终止,则调试会话将不会结束.

  4. 在这种情况下,再次按" 停止"按钮将强制终止调试对象. 因此,如果您在按下红色的" 停止"按钮后发现调试会话没有结束,请再次按下该按钮以强制关闭调试对象.

注意 :只有选择实现该功能的调试器扩展才支持此功能. 当前,这只是内置的Node.js调试器. 我们希望其他调试扩展会很快支持此功能.

Changed smartStep behavior for Node/Chrome debugging

以前, "smartStep": true会导致Node.js调试器在没有源映射的情况下不会在源代码中停止. 这可以通过两种方式发生:

  • 根本没有源映射的文件(未转译的源代码或节点模块附带的.js文件).
  • 已编译的文件确实具有源映射,但是有一些未映射的行(当向下编译诸如async / await之类的某些功能时,TypeScript会插入额外的行).

在VS Code 1.26中, "smartStep": true仅会影响第二种类型,即源映射中缺少的线. 现在,您可以跳入.js文件,同时仍然跳过TS异步/等待代码.

我们改变了这一点,因为我们意识到旧的smartStep行为过于激进. 跳过插入的代码通常是正确的,但是在第一种情况下跳过仅对某些项目和用户有意义. 另外,在launch.json配置文件中使用skipFiles选项可以更好地覆盖整个文件,因为它可以更精确地定位文件,并且速度更快.

因此,如果您使用的是smartStep并且注意到调试器不再自动跳过没有源映射的文件,则可以使用skipFiles来恢复以前的行为. 有关如何配置skipFiles以跳过node_modules,内部节点文件或您不想逐步执行的任何其他文件中的源代码的示例,请参见跳过不感兴趣的代码 .

Extensions

通过向扩展名搜索字段添加IntelliSense自动填充功能,此版本使搜索扩展名变得更加容易. 这将有助于您优化扩展程序搜索,以根据类别和安装状态等条件过滤结果; 或按名称,等级或安装数量对结果进行排序. 键入" @"或⌃Space (Windows,Linux Ctrl + Space以触​​发有关支持的查询参数的建议.

Extension Search IntelliSense

Extension Pack management

在此版本中,扩展包管理变得更加顺畅. 扩展包始终作为单个包安装,卸载,启用或禁用. 现在,您还可以卸载或禁用属于扩展包的扩展,而无需卸载或禁用整个扩展包.

当您打开扩展详细信息时,还有一个新的扩展包选项卡,其中显示了扩展包中捆绑了哪些扩展.

Extension Pack

注意:这需要扩展包的采用. 有关更多详细信息,请参见重新访问扩展包 .

Disabling extensions from command line

现在,您可以使用新的参数--disable-extension从命令行禁用--disable-extension .

  • code <folder_path> --disable-extension ms-python.python打开禁用了ms-python.python扩展名的文件夹.
  • code <folder_path> --disable-extension ms-python.python --disable-extension ms-dotnettools.csharp文件夹code <folder_path> --disable-extension ms-python.python --disable-extension ms-dotnettools.csharp打开禁用了ms-python.pythonms-dotnettools.csharp扩展的文件夹.

Preview Features

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

New Settings editor

在这个里程碑中,我们继续使用GUI来编辑设置. 它仍然是预览,但是如果您想尝试一下,可以使用" 偏好设置:打开设置(预览)"命令将其打开 . 我们希望听到您的任何反馈-您可以将其保留在GitHub问题上 .

New Settings editor

与上个月相比,一些新变化是:

  • 头文件UX已刷新和清理,并且仅显示修改的设置和打开JSON编辑器的操作已在右侧的...菜单下移动.
  • 现在,默认情况下,左侧的目录已折叠,并在滚动显示当前部分时展开.
  • 设置描述现在呈现为Markdown. 某些设置具有指向相关文档的外部链接,现在可以单击滚动到该设置的可单击链接来引用其他设置. 枚举类型设置的enumDescriptions现在显示在设置描述之后(以及JSON编辑器中):

setting links and Markdown

  • 使用files.excludesearch.exclude设置的新控件,可以更轻松地添加或删除全局模式,以及查看哪些模式适用于当前范围:

new exclude control

  • 现在可以使用设置编辑器中的控件. 在"新主题颜色"下查看新主题颜色 .

Custom title bar and menus for Windows/Linux

当启用自定义标题栏时,我们改进了Windows和Linux上的自定义菜单. 仍处于预览状态时,可以通过在settings.json window.titleBarStyle设置为custom来尝试一下.

一些重点包括:

  • 现在可以使用菜单了. 在"新主题颜色"下查看新主题颜色 .

    Themed Menus

  • 键盘和鼠标与菜单的交互更加连贯. 以前,有几个焦点指示器使菜单不清楚. 现在,菜单以更加熟悉的方式运行.

  • 解决了许多可访问性问题,以提高需要较大缩放级别或使用屏幕阅读器的用户的使用体验.

我们将继续改进新的菜单和标题栏,并解决用workbench-titleworkbench-menu标签标记的问题.

Extension Authoring

QuickInput API

QuickPickInputBox API现在稳定. 与现有的showQuickPickshowInputBox API相比,它们可以更灵活地收集用户输入. 示例扩展中包含QuickInput API用法示例 .

Multi-step input sample

Extension Packs revisited

定义扩展包现在使用了一个名为extensionPack的新属性,而不是package.jsonextensionDependencies . 这是因为extensionDependencies主要用于定义扩展之间的功能依赖关系,从而防止在不卸载或禁用依赖扩展的情况下卸载或禁用扩展依赖.

扩展包与其捆绑的扩展不应具有任何功能依赖性,并且它们应独立于扩展包进行管理. 下面是一个示例extensionPack条目,该条目定义了一个捆绑了多个调试器扩展的扩展包.

"extensionPack": [
    "andreweinand.mock-debug",
    "ms-vscode.mono-debug",
    "ms-vscode.cpptools",
    "ms-dotnettools.csharp",
    "vscjava.vscode-java-debug"
]

这将使用户更加轻松地管理扩展包及其捆绑的扩展. 请参阅扩展包管理 .

Better Workspace edit

The WorkspaceEdit and applyEdit APIs have been extended to allow extensions to create, rename, and delete files. Before, only textual edits were possible. The new APIs allow for better refactorings; for example, renaming a file when a class name is changed.

New theme colors

面包屑有新的主题颜色:

  • breadcrumb.foreground :面包屑项目的颜色.
  • breadcrumb.focusForeground :聚焦的面包屑项目的颜色.
  • breadcrumb.activeSelectionForeground :选定的面包屑项目的颜色.
  • breadcrumbPicker.background :面包屑项目选取器的背景颜色.

现在可以使用新的"设置"编辑器的控件:

  • settings.headerForeground :节标题或活动标题的前景色.
  • settings.modifiedItemForeground :修改后的设置指示器的前景色.
  • settings.inactiveSelectedItemBorder :当设置列表没有焦点时,所选设置行边框的颜色.
  • settings.dropdownBackground :下拉背景.
  • settings.dropdownForeground :下拉前景.
  • settings.dropdownBorder :下拉边框
  • settings.checkboxBackground :复选框背景.
  • settings.checkboxForeground :复选框前景.
  • settings.checkboxBorder :复选框边框.
  • settings.textInputBackground :文本输入框背景.
  • settings.textInputForeground :文本输入框的前景.
  • settings.textInputBorder :文本输入框的边框.
  • settings.numberInputBackground :数字输入框背景.
  • settings.numberInputForeground :数字输入框的前景.
  • settings.numberInputBorder :数字输入框的边框.

现在可以使用Windows和Linux上的自定义菜单:

  • menu.background :菜单和上下文菜单的背景.
  • menu.foreground :菜单和上下文菜单的前景.
  • menu.selectionBackground :菜单和上下文菜单中所选项目的背景.
  • menu.selectionForeground :菜单和上下文菜单中所选项目的前景.
  • menu.selectionBorder :菜单和上下文菜单中所选项目的边框.
  • menubar.selectionBackground :菜单栏中所选顶级菜单的背景.
  • menubar.selectionForeground :菜单栏中所选顶级菜单的前景.
  • menubar.selectionBorder :菜单栏中所选顶级菜单的边框.

Updated default theme colors

作为可访问性改进的一部分,我们更新了一些默认主题颜色,以确保它们满足颜色对比度要求. 可以在此处找到颜色对比度修正的完整列表.

定义提供程序现在可以返回DefinitionLink对象. 定义链接提供了超出常规位置定义的其他元数据,包括定义符号的范围:

import * as vscode from 'vscode';

export function activate(context: vscode.ExtensionContext) {
  vscode.languages.registerDefinitionProvider('markdown', new LineLinkDefinitionProvider());
}

export class LineLinkDefinitionProvider implements vscode.DefinitionProvider {
  async provideDefinition(
    document: vscode.TextDocument,
    position: vscode.Position,
    token: vscode.CancellationToken
  ): Promise<vscode.DefinitionLink[]> {
    const wordRange = document.getWordRangeAtPosition(position, /<\d+>/);
    if (wordRange.isEmpty) {
      return [];
    }

    const targetLine = +document.getText(wordRange).slice(1, -1);
    return [
      {
        // Definition location
        targetRange: new vscode.Range(targetLine - 1, 0, targetLine, 0),
        targetUri: document.uri,

        // Range of the defining symbol
        originSelectionRange: new vscode.Range(
          wordRange.start.translate({ characterDelta: 1 }),
          wordRange.end.translate({ characterDelta: -1 })
        )
      }
    ];
  }
}

Debug extensions

调试适配器协议的新家

我们已将" 调试适配器协议"从其旧位置移至新网站https://microsoft.github.io/debug-adapter-protocol和相应的存储库https://github.com/microsoft/debug-adapter-protocol .

随附的博客, 《调试适配器协议的新家》 ,提供了有关此操作的背景和其他详细信息.

每个从旧位置以编程方式使用DAP JSON模式的人都应将其源代码更新到新位置: https://raw.githubusercontent.com/Microsoft/vscode-debugadapter-node/master/debugProtocol.json

https://microsoft.github.io/debug-adapter-protocol/debugAdapterProtocol.json

对于接下来的两个发行版(八月和九月),我们将使该模式在旧位置保持最新状态,但是我们计划在十月将其删除.

针对调试适配器协议的新terminate请求

一种新的terminate请求和对应的supportsTerminateRequest能力已被添加到调试适配器协议 ,以支持侦错的正常关闭上面所解释的 . 如果调试适配器针对supportsTerminateRequest功能返回true ,则VS Code在停止调试会话时将首先向调试适配器发送terminate请求. 调试适配器中terminate请求的实现应请求调试对象自行终止. 在基于Unix的操作系统上,可以通过将SIGINT信号发送到调试对象来轻松实现.

Webview icons

Web视图现在可以提供一个自定义图标,该图标显示在选项卡栏和OPEN EDITORS视图中:

import * as vscode from 'vscode';
import * as path from 'path';

export function activate(context: vscode.ExtensionContext) {

    context.subscriptions.push(vscode.commands.registerCommand('catCoding.start', () => {
        const panel = vscode.window.createWebviewPanel('catCoding',
            "Coding Cat", vscode.ViewColumn.One, { });

        panel.iconPath = vscode.Uri.file(path.join(context.extensionPath, 'media', 'cat.png'));
    });
}

A webview with a custom icon

Terminal access API

终端访问API现在稳定. 它们允许扩展访问Terminal对象,而不管扩展是否创建了它们.

export namespace window {
  export const terminals: ReadonlyArray<Terminal>;
  export const onDidOpenTerminal: Event<Terminal>;
}

URI handler API

URI处理程序API现在稳定. 它允许扩展处理系统范围的URI .

export interface UriHandler {
  handleUri(uri: Uri): ProviderResult<void>;
}

export namespace window {
  export function registerUriHandler(handler: UriHandler): Disposable;
}

它带有onUri激活事件,该事件会在操作系统打开指向其自身的URI时激活扩展.

有关参考实现,请参考Git扩展的GitProtocolHandler .

Node.js update

VS Code运行所在的Electron版本已更新,该更新带来了VS Code随附的Node.js的更新,版本从7.9到8.9. 现在,所有扩展都将在此更新版本的Node.js上运行.

有些更改可能会影响扩展:

  • natives节点模块将不再有效(见#47569 ).
  • 不再支持旧式调试协议和--debug标志(请参阅#55907 ).
  • 如果使用stdio作为传输方式以Node.js编写的语言服务器在VS Code 1.26中遇到问题,则使用LSP 客户端服务器库的扩展作者的解决方法是将传输方式切换为TransportKind.ipc而不是TransportKind.stdio并重新发布其扩展名.

Proposed Extension APIs

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

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

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

TextSearchProvider, FileSearchProvider, FileIndexProvider

我们添加了一组API,这些扩展使扩展可以在VS Code中实现文本搜索和文件搜索.

TextSearchProvider当用户使用搜索视图或当一个扩展使用新的API被调用workspace.findTextInFiles . 它通过progress回调递增地返回文本匹配项.

有两种方法可以通过FileIndexProviderFileSearchProvider实现覆盖两种常见用例的文件搜索. 用户打开"快速打开"时,将调用一次FileIndexProvider ,并且必须返回工作空间中每个文件的数组. 然后,VS Code在此列表中搜索并应用其自己的模糊匹配逻辑,以将正确的结果集返回给用户. 如果您的扩展程序能够提供工作空间中每个文件的列表,则实现FileIndexProvider是支持文件搜索的更简便方法.

相反,如果您的扩展程序需要处理用户的搜索查询并返回其自己的过滤结果列表,请实现FileSearchProvider . 用户在"快速打开"中的每次按键都将调用它,并且必须返回一组经过过滤和排序的文件匹配项.

export interface TextSearchProvider {
  provideTextSearchResults(
    query: TextSearchQuery,
    options: TextSearchOptions,
    progress: Progress<TextSearchResult>,
    token: CancellationToken
  ): Thenable<void>;
}

export interface FileIndexProvider {
  provideFileIndex(options: FileIndexOptions, token: CancellationToken): Thenable<Uri[]>;
}

export interface FileSearchProvider {
  provideFileSearchResults(
    query: FileSearchQuery,
    options: FileSearchOptions,
    token: CancellationToken
  ): Thenable<Uri[]>;
}

export namespace workspace {
  export function registerTextSearchProvider(
    scheme: string,
    provider: TextSearchProvider
  ): Disposable;
  export function registerFileIndexProvider(
    scheme: string,
    provider: FileIndexProvider
  ): Disposable;
  export function registerFileSearchProvider(
    scheme: string,
    provider: FileSearchProvider
  ): Disposable;
}

findTextInFiles API

添加了新提议的API,以允许扩展搜索工作空间内的文本模式:

export namespace workspace {
  export function findTextInFiles(
    query: TextSearchQuery,
    options: FindTextInFilesOptions,
    callback: (result: TextSearchResult) => void,
    token?: CancellationToken
  ): Thenable<void>;
}

这是workspace.findFiles的副本,后者在workspace.findFiles中搜索文件.

Miscellaneous

Electron update

在此版本中,我们从Electron 1.7.12更新到了2.0.5. 这将Chromium从58更新到61,将Node.js从7.9更新到8.9.

New Documentation

Logpoints blog post

You can read Kenneth's recent blog post to learn about Node.js debugging Logpoints and auto-attach. Logpoints let you quickly output logging information without changing source code or interrupting your debugging session.

IntelliCode FAQ

如果您是Python开发人员,请查看IntelliCode ,这是一个使用人工智能(AI)增强软件开发的新工具. IntelliCode扩展为Python中的IntelliSense提供了一组AI辅助功能,例如根据当前的源代码上下文推断最相关的自动完成.

IntelliCode extension

Notable Changes

  • 53532 :编辑器:如果文件已经加载,则在后台加载对文件的更改
  • 53586 :节点调试:不记得自动附加模式
  • 53022 :编辑器选项卡中的"只读"标签用于只读文件
  • 48275 :不再支持resourceIsFile上下文密钥

Thank You

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

vscode贡献:

language-server-protocol贡献:

vscode-chrome-debug贡献:

vscode-chrome-debug-core贡献:

vscode-vsce贡献:

Contributions to vscode-recipes:

localization贡献:

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

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

  • 中文(简体):杨乔尔,俞松,普鲁文,刘鼎铭,李鼎铭,黑客,陈冠希,吴敬,方石,王自明.
  • Chinese (Traditional): Duran Hsieh, Will 保哥, Poy Chang, Alan Tsai, Kevin Yang, Winnie Lin, MartinLau, Ben Tsai 蔡和恩, Alan Liu.
  • 法语:安托万·格里弗德(Antoine Griffard),路多维奇·P(Ludovic P),威廉·蒂博杜(William Thibodeau),阿德里安·克莱博瓦斯(Adrien Clerbois),阿兰·伯芬(Alain BUFERNE).
  • 德语: Carsten Siemens,Carsten Kneip,Markus Hatvan,VäinämöLumikero,Ettore Atalan,AlCalzone和Levin Rickert.
  • Italian: Alessandro Alpi, Andrea Dottor, Emilie Rollandin, Riccardo Cappello, Aldo Donetti, Massimo.
  • 日语: Kajiura Satoshi,Nukiyama Yuichi,Tajaya岛岛顺佳,yoshioms,Nakamura Yuta.
  • Korean: Helloyunho.
  • 俄语: Michel Ace.
  • 西班牙语:阿尔贝托·波巴西翁(Alberto Poblacion),朱利安·马丁内斯(JuliánMartínez),亚历杭德罗·麦地那(Alejandro Medina),何塞·M·阿吉拉尔(JoséM.
  • 波斯尼亚语:巴鲁丁·赫尔尼察(Bahrudin Hrnjica).
  • 保加利亚语: ЛюбомирВасилев.
  • 捷克语: ĽubošUličný,ĽubomírKováč,Frantisek Veris.
  • 荷兰语: Gerald Versluis,RubenJacobse,Armand Duijn,Dirk Didburg,Maarten van Stam,Dean Wyns.
  • 英语(英国): Matthew John Cheetham,Swotboy2000.
  • 芬兰语: Feetu Nyrhinen,PetriNiinimäki,Make.
  • 希腊文: Ioannis Paraskevopoulos,Theodore Tsirpanis.
  • 匈牙利语: DócziDominik.
  • 印尼文: Laurensius Dede Suhardiman,Wildan Mubarok,Riwut Libinuko,Bagus Ilman,Lundy Orlando.
  • 挪威语:安德烈娜(Andreona),丹尼尔·比昂巴克(DanielBjørnbakk).
  • 波兰语: Patryk Brejdak,Sebastian Baran,IgorŚpiączka,Lukasz Woznicki.
  • 葡萄牙文(巴西):卢卡斯·米兰达 Lucas Miranda),奥塔西里奥·萨拉瓦·迈亚·内托(Otacilio Saraiva Maia Neto),罗伯托·丰塞卡(Roberto Fonseca),马塞洛·卡马尔戈(Marcelo Camargo),马塞洛·诺瓦斯(Marcelo Novaes),维克多·雨果·施密特,佩德罗·塞雷诺(Pedro Sereno),拉斐尔·奥利维拉(Rafael Oliveira),达尼洛·丹塔斯(Danilos Dantas),维托尔·杜特拉·弗雷雷(Vitor Dutra Freire),卢安·莫雷诺·梅迪罗斯·马尼尔(Fabor Correia).
  • 葡萄牙语(葡萄牙): Daniel Correia,Pavlo Zakharuk,Antonio Santos,JoãoMata,Diogo Barros,Danilo Dantas.
  • 罗马尼亚语:席里克·罗伯特(Schiriac Robert),康奈尔·科西奥阿巴(Cornel Cocioaba),丹·伊希姆(Dan Ichim),亚历山大·斯皮努(Alexandru Spinu),ovisan,博格丹·马特斯库(Bogdan Mateescu).
  • Tamil: Jeyanthinath Muthuram, Jam Station.
  • 乌克兰语: Oleksandr,Fedir Gordiienko,Volodymyr Holovka.