擴充套件功能概述
Visual Studio Code 提供了多種方式供擴充套件來增強其功能。有時可能很難找到正確的 貢獻點 和 VS Code API 來使用。本主題將擴充套件功能分為幾個類別。每個類別描述了
- 您的擴充套件可以使用的一些功能
- 指向使用這些功能的更詳細主題的連結
- 一些擴充套件創意
但是,我們也對擴充套件施加了 限制,以確保 VS Code 的穩定性和效能。例如,擴充套件無法訪問 VS Code UI 的 DOM。
常用功能
通用功能是您可以在任何擴充套件中使用核心功能。
其中一些功能包括
- 註冊命令、配置、快捷鍵或上下文選單項。
- 儲存工作區或全域性資料。
- 顯示通知訊息。
- 使用快速選擇收集使用者輸入。
- 開啟系統檔案選擇器,讓使用者選擇檔案或資料夾。
- 使用進度 API 指示長時間執行的操作。
主題
主題控制 VS Code 的外觀,包括編輯器中原始碼的顏色和 VS Code UI 的顏色。如果您曾想透過使 VS Code 呈現出不同深淺的綠色來營造一種正在編寫《駭客帝國》的感覺,或者只是想建立一個終極的、極簡主義的灰度工作區,那麼主題就是為您準備的。
擴充套件創意
- 更改原始碼的顏色。
- 更改 VS Code UI 的顏色。
- 將現有的 TextMate 主題移植到 VS Code。
- 新增自定義檔案圖示。
宣告式語言功能
宣告式語言功能為程式語言添加了基本的文字編輯支援,例如括號匹配、自動縮排和語法高亮。這是以宣告式方式完成的,無需編寫任何程式碼。有關更高階的語言功能,例如 IntelliSense 或除錯,請參閱 命令式語言功能。
擴充套件創意
- 將常見的 JavaScript 程式碼片段打包到擴充套件中。
- 告知 VS Code 一種新的程式語言。
- 新增或替換程式語言的語法。
- 透過語法注入擴充套件現有語法。
- 將現有的 TextMate 語法移植到 VS Code。
程式化語言功能
命令式語言功能添加了豐富的程式語言支援,例如懸停、轉到定義、診斷錯誤、IntelliSense 和 CodeLens。這些語言功能透過 vscode.languages.* API 公開。擴充套件可以直接使用這些 API,或者編寫一個語言伺服器並使用 VS Code 的 語言伺服器庫將其適配到 VS Code。
儘管我們提供了 語言功能 及其預期用途的列表,但沒有任何東西可以阻止您創造性地使用這些 API。例如,CodeLens 和懸停是內聯顯示額外資訊的絕佳方式,而診斷錯誤可用於突出拼寫或程式碼風格錯誤。
擴充套件創意
- 新增顯示 API 示例用法懸停。
- 使用診斷功能報告原始碼中的拼寫或 Linter 錯誤。
- 註冊一個新的 HTML 程式碼格式化程式。
- 提供豐富的、上下文感知的 IntelliSense。
- 為語言新增摺疊、麵包屑和大綱支援。
工作臺擴充套件
工作臺擴充套件擴充套件了 VS Code 工作臺 UI。向檔案瀏覽器新增新的右鍵單擊操作,甚至可以使用 VS Code 的 TreeView API 構建自定義瀏覽器。如果您的擴充套件需要完全自定義的使用者介面,請使用 Webview API 使用標準的 HTML、CSS 和 JavaScript 來構建您自己的文件預覽或 UI。
擴充套件創意
- 向檔案瀏覽器新增自定義上下文選單操作。
- 在側邊欄中建立一個新的、互動式 TreeView。
- 定義一個新的活動欄檢視。
- 在狀態列中顯示新資訊。
- 使用
WebViewAPI 渲染自定義內容。 - 貢獻原始碼管理提供程式。
除錯
您可以利用 VS Code 的 除錯功能,編寫 偵錯程式擴充套件,將 VS Code 的除錯 UI 連線到特定的偵錯程式或執行時。
擴充套件創意
- 透過貢獻 除錯介面卡實現,將 VS Code 的除錯 UI 連線到偵錯程式或執行時。
- 指定偵錯程式擴充套件支援的語言。
- 為偵錯程式使用的除錯配置屬性提供豐富的 IntelliSense 和懸停資訊。
- 提供除錯配置程式碼片段。
另一方面,VS Code 還提供了一套 除錯擴充套件 API,您可以使用它們在任何 VS Code 偵錯程式之上實現與除錯相關的功能,以自動化使用者的除錯體驗。
擴充套件創意
- 根據動態建立的除錯配置啟動除錯會話。
- 跟蹤除錯會話的生命週期。
- 以程式設計方式建立和管理斷點。
使用者體驗指南
為了幫助您的擴充套件無縫整合到 VS Code 使用者介面中,請參閱 UX 指南,您將在其中瞭解建立擴充套件 UI 的最佳實踐以及遵循首選 VS Code 工作流的約定。
限制
我們對擴充套件施加了某些限制。以下是限制及其目的。
無 DOM 訪問
擴充套件無法訪問 VS Code UI 的 DOM。您**不能**編寫一個為 VS Code 應用自定義 CSS 或將 HTML 元素新增到 VS Code UI 的擴充套件。
在 VS Code,我們不斷嘗試最佳化底層 Web 技術的利用,以提供始終可用、響應迅速的編輯器,並且隨著這些技術和我們產品的不斷發展,我們將繼續調整我們對 DOM 的使用。為了確保擴充套件不會干擾 VS Code 的穩定性和效能,並且我們可以繼續改進 VS Code 的 DOM 而不破壞現有擴充套件,我們在 擴充套件主機程序中執行擴充套件,並阻止直接訪問 DOM。
無自定義樣式表
使用者或擴充套件提供的自定義樣式表會與 DOM 結構和類名發生衝突。這些沒有被記錄,因為我們認為它們是內部的。為了發展、重構或改進 VS Code,我們需要自由地更改使用者介面。任何對 DOM 的更改都可能破壞現有的自定義樣式表,導致樣式表提供者感到沮喪,並因損壞的樣式表引起的 UI 故障而導致糟糕的使用者體驗。
相反,VS Code 旨在提供一個設計精良的擴充套件 API 來支援 UI 定製。該 API 是有據可查的,附帶工具和示例,並且在所有即將釋出的 VS Code 版本中都保持穩定。