🚀 在 VS Code 中

2018 年 10 月 (版本 1.29)

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

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


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

如果您想在線上閱讀這些版本資訊,請前往 code.visualstudio.com 上的更新
您也可以觀看 Cloud Developer Advocate Brian Clark 的這個 1.29 版本重點影片

版本資訊排列在與 VS Code 焦點區域相關的下列章節中。以下是一些進一步的更新

  • 工作台 - 平台特定的行尾字元、醒目提示已修改的檔案索引標籤。
  • 整合式終端機 - 分割終端機 cwd 選項、Cmd+Backspace 刪除至行首。
  • 語言 - 在 hover 時顯示 CSS Specificity、處理未知的 CSS 屬性。
  • 偵錯 - 多個偵錯主控台、以停止於進入點開始、樣式 console.log 訊息。
  • 擴充功能撰寫 - 作用中終端機 API、更完善地控制自訂檢視。

Insiders: 想要盡快查看新功能嗎?您可以下載每晚 Insiders 組建,並在最新更新可用時立即試用。如需最新的 Visual Studio Code 新聞、更新和內容,請在 Twitter 上追蹤我們 @code

VS Code 現在支援多行搜尋!與編輯器中相同,regex 搜尋只有在包含 \n 常值時,才會以多行模式執行。搜尋檢視會在每個多行相符項目旁邊顯示提示,並顯示其他相符行數。

Multiline search

此功能得益於 ripgrep 工具中完成的多行搜尋實作。

現在也可以在 regex 搜尋中使用反向參考lookahead 判斷提示,方法是設定 "search.usePCRE2": true。這會將 ripgrep 設定為使用 PCRE2 regex 引擎。雖然 PCRE2 支援許多其他功能,但我們僅支援在 JavaScript 中仍然有效的 regex 運算式,因為開啟的編輯器仍然使用編輯器基於 JavaScript 的搜尋進行搜尋。

Fancy regex search

如果您仍然缺少 lookbehind 判斷提示,請別擔心!該功能最近才受到 JavaScript 支援,並且應該在稍後的 Electron shell 更新中進入 VS Code。

我們新增了一個設定 search.showLineNumbers,它將在「搜尋」檢視中顯示每個相符項目的行號。

停用搜尋和取代預覽

有一個新的設定 search.useReplacePreview,可讓您在「搜尋」檢視中執行搜尋/取代時停用顯示的預覽差異。

line numbers

Git 可讓您使用 core.excludesfile 設定屬性來設定全域 gitignore 檔案。依預設,搜尋不會遵循全域 gitignore 檔案,但您現在可以透過啟用新的設定 search.useGlobalIgnoreFiles 來變更此行為。

工作台

macOS Mojave 深色模式支援

VS Code 現在更完善地支援 macOS Mojave 深色模式。先前,即使 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 會在編輯器為 dirty(有未儲存的變更)時,在編輯器索引標籤的頂端顯示粗邊框。這讓尋找需要儲存的檔案變得更容易。邊框的顏色可以自訂(請參閱下方)。

Highlight modified tabs

置中編輯器版面配置自動調整大小

當開啟超過 1 個編輯器群組時,置中版面配置檢視現在會自動調整大小為最大寬度。這應該讓置中版面配置更容易使用,並減少手動切換的需求。此行為由新的設定 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

樹狀結構 widget 效能

VS Code 樹狀結構 widget 控制項在 VS Code UI 中的許多位置中使用,但在某些特定使用案例 (問題面板、大綱檢視) 中達到效能限制。我們一直在研究更快的虛擬樹狀結構 widget 實作,這些實作可以容納不同層級的效能與 API 便利性。您可以在此處閱讀以了解更多資訊。

新的 ObjectTree widget 現在正在問題面板中使用,我們已經看到了顯著的改進。我們能夠大幅提高工作台可以處理的問題項目數量,並提高某些作業 (例如全部摺疊) 和進階篩選案例的速度。這些改進現在使得使用較大的集合大小成為可能。

工作台導覽命令

新增了四個命令以改進工作台導覽

  • 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 widget 現在會根據您的檔案圖示主題,為檔案完成顯示檔案和資料夾圖示。這提供了一個統一的外觀,並協助您快速識別不同的檔案類型。

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 (或使用「Debugger for Chrome」擴充功能偵錯 Chrome) 時,您現在可以使用 %c 來設定來自 console.log 的訊息樣式,類似於 Chrome DevTools 支援的功能。支援的屬性為 colorbackgroundfont-weight: boldtext-decoration: underline

console styles

中斷點 widget 展開為多行

中斷點 widget 現在可以展開為多行,使用 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"
  }
}

hover 訊息中的 CSS Specificity

CSS hover 現在會顯示 CSS Specificity

css-specificity

處理未知的 CSS 屬性

使用 CSS 預處理器 (例如 PostCSS),您可能會使用在開發期間編譯為有效屬性的無效屬性。[css/less/scss].lint.validProperties 設定可防止 VS Code 將這些無效屬性標記為錯誤。

改良的 CSS 零單位警告

CSS 現在會 lint 在 CSS 簡寫屬性值中使用的零單位。例如,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 的嚴格 null 檢查

在此里程碑中,我們也開始工作,以在核心 VS Code 來源中啟用 TypeScript 的嚴格 null 檢查。嚴格 null 檢查有助於捕捉許多常見的程式設計錯誤,並使程式設計人員的意圖更加明確。我們已經看到對 VS Code 的內建擴充功能使用嚴格 null 檢查的明顯好處。

由於 VS Code 的核心來源包含數千個檔案,因此我們正在逐步採用嚴格 null 檢查。我們從嚴格 null 檢查沒有匯入的檔案開始,現在正在反覆地在僅匯入其他嚴格 null 檢查檔案的檔案中啟用嚴格 null 檢查。這將持續到轉換整個程式碼庫為止。

啟用嚴格 null 檢查是一項重大的工程工作,但我們認為在原始程式碼和產品品質方面的回報是值得的。您可以在此處追蹤我們的嚴格 null 檢查進度。

其他

低對比選單列

如果您使用 Ubuntu 18.10 或 GTK 主題,該主題將淺色或深色內容選單與應用程式選單列的相反主題混合在一起,您可能會遇到難以閱讀的低對比選單列。

有兩種可能的解決方法

  • 透過將設定 window.titleBarStyle 設定為 custom,試用 VS Code 自訂標題列樣式。
  • 變更您的 GTK 主題。您可以透過安裝 Gnome Tweaks 應用程式並使用先前的預設主題 Adwaita 來執行此動作。

可以在問題 62593 中追蹤有關此問題的資訊。

Electron 更新

在此版本中,我們從 Electron 2.0.9 更新到 2.0.12。

預覽功能

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

參考檢視

有一個新的命令尋找所有參考,它會顯示一個專用的側邊欄檢視,其中顯示參考搜尋結果。這補充了現有的「預覽檢視」呈現方式,並提供更穩定的參考清單。在內容選單中,選取尋找所有參考 (),參考會顯示在個別的檢視中,就像搜尋結果一樣。

References View

結果是穩定的,並且可以清除個別結果,如果您將檢視用作待辦事項清單,這非常棒。您可以使用 F4⇧F4 (Windows, Linux Shift+F4) 在不將手從鍵盤上移開的情況下瀏覽結果。

請告訴我們您的想法,我們將在下一次更新中改進體驗。

擴充功能撰寫

標準化的擴充功能範例

vscode-extension-samples 上的 VS Code 擴充功能範例已更新以保持一致性。

每個擴充功能範例現在都包含

  • 統一的程式碼撰寫樣式和結構。
  • 一個 README,其中以簡短的動畫說明範例的功能。
  • 每個範例中使用的 vscode API 或貢獻點的清單。

捆綁擴充功能

捆綁的擴充功能載入速度更快。因此,我們建立了一個範例,示範如何webpack 擴充功能

開發擴充功能而無需發行者

為了簡化初始擴充功能開發,已從Yeoman 擴充功能產生器範本中移除 publisher 欄位。對於沒有 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:作用中群組中已修改 (dirty) 的作用中索引標籤頂端的邊框。
  • tab.inactiveModifiedBorder:作用中群組中已修改 (dirty) 的非作用中索引標籤頂端的邊框。
  • tab.unfocusedActiveModifiedBorder:非作用中群組中已修改 (dirty) 的作用中索引標籤頂端的邊框。
  • tab.unfocusedInactiveModifiedBorder:非作用中群組中已修改 (dirty) 的非作用中索引標籤頂端的邊框。
  • 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 可以存取剪貼簿。它遵循即將推出的瀏覽器 Clipboard 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
}

此外,此建議允許使用一組 triggerCharacters 和一組不同的 retriggerCharacters 註冊 SignatureHelpProvider

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 擴充功能現在支援的一些主要功能

  • 程式碼導覽 (移至定義、簽章說明、hover 時的符號資訊)
  • 程式碼完成
  • 程式碼涵蓋率
  • 程式碼診斷
  • 與套件相關的命令,例如Go: 新增匯入Go: 瀏覽套件

如需更多詳細資訊,請參閱 Visual Studio Code 中的 Go 模組支援 維基頁面。

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 應用程式。

偵錯秘訣

有新的 VS Code 偵錯 秘訣,適用於 PHPPythonRuby on Rails

重大修正

  • 54214:即使建置失敗,vscode 中的 startDebugging 方法仍然傳回 true
  • 57289:設定 UI 應在重新載入時記住其搜尋
  • 57321:當設定搜尋未傳回任何結果時,顯示「清除搜尋」和「清除篩選條件」按鈕
  • 59305:在 .code-workspace 檔案中顯示「開啟工作區」按鈕
  • 59430:無法再在節點內部檔案中中斷
  • 61711:所有中斷點都未驗證
  • 62085:debugAdapter 未收到 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
    • 我們適應使用 file:/// 的最新 Node.js 版本,而且我們不會為存在的檔案傳送 sourceRef PR #373
    • 修正未在 NTVS 單元測試的第一行命中的 BP 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

  • Bosnian: 波士尼亞語。
  • Bulgarian: 保加利亞語。
  • Catalan: 加泰隆尼亞語。
  • Czech: 捷克語。
  • Dutch: 荷蘭語。
  • English (United Kingdom): 英語 (英國)。
  • Finnish: 芬蘭語。
  • French: 法語。
  • German: 德語。
  • Greek: 希臘語。
  • Hindi: 印地語。
  • Hungarian: 匈牙利語。
  • Chinese Simplified: 簡體中文。
  • Chinese Traditional: 繁體中文。
  • Indonesian: 印尼語。
  • Italian: 義大利語。
  • Japanese: 日語。
  • Kannada: 卡納達語。
  • Korean: 韓語。
  • Lithuanian: 立陶宛語。
  • Malayalam: 馬拉雅拉姆語。
  • Norwegian BokmÃ¥l: 書面挪威語。
  • Polish: 波蘭語。
  • Portuguese (Brazil): 葡萄牙語 (巴西)。
  • Portuguese (Portugal): 葡萄牙語 (葡萄牙)。
  • Russian: 俄語。
  • Spanish: 西班牙語。
  • Tamil: 泰米爾語。
  • Telugu: 泰盧固語。
  • Ukrainian: 烏克蘭語。
  • Urdu: 烏爾都語。
  • Vietnamese: 越南語。