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