現已釋出!閱讀關於 11 月新增功能和修復的內容。

2018 年 8 月 (版本 1.27)

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

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


歡迎使用 Visual Studio Code 2018 年 8 月版。此版本中有許多重大更新,我們希望你會喜歡,其中一些主要亮點包括:

如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。
你還可以觀看雲開發者倡導者 Brian Clark 製作的 1.27 版本亮點影片

Insiders:想盡快看到新功能嗎?您可以下載每夜更新的 Insiders 構建版本,並第一時間嘗試最新的更新。有關最新的 Visual Studio Code 新聞、更新和內容,請在 Twitter 上關注我們 @code

工作臺

設定編輯器

在過去的幾個月中,我們一直在開發用於編輯設定的 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

Windows 和 Linux 上的自定義標題欄和選單

在過去的幾次迭代中,我們還一直致力於改進 Windows 和 Linux 上標題欄和選單的外觀、感覺和可用性。在此迭代中,我們正在刪除預覽標籤,目標是使其很快成為 Windows 上的預設體驗。要啟用此功能,你可以將設定 "window.titleBarStyle" 設定為 "custom"

Custom Title Bar and Menus

新體驗比預設體驗具有多個優勢

  • 整個產品中可主題化的標題欄、選單欄和上下文選單。這意味著你的深色主題保持深色!
  • 選單欄中更好的鍵盤導航。我們使其更容易透過鍵盤在選單之間切換並使用選單助記符。
  • 侵入性較小的選單欄。當將 "window.menuBarVisibility" 設定為 "toggle" 時,新體驗更緊湊,不那麼突兀。
  • 更好的可訪問性。已解決幾個可訪問性問題,以改進使用螢幕閱讀器的選單可用性。

由於我們希望將這種新體驗作為 Windows 上的預設體驗,我們鼓勵你試用它並向我們傳送反饋,以便我們提供最佳體驗。

麵包屑改進

我們調整了新的麵包屑欄,進行了各種改進並修復了錯誤

  • 聚焦的文件符號現在在編輯器中突出顯示。
  • 當執行焦點命令 (⇧⌘; (Windows, Linux Ctrl+Shift+;)) 時,麵包屑會自動啟用。
  • 麵包屑與主題更好地協同工作。
  • 麵包屑現在遵守檔案排除配置。

Breadcrumbs Highlights

新終端選單

任務選單已重新命名為終端,並添加了整合終端的一些更多條目。

Terminal Menu

平臺特定鍵盤快捷方式

現在可以使用 keybinding 的 when 子句中的 isLinuxisMacisWindows 為特定作業系統啟用鍵盤快捷方式

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

這使得在不同機器之間共享 keybindings.json 檔案變得更加容易。

將視窗作為新的原生標籤頁開啟

一個新的 macOS 專用命令 workbench.action.newWindowTab 將視窗作為新的原生標籤頁開啟。newWindowTab 沒有預設的鍵繫結,並且需要啟用設定 window.nativeTabs

檔案在外部刪除/重新命名時不再關閉

我們將 workbench.editor.closeOnFileDelete 設定的預設值從 true 更改為 false。這意味著在 VS Code 之外(或透過 Git 或整合終端中的命令等其他程式)刪除或重新命名的檔案將不再關閉作為編輯器標籤頁開啟的檔案。相反,檔案將指示它已從磁碟中刪除,你可以儲存檔案以將其恢復。

Deleted from Disk

注意:除非檔案已修改,否則檔案內容在重新啟動之間不會保留。

中鍵單擊在新編輯器中開啟檔案

現在可以在資源管理器檢視中使用滑鼠中鍵單擊在新編輯器中開啟檔案,而不是在預覽模式下重用上一個編輯器。

輔助功能改進

我們修復了相當多的可訪問性問題 - 主要圍繞鍵盤導航、螢幕閱讀器支援和焦點。可以在此處找到完整列表。這是一項正在進行的工作,我們計劃在 9 月繼續進行。

改進的 Windows 後臺更新

我們對自定義 Windows 後臺更新程式進行了一些穩定性工作,以解決導致某些使用者安裝損壞的問題。這是一項持續的工作項,將在即將釋出的版本中進行更多改進。

編輯器

自動關閉和包圍字元

當鍵入某些括號(例如 {[()時,根據程式語言的不同,如果後面跟著通常不能開始表示式的特定字元(例如 ;:.,=}])>),它們將預設自動關閉。此行為可以透過 editor.autoClosingBrackets 設定進行自定義。類似地,可以透過 editor.autoClosingQuotes 在鍵入引號(例如 "'`)時自定義自動關閉行為。

當選擇文字並鍵入其中一個字元時,選擇將由括號或引號包圍。現在可以透過新的 editor.autoSurround 設定單獨調整此行為。

語言

CSS import 的路徑補全

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" 將在達到最大行長度時換行屬性,並將所有換行行與第一個屬性對齊。

aligned-multiple

TypeScript 3.0.3

VS Code 現在附帶 TypeScript 3.0.3。此次小版本更新修復了許多錯誤並提高了穩定性。你可以在此處閱讀完整的更改集。

除錯

載入指令碼檢視現可重用

一年多來,除錯檢視中的載入指令碼資源管理器由 Node.js 除錯擴充套件提供,其他偵錯程式無法使用。在此版本中,我們將載入指令碼檢視新增為內建偵錯程式功能。所有具有“指令碼”概念的除錯擴充套件都將能夠支援在動態更新的檢視中訪問其指令碼。

此外,我們改進了舊載入指令碼資源管理器的一些缺點

  • 單子資料夾鏈現在摺疊為單個節點。這使得深入到深層但稀疏的資料夾層次結構變得更加容易。
  • 我們已開始解決可訪問性問題。

中鍵單擊刪除斷點

現在可以在斷點檢視中使用滑鼠中鍵單擊輕鬆刪除斷點。

將“openDebug”的預設值更改為在每次會話啟動時開啟

對於新使用者來說,當你啟動除錯會話而除錯檢視沒有自動開啟時,有時會感到困惑。如果使用者還不熟悉 UI,他們不知道要查詢哪些關鍵字來開啟 UI。為了避免混淆,我們將 debug.openDebug 的預設值更改為 openOnSessionStart,以便除錯檢視在每次會話啟動時開啟,而不僅僅是第一次(這是以前的預設行為)。

擴充套件開發

擴充套件日誌記錄

作為 activate 函式引數的 ExtensionContext 具有一個新屬性 logPath。這是擴充套件可以儲存日誌檔案的目錄的絕對檔案路徑。該路徑對於擴充套件是唯一的,不會被其他擴充套件重用。

語言伺服器協議

新版本的語言伺服器協議現已可用,包括用於 VS Code 的相應節點模組。

新版本支援

  • 來自伺服器的程式碼操作型別公告,允許客戶端填充相應的選單條目。
  • textDocument/prepareRename 的實現。
  • 工作區編輯中對檔案操作(建立、重新命名和刪除)的支援。

vscode-languageclient:JSON 日誌格式和日誌流式傳輸

以前,在使用 vscode-languageclient 構建語言伺服器擴充套件時,你可以指定 [langId].trace.serverLSP 日誌傳送到 VS Code 輸出通道。

[langId].trace.server 現在可以以機器可讀的 JSON 格式輸出日誌資訊

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

這開啟了有趣的用例,例如將 LSP 日誌流式傳輸到 LSP Inspector 以視覺化語言伺服器的行為

lsp-streaming

你可以在 Microsoft/language-server-protocol-inspectorlsp-log-streaming-sample 中瞭解更多資訊。

除錯擴充套件:內建載入指令碼檢視

載入指令碼資源管理器現在是 VS Code 偵錯程式的內建元件。為了使用它,偵錯程式擴充套件需要按以下方式更改其除錯介面卡

  • 在從 initialize 請求返回的 Capabilities 中新增一個值為 truesupportsLoadedSourcesRequest 功能。
  • 透過返回當前載入的源集來實現 loadedSources 請求。
  • 為新載入或解除安裝的源發出 loadedSource 事件。

新主題顏色

麵包屑有一個新的主題顏色

  • breadcrumb.background:麵包屑項的背景顏色。

設定編輯器有新的主題顏色

  • settings.dropdownListBorder:新下拉控制元件的邊框顏色。
  • settings.modifiedItemIndicator:指示已修改設定的線條顏色。

Git 擴充套件 API

Git 擴充套件已開始公開一個更明確的 API。此 API 可用於任何其他擴充套件,以與使用者工作區中開啟的 Git 儲存庫進行互動。由於它仍處於初步階段,我們將在即將釋出的版本中持續改進 API。

提議的擴充套件 API

每個里程碑都附帶新的提議 API,擴充套件作者可以試用它們。一如既往,我們渴望您的反饋。以下是試用提議 API 所需的操作:

  • 您必須使用 Insiders 版本,因為提議的 API 經常更改。
  • 您的擴充套件的 package.json 檔案中必須包含以下行:"enableProposedApi": true
  • 將最新版本的 vscode.proposed.d.ts 檔案複製到您的專案中。

請注意,您不能釋出使用提議 API 的擴充套件。我們很可能會在下一個版本中進行破壞性更改,我們絕不希望破壞現有擴充套件。

SCM:選定的原始碼控制

為了讓擴充套件知道使用者已選擇哪些原始碼控制例項在 UI 中可見,SourceControl 例項現在具有一個 selected 屬性以及一個表示該狀態的 onDidChangeSelection 事件。

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

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

評論提供程式

在此迭代中,我們引入了評論概念,允許擴充套件在編輯器中建立和管理對話以及一個新的評論面板。這使得擴充套件能夠支援程式碼審查場景。

評論被組織成執行緒並與特定文件關聯。

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

首次註冊 WorkspaceCommentProvider 時,CommentsPanel 將變為可見並顯示提供給它的所有評論。評論按評論執行緒和資源分組。當在面板中選擇評論時,將執行評論 command,因此擴充套件確定其行為。

Comments panel

預覽功能

預覽功能尚未準備好釋出,但已足夠實用。我們歡迎您在這些功能開發期間提供早期反饋。

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

工程

擴充套件和 webpack

我們現在正在使用 webpack 打包擴充套件。它實現了兩個成就:(1)減少擴充套件的啟動時間,因為要載入的檔案更少,要解析的源更少;(2)減少安裝時間,因為需要提取和寫入磁碟的檔案更少。到目前為止,我們已將包大小減少了約 4000 個檔案!

效能金絲雀

我們添加了一個測試工具,以確保我們的啟動效能不會下降。有一個新指令碼可以部署到專用機器上,以測試 Insider 版本的效能。該指令碼只是安裝最新版本並確保它在時間限制內啟動。目前,我們從 Windows 開始,因為效能通常會受到防病毒軟體更新的影響,但計劃是在我們支援的所有平臺上進行測試。

IPC 堆疊改進

我們改進了我們自有的 IPC 堆疊,以支援程序之間的位元組緩衝區訊息。這使得某些場景得以實現,例如在我們的不同程序之間傳送二進位制資料而沒有開銷,以及允許我們最佳化 IPC 以提高效能。

值得注意的修復

  • 6363:儲存時刪除備用資料流
  • 25919:新命令以強制將新視窗作為原生標籤頁開啟
  • 49021:儲存時不要重置 WSL 許可權元資料
  • 49403:在整合終端中除錯時自動附加導致問題
  • 55025:允許在擴充套件主機重新啟動時繼續除錯
  • 56084:開啟編輯器:重新審視組的順序以基於視覺順序
  • 56691:路徑中存在 # 時啟動 vscode 錯誤
  • 57018:停止/重新啟動偵錯程式無法停止 babel-node

感謝

最後但同樣重要的是,衷心感謝!以下幫助使 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ša Mihaica。
  • 丹麥語: Christoffer Bech。
  • 英語(英國): Matthew John Cheetham, Swotboy2000。
  • 芬蘭語: Petri Niinimä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。
  • 匈牙利語: Tar Dániel, Bence László。
  • 簡體中文: Joel Yang, 子實 王, Wang Dongcheng, pluwen, DongWei, Henry Chu, aimin guo, Chris Pan 潘鼕鼕, 子昂 馬。
  • 繁體中文: Duran Hsieh, Winnie Lin, Poy Chang, Alan Tsai。
  • 印度尼西亞語: Wildan Mubarok, G-RiNe Project。
  • 義大利語: Luca Bruni, Alessandro Alpi, Andrea Dottor, Emanuele Curati, Riccardo Cappello, Gianluca Acerbis, Emilie Rollandin, Marco Dal Pino, Luigi Bruno, Lorthirk, Aldo Donetti。
  • 日語: Shunya Tajima, Satoshi Kajiura, Yuichi Nukiyama, Hiroyuki Mori, yoshioms。
  • 韓語: Kyunghee Ko, PaulNara, smallsnail, Kwangjin Hwang。
  • 立陶宛語: Tomas Cimermonas。
  • 波蘭語: Artur, hawkeye116477, Patryk Brejdak, Mateusz Gazdziak, Robert Skórski, Sebastian Baran。
  • 葡萄牙語(巴西): Roberto Fonseca, Bruno Sonnino, Marcelo Fernandes, Lucas Miranda, João Mesquita, Danilo Dantas, Rodrigo Crespi, Arthur Bruel, Thiago Moreira de Souza Arrais, Otacilio Saraiva Maia Neto, Loiane Groner, Fabio Correia。
  • 葡萄牙語(葡萄牙): Richard Nunes, Daniel Correia, Tiago Costa。
  • 羅馬尼亞語: Bogdan Mateescu, Szauka。
  • 俄語: Roman Slauta, Ivan Kuzmenko。
  • 西班牙語: Alejandro Medina, José M. Aguilar, Roberto Fonseca, Javier Moreno, Andy Gonzalez, Alberto Poblacion, Nancy Todd, Antonio Sanmartín。
  • 泰盧固語: Hari Jujjavarapu, Sridhar L。
© . This site is unofficial and not affiliated with Microsoft.