語言擴充功能總覽
Visual Studio Code 透過語言擴充功能,為不同的程式語言提供智慧編輯功能。VS Code 在核心編輯器中不提供內建的語言支援,但提供了一組 API,可啟用豐富的語言功能。
例如,HTML 擴充功能使用這些 API 來顯示 HTML 檔案的語法突顯。同樣地,當您輸入 console.
並且在 IntelliSense 中顯示 log
時,這是 Typescript Language Features 擴充功能在運作。
VS Code 將其中一些擴充功能與編輯器捆綁在一起,從一開始就為您提供豐富的語言支援。
語言功能大致可以分為兩類
宣告式語言功能
宣告式語言功能在設定檔中定義。 範例包括與 VS Code 捆綁在一起的 html、css 和 typescript-basic 擴充功能,它們提供以下宣告式語言功能的一個子集
- 語法突顯
- 程式碼片段完成
- 括號配對
- 括號自動關閉
- 括號自動包圍
- 註解切換
- 自動縮排
- 摺疊 (依標記)
我們有三個指南,用於編寫提供宣告式語言功能的語言擴充功能。
- 語法突顯指南:VS Code 使用 TextMate 語法進行語法突顯。 本指南將引導您編寫簡單的 TextMate 語法並將其轉換為 VS Code 擴充功能。
- 程式碼片段完成指南:本指南說明如何將一組程式碼片段捆綁到擴充功能中。
- 語言設定指南:VS Code 允許擴充功能為任何程式語言定義語言設定。 此檔案控制基本的編輯功能,例如註解切換、括號配對/包圍和區域摺疊 (舊版)。
程式化語言功能
程式化語言功能包括自動完成、錯誤檢查和跳到定義。 這些功能通常由語言伺服器提供支援,語言伺服器是一個分析您的專案以提供動態功能的程式。 一個範例是 VS Code 中捆綁的 typescript-language-features
擴充功能。 它利用 TypeScript 語言服務來提供程式化語言功能,例如
- 懸停資訊 (
vscode.languages.registerHoverProvider
) - 自動完成 (
vscode.languages.registerCompletionItemProvider
) - 跳到定義 (
vscode.languages.registerDefinitionProvider
) - 錯誤檢查
- 格式化
- 重構
- 摺疊
這是程式化語言功能的完整列表。
語言伺服器協定
透過標準化語言伺服器 (靜態程式碼分析工具) 和語言用戶端 (通常是原始碼編輯器) 之間的通訊,語言伺服器協定允許擴充功能作者編寫一個程式碼分析程式,並在多個編輯器中重複使用它。
在程式化語言功能列表中,您可以找到所有 VS Code 語言功能的列表,以及它們如何對應到語言伺服器協定規範。
我們提供深入的指南,說明如何在 VS Code 中實作語言伺服器擴充功能
特殊情況
多根工作區支援
當使用者開啟多根工作區時,您可能需要相應地調整您的語言伺服器擴充功能。 本主題討論支援多根工作區的多種方法。
嵌入式語言
嵌入式語言在 Web 開發中很常見。 例如,HTML 中的 CSS/JavaScript,以及 JavaScript/TypeScript 中的 GraphQL。 嵌入式語言主題討論如何使語言功能可用於嵌入式語言。