🚀 在 VS Code 中

2018 年 7 月 (版本 1.26)

更新 1.26.1:此更新解決了這些問題

下載:Windows:x64 | Mac:Intel | Linux 64 位元:deb rpm tarball | 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:想盡快看到新功能嗎?您可以下載 Insiders 每日組建,並在最新更新可用時立即試用。如需 Visual Studio Code 的最新消息、更新和內容,請在 Twitter 上追蹤我們 @code

工作台

麵包屑導航

編輯器現在在其內容上方有一個導覽列 - 我們稱之為麵包屑導航。它會顯示目前位置,並讓您可以在符號和檔案之間快速導覽。若要開始使用麵包屑導航,請使用檢視 > 顯示麵包屑導航命令或透過 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 以在編輯器中顯示元素。

問題面板快速修復

您現在可以從「問題」面板套用快速修復。當您將滑鼠停留在問題項目上方或選取問題項目時,會顯示指示快速修復的小燈泡。可以透過按一下小燈泡或開啟問題項目的操作功能表來套用快速修復。

Quick fixes

注意:只有在提供快速修復的擴充功能提供與快速修復相關聯的 Diagnostic 資訊時,才會顯示小燈泡指示器。

Windows 上的使用者安裝程式

上一個版本已宣布,Windows 的使用者安裝程式套件現在已在穩定版上提供。安裝使用者安裝程式不需要系統管理員權限,因為位置會在您的使用者 Local AppData (LOCALAPPDATA) 資料夾下。使用者安裝程式也提供更順暢的背景更新體驗。

下載使用者安裝程式

如果您是系統範圍 Windows 安裝程式的目前使用者,系統會提示您安裝使用者安裝程式,我們建議您從現在開始使用它。別擔心,您的所有設定和擴充功能都會在轉換期間保留。在安裝期間,系統也會提示您解除安裝系統範圍安裝程式。

格線:自動最大化最小化的編輯器

在上一個里程碑中引入格線編輯器配置期間,我們遺失的一項功能是讓編輯器在您聚焦它們且它們處於最小化狀態時自動最大化的能力。此功能現在與之前一樣運作

Grid maximize

注意:您隨時可以透過檢視:最大化編輯器群組 (workbench.action.minimizeOtherEditors) 最大化使用中的編輯器,或透過檢視:重設編輯器群組大小 (workbench.action.evenEditorWidths) 重設所有編輯器大小。

「檢視」選單清理

檢視選單變得非常大,因此我們決定將許多項目移至個別的外觀子選單中以進行清理。

View menu

複製相對路徑

VS Code 一直都有將檔案的絕對路徑複製到剪貼簿的動作 (⌘K ⌥⌘C (Windows Shift+Alt+C, Linux Ctrl+K Ctrl+Alt+C))。現在有一個新的動作複製相對路徑 (⌘K ⇧⌥⌘C (Windows Ctrl+K Ctrl+Shift+C, Linux Ctrl+K Ctrl+Shift+Alt+C)) 可將檔案路徑複製為相對於工作區資料夾根目錄的路徑。

注意:您可以從操作功能表 (例如,在索引標籤或檔案總管中的檔案上) 存取此動作,方法是在開啟選單之前按住 Shift 鍵 (macOS 上為 Alt 鍵)。

自訂檢視:檔案資源裝飾

顯示檔案資源的自訂檢視現在將顯示檔案裝飾 (Git、問題)。您可以使用設定 explorer.decorations.colorsexplorer.decorations.badges 停用它們,這會在檔案總管、開啟的編輯器和自訂檢視中停用它們。

Custom view decorations

從 package.json 執行 npm 指令碼

您現在可以從 hover 或操作功能表執行 package.json 檔案中的 npm 指令碼,如下所示。

npm script hover

開啟資料夾 URI

如果擴充功能為該 URI 提供 FileSystemProvider,您現在可以將 URI 作為資料夾在 VS Code 中開啟。我們引入了新的命令列引數 --folder-uri 來執行此操作。

如果您已安裝 RemoteHub 擴充功能,則下列 CLI 命令會將 VS Code GitHub 存放庫作為資料夾開啟。

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

Open folder URI

快速渲染

在啟動時,基本工作台配置現在還原速度更快。還原順序為活動列、側邊欄和狀態列,接著是標頭和圖示,然後填入檔案總管和編輯器區域。

Rapid render

快速渲染旨在改善感知效能,因為您看著空白畫布的時間會縮短。我們有更多關於如何改善渲染效能的想法,我們對您的意見反應感興趣。

輸出面板

VS Code 的主要、視窗和共用程序各自有自己的記錄通道,您現在可以在其中檢視當記錄層級設定為「追蹤」時傳送的遙測事件。為了簡潔起見,所有遙測事件共有的資料在此處將不可見。每個遙測事件的完整承載會記錄在名為 telemetry.log 的個別記錄檔中,您可以透過開發人員:開啟記錄檔... 命令存取該記錄檔。

離線模式

某些使用者不希望 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

協助工具改善

我們修正了許多協助工具問題 - 主要圍繞鍵盤導覽、螢幕助讀程式支援和色彩對比。完整的清單可以在這裡找到。

整合式終端機

欄選取

整合式終端機現在透過 Alt+滑鼠點擊 支援欄選取。

Terminal column selection

改良的多行支援

在終端機中按兩下滑鼠以選取單字現在會選取跨越多行的單字。

前端和後端現在已同步

進入整合式終端機的資料串流現在與後端虛擬終端機/shell 程序同步。這表示進入終端機的資料不再會淹沒 UI 執行緒並導致無回應,SIGINT (Ctrl+C) 應一律具有回應性,且 time 命令應傳回精確的結果。

動態紋理圖集

整合式終端機現在預設使用「動態紋理圖集」進行畫布渲染。這會變更終端機使用的快取策略,以儲存字元字元形狀。字元形狀不再是預設背景上的固定字元形狀集,而是根據需要將字元形狀新增至紋理圖集,無論使用的背景為何。這應可縮短第一次終端機啟動時間和未使用預設背景之字元的渲染時間,並改善整體渲染效能。

這是作為對 xterm.js 的上游社群貢獻而來的。

語言

TypeScript 3.0

VS Code 現在隨附 TypeScript 3.0.1。此主要更新帶來了專案參考支援、更佳的 Tuple 支援,以及其他語言和工具功能。您可以在這裡閱讀有關 TypeScript 3.0 的詳細資訊。

更佳的錯誤報告

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 標籤自動完成

當您在 JavaScript 或 TypeScript 檔案中輸入 > 時,現在會自動關閉 JSX 標籤

Tag completion of JSX tags

此行為與 VS Code 已在 HTML 檔案中提供的行為相符。可以透過設定 "javascript.autoClosingTags": false"typescript.autoClosingTags": false 來停用標籤自動關閉。

新增所有遺失的匯入快速修復

新增遺失的匯入快速修復現在可以套用至 JavaScript/TypeScript 檔案中的所有遺失匯入

Adding multiple missing imports with a single quick fix

此快速修復只會為具有單一潛在定義的符號新增匯入。如果目前專案中有符號的多個潛在定義,例如有兩個不同的檔案匯出名為 Button 的符號,您必須快速修復個別錯誤,並選取您想要的特定匯入。

若要在 JavaScript 檔案中使用此快速修復,請啟用語意檢查

JSX 折疊

使用語法感知折疊時,JSX 標籤現在可折疊。

Folding JSX tags

在具名匯入和命名空間匯入之間轉換

兩個新的重構可讓您在 JavaScript 和 TypeScript 中快速在具名匯入和命名空間匯入之間轉換

convert to namespace import

透過 Ctrl 按一下專案參考路徑 (macOS 上為 Cmd+按一下) 快速導覽 jsconfig.jsontsconfig.json 專案參考

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

extends 路徑現在也可按一下。

偵錯

改良的停止偵錯行為

在先前的版本中,偵錯:停止動作 (在偵錯工具列上找到) 一律會立即終止偵錯工具及其子程序,而不會讓偵錯工具有機會正常清除。某些使用者不喜歡此行為,因為他們在停止偵錯工作階段後被迫執行手動清除。

在此版本中,我們以下列方式改善了 偵錯:停止動作

  1. 第一次按下停止時,不再立即終止偵錯工具,而是要求其正常關機 (並視需要清除所有項目)。

  2. 如果關機程式碼中沒有中斷點 (或問題),偵錯工具和偵錯工作階段將會終止。使用者不會看到與先前版本的 VS Code 有任何行為差異。

  3. 但是,如果偵錯工具在關機程式碼中遇到中斷點,或偵錯工具本身未正確終止,則偵錯工作階段將不會結束。

  4. 在此情況下,再次按下停止按鈕將會強制終止偵錯工具。因此,如果您看到偵錯工作階段在您按下紅色停止按鈕時未結束,請再次按下按鈕以強制關閉偵錯工具。

注意:只有已選擇實作此功能的偵錯工具擴充功能才支援此功能。目前只有內建的 Node.js 偵錯工具。我們預期其他偵錯工具擴充功能很快就會支援此功能。

Node/Chrome 偵錯的智慧逐步行為已變更

先前,"smartStep": true 會導致 Node.js 偵錯工具不會在沒有來源地圖的原始碼中停止。這可能會以兩種方式發生

  • 完全沒有來源地圖的檔案 (未轉換的原始碼或隨附於 node 模組的 .js 檔案)。
  • 已轉換的檔案確實有來源地圖,但有未對應的個別行 (TypeScript 在向下編譯某些功能 (例如 async/await) 時插入的額外行)。

在 VS Code 1.26 中,"smartStep": true 只會影響第二種類型,即來源地圖中遺失的行。現在您可以逐步執行 .js 檔案,同時仍略過 TS async/await 程式碼。

我們變更此設定是因為我們意識到舊的智慧逐步行為太過激進。略過插入的程式碼通常是正確的,但略過第一種案例只對某些專案和使用者有意義。此外,在您的 launch.json 組態檔中使用 skipFiles 選項可以更好地涵蓋整個檔案的案例,因為它可以更精確地鎖定檔案,而且速度更快。

因此,如果您使用 smartStep 並注意到偵錯工具不再自動略過沒有來源地圖的檔案,您可以使用 skipFiles 來還原先前的行為。請參閱略過不感興趣的程式碼,以取得如何設定 skipFiles 以略過 node_modules、內部節點檔案或您不想逐步執行的任何其他檔案中的原始碼範例。

擴充功能

此版本透過將 IntelliSense 自動完成新增至擴充功能搜尋欄位,讓搜尋擴充功能變得更容易。這將協助您精簡擴充功能搜尋,以根據類別和安裝狀態等項目篩選結果;或依名稱、評等或安裝計數排序結果。輸入 '@' 或 ⌃Space (Windows、Linux Ctrl+Space) 以觸發支援的查詢參數建議。

Extension Search IntelliSense

擴充功能套件管理

在此版本中,擴充功能套件管理變得更加順暢。擴充功能套件一律會作為單一套件安裝、解除安裝、啟用或停用。您現在也可以解除安裝或停用屬於擴充功能套件的擴充功能,而不需要您解除安裝或停用整個擴充功能套件。

當您開啟擴充功能詳細資料時,也會有一個新的 擴充功能套件 索引標籤,顯示擴充功能套件中包含哪些擴充功能。

Extension Pack

注意:這需要擴充功能套件採用。請參閱擴充功能套件重新檢視以取得更多詳細資訊。

從命令列停用擴充功能

您現在可以使用新的引數 --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 - 開啟已停用 ms-python.pythonms-dotnettools.csharp 擴充功能的資料夾。

預覽功能

預覽功能尚未準備好發行,但功能已足夠使用。我們歡迎您在開發期間提供早期意見反應。

新的設定編輯器

在此里程碑中,我們繼續開發用於編輯設定的 GUI。它仍然是預覽版,但如果您想試用,可以使用喜好設定:開啟設定 (預覽) 命令開啟它。我們想聽取您的任何意見反應 - 您可以在此 GitHub 問題上留下意見反應。

New Settings editor

與上個月相比,一些新的變更如下

  • 標頭 UX 已重新整理和清理,且僅顯示已修改設定和開啟 JSON 編輯器的動作已移至右側的 ... 選單下。
  • 左側的目錄現在預設為摺疊,並在您捲動以顯示目前區段時展開。
  • 設定描述現在以 Markdown 呈現。某些設定具有相關文件和外部連結,且其他設定的參考現在是可按一下的連結,可捲動至設定。列舉類型設定的 enumDescriptions 現在會顯示在設定描述之後 (以及 JSON 編輯器中)

setting links and Markdown

  • files.excludesearch.exclude 設定的新控制項讓新增或移除 glob 模式,以及查看哪些模式適用於目前範圍變得更容易

new exclude control

  • 設定編輯器中的控制項現在可主題化。請參閱新的主題色彩下的新主題色彩。

Windows/Linux 的自訂標題列和選單

此里程碑中,我們在使用自訂標題列時,改善了 Windows 和 Linux 上的自訂選單。雖然仍在預覽中,但您可以嘗試在 settings.json 中將 window.titleBarStyle 設定為 custom 來試用它。

一些重點包括

  • 選單現在可主題化。請參閱新的主題色彩下的新主題色彩。

    Themed Menus

  • 與選單的鍵盤和滑鼠互動更加一致。之前,有數個焦點指示器讓選單不清楚。現在,選單的功能方式更為熟悉。

  • 已解決許多協助工具問題,以改善需要較大縮放層級或使用螢幕助讀程式的使用者的體驗。

我們將繼續改善新的選單和標題列,並解決標記為 workbench-titleworkbench-menu 標籤的問題。

擴充功能撰寫

QuickInput API

QuickPickInputBox API 現在已穩定。它們比現有的 showQuickPickshowInputBox API 更能彈性地收集使用者輸入。在範例擴充功能中有 QuickInput API 用法範例。

Multi-step input sample

擴充功能套件重新檢視

定義擴充功能套件現在使用名為 extensionPack 而不是 package.json 中的 extensionDependencies 的新屬性。這是因為 extensionDependencies 主要用於定義擴充功能之間的函式相依性,這會防止在未解除安裝或停用相依擴充功能的情況下解除安裝或停用擴充功能相依性。

擴充功能套件不應與其配套擴充功能有任何函式相依性,而且它們應可獨立於套件進行管理。以下是 extensionPack 專案範例,其定義了配套數個偵錯工具擴充功能的擴充功能套件。

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

這將讓使用者管理擴充功能套件及其配套擴充功能變得更簡單容易。請參閱擴充功能套件管理

更佳的工作區編輯

已擴充 WorkspaceEditapplyEdit API,以允許擴充功能建立、重新命名和刪除檔案。之前,只能進行文字編輯。新的 API 允許更好的重構;例如,在類別名稱變更時重新命名檔案。

新的主題色彩

麵包屑導航有新的主題色彩

  • 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:選單列中選取的最上層選單的邊框。

更新的預設主題色彩

作為我們協助工具改善的一部分,我們更新了一些預設主題色彩,以確保它們符合色彩對比需求。色彩對比修正的完整清單可以在這裡找到。

定義提供者現在可能會傳回 DefinitionLink 物件。DefinitionLink 提供相較於正常 location 定義的其他中繼資料,包括定義符號的範圍

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 })
        )
      }
    ];
  }
}

偵錯工具擴充功能

偵錯工具配接器通訊協定的新首頁

我們已將 偵錯工具配接器通訊協定 從其舊位置移至新的網站 https://microsoft.github.io/debug-adapter-protocol 和對應的存放庫 https://github.com/microsoft/debug-adapter-protocol

隨附的部落格 偵錯工具配接器通訊協定的新首頁 提供背景和有關移動的其他詳細資訊。

每個從舊位置 https://raw.githubusercontent.com/Microsoft/vscode-debugadapter-node/main/debugProtocol.json 以程式設計方式使用 DAP JSON 結構描述的人員,都應將其原始碼更新為新位置

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

在接下來的兩個版本 (8 月和 9 月) 中,我們將使舊位置的結構描述保持最新狀態,但我們計劃在 10 月移除它。

偵錯工具配接器通訊協定的新 terminate 要求

為了支援偵錯目標的正常關閉,已在偵錯配接器協定中新增了新的 terminate 請求和對應的 supportsTerminateRequest 功能,詳情請參閱上述說明。如果偵錯配接器針對 supportsTerminateRequest 功能傳回 true,當 VS Code 停止偵錯工作階段時,會先傳送 terminate 請求給偵錯配接器。偵錯配接器中 terminate 請求的實作應要求偵錯目標自行終止。在以 Unix 為基礎的作業系統上,這可以透過傳送 SIGINT 訊號給偵錯目標輕鬆達成。

Webview 圖示

Webview 現在可以提供自訂圖示,該圖示會顯示在索引標籤列和開啟的編輯器檢視中

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

終端機存取 API

終端機存取 API 現在已穩定。它們允許擴充功能存取 Terminal 物件,無論擴充功能是否建立它們。

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

URI 處理常式 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 更新

VS Code 執行的 Electron 版本已更新,同時也將 VS Code 隨附的 Node.js 從 7.9 更新至 8.9。所有擴充功能現在都將在此較新版本的 Node.js 上執行。

有些變更可能會影響擴充功能

  • natives node 模組不再運作 (請參閱 #47569)。
  • 舊版的偵錯協定和 --debug 旗標不再支援 (請參閱 #55907)。
  • 如果以 Node.js 撰寫並使用 stdio 作為傳輸方式的語言伺服器在 VS Code 1.26 中遇到問題,則使用 LSP clientserver 程式庫的擴充功能作者的修復方法是將傳輸方式切換為 TransportKind.ipc 而不是 TransportKind.stdio,然後重新發布其擴充功能。

建議的擴充功能 API

每個里程碑版本都帶有新的建議 API,擴充功能作者可以試用。如同以往,我們渴望收到您的意見反應。以下是您試用建議 API 必須執行的操作

  • 您必須使用 Insiders 版本,因為建議 API 經常變更。
  • 您必須在擴充功能的 package.json 檔案中加入這行程式碼:"enableProposedApi": true
  • 將最新版本的 vscode.proposed.d.ts 檔案複製到您的專案中。

請注意,您無法發布使用建議 API 的擴充功能。我們可能會在下一個版本中進行重大變更,而且我們絕不想破壞現有的擴充功能。

TextSearchProvider、FileSearchProvider、FileIndexProvider

我們新增了一組 API,讓擴充功能可以在 VS Code 中實作文字搜尋和檔案搜尋。

當使用者使用 [搜尋] 檢視或擴充功能使用新的 API workspace.findTextInFiles 時,會叫用 TextSearchProvider。它會透過 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 的對應功能,後者會在工作區中搜尋檔案。

其他

Electron 更新

在此版本中,我們從 Electron 1.7.12 更新至 2.0.5。這帶來了 Chromium 從版本 58 更新至 61,以及 Node.js 從 7.9 更新至 8.9。

新文件

Logpoints 部落格文章

您可以閱讀 Kenneth 最近的部落格文章,以了解 Node.js 偵錯 Logpoints 和自動附加。Logpoints 讓您可以快速輸出記錄資訊,而無需變更原始碼或中斷偵錯工作階段。

IntelliCode 常見問題

如果您是 Python 開發人員,請查看 IntelliCode,這是一個使用人工智慧 (AI) 增強軟體開發的新工具。IntelliCode 擴充功能為 Python 中的 IntelliSense 提供了一組 AI 輔助功能,例如根據目前的原始碼內容推斷最相關的自動完成建議。

IntelliCode extension

重大變更

  • 53532: 編輯器:如果檔案已載入,則在背景載入檔案的變更
  • 53586: Node 偵錯:不記得自動附加模式
  • 53022: 編輯器索引標籤中針對唯讀檔案的「唯讀」標籤
  • 48275: 不再支援 resourceIsFile 內容金鑰

感謝您

最後但同樣重要的是,衷心感謝!以下人士協助使 VS Code 變得更好

vscode 的貢獻

language-server-protocol 的貢獻

vscode-chrome-debug 的貢獻

vscode-chrome-debug-core 的貢獻

  • @digeff
    • 將 win32 路徑規範化為小寫 PR #342
    • 在 Windows 中將路徑規範化為小寫 PR #341
  • @Pokute: 新增對 URI 編碼來源地圖的支援 + 測試。 PR #344
  • Raghav Katyal (@rakatyal)
    • 現在,當嘗試連線時,我們會記錄瀏覽器和協定版本 … PR #338
    • 當我們重設來源對應中的中斷點時,會持續保存用戶端 ID … PR #337

vscode-vsce 的貢獻

vscode-recipes 的貢獻

localization 的貢獻

Transifex VS Code 專案團隊中有超過 800 位成員,每月約有 100 位活躍貢獻者。我們感謝您的貢獻,無論是提供新的翻譯、為翻譯投票,或是建議流程改進。

以下是此版本的貢獻者快照。如需專案的詳細資訊,包括貢獻者名稱清單,請造訪專案網站:https://aka.ms/vscodeloc

  • 簡體中文: Joel Yang, Yusong, pluwen, Liu Dingming 刘丁明, hackereric, Simon Chan, 韦煊 王, gzponline, Ziming Wang。
  • 繁體中文: Duran Hsieh, Will 保哥, Poy Chang, Alan Tsai, Kevin Yang, Winnie Lin, MartinLau, Ben Tsai 蔡和恩, Alan Liu。
  • 法文: Antoine Griffard, Ludovic P, William Thibodeau, Adrien Clerbois, Alain BUFERNE。
  • 德文: Carsten Siemens, Carsten Kneip, Markus Hatvan, Väinämö Lumikero, Ettore Atalan, AlCalzone, Levin Rickert。
  • 義大利文: Alessandro Alpi, Andrea Dottor, Emilie Rollandin, Riccardo Cappello, Aldo Donetti, Massimo。
  • 日文: Satoshi Kajiura, Yuichi Nukiyama, Shunya Tajima, yoshioms, Nakamura Yuta。
  • 韓文: Helloyunho。
  • 俄文: Michel Ace。
  • 西班牙文: Alberto Poblacion, Julián Martínez, Alejandro Medina, José M. Aguilar, Carlos Mendible, Pedro Sanchez, Lio Fleishman。
  • 波士尼亞文: Bahrudin Hrnjica。
  • 保加利亞文: Любомир Василев。
  • 捷克文: Ľuboš Uličný, Ľubomír Kováč, Frantisek Veris。
  • 荷蘭文: Gerald Versluis, RubenJacobse, Armand Duijn, Dirk Doesburg, Maarten van Stam, Dean Wyns。
  • 英文 (英國): Matthew John Cheetham, Swotboy2000。
  • 芬蘭文: Feetu Nyrhinen, Petri Niinimäki, Make。
  • 希臘文: Ioannis Paraskevopoulos, Theodore Tsirpanis。
  • 匈牙利文: Dóczi Dominik。
  • 印尼文: Laurensius Dede Suhardiman, Wildan Mubarok, Riwut Libinuko, Bagus Ilman, Lundy Orlando。
  • 挪威文: andreona, Daniel Bjørnbakk。
  • 波蘭文: Patryk Brejdak, Sebastian Baran, Igor Śpiączka, Lukasz Woznicki。
  • 葡萄牙文 (巴西): Lucas Miranda, Otacilio Saraiva Maia Neto, Roberto Fonseca, Marcelo Camargo, Marcelo Novaes, Victor Hugo Schmidt, Pedro Sereno, Rafael Oliveira, Danilo Dantas, Vitor Dutra Freire, Luan Moreno Medeiros Maciel, Fabio Correia。
  • 葡萄牙文 (葡萄牙): Daniel Correia, Pavlo Zakharuk, António Santos, João Mata, Diogo Barros, Danilo Dantas。
  • 羅馬尼亞文: Schiriac Robert, Cornel Cocioaba, Dan Ichim, Alexandru Spinu, ovisan, Bogdan Mateescu。
  • 坦米爾文: Jeyanthinath Muthuram, Jam Station。
  • 烏克蘭文: Oleksandr, Fedir Gordiienko, Volodymyr Holovka。