語言擴充套件概述
Visual Studio Code 透過語言擴充套件為不同的程式語言提供智慧編輯功能。VS Code 的核心編輯器不提供內建語言支援,但提供了一組 API,可實現豐富的語言功能。
例如,HTML 擴充套件使用這些 API 為 HTML 檔案顯示語法高亮。類似地,當你輸入 console.
並且 log
出現在 IntelliSense 中時,這是 TypeScript 語言特性 擴充套件在起作用。
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。嵌入式語言 主題討論瞭如何使語言功能可用於嵌入式語言。