語言擴充功能概觀
Visual Studio Code 透過「語言擴充功能」(Language Extensions)為不同的程式語言提供智慧編輯功能。VS Code 的核心編輯器並不內建語言支援,而是提供了一套 API 來實現豐富的語言功能。
例如,HTML 擴充功能使用這些 API 來顯示 HTML 檔案的語法突顯。同樣地,當您輸入 console. 而 IntelliSense 出現 log 時,這就是 Typescript Language Features 擴充功能在運作。
VS Code 將其中一些擴充功能與編輯器綑綁在一起,讓您從一開始就能享有豐富的語言支援。
語言功能大致可分為兩類
宣告式語言功能 (Declarative language features)
宣告式語言功能是在設定檔中定義的。例如隨 VS Code 綑綁的 html、css 和 typescript-basic 擴充功能,它們提供了以下部分宣告式語言功能:
- 語法突顯 (Syntax highlighting)
- 程式碼片段補全 (Snippet completion)
- 括號配對
- 括號自動關閉 (Bracket autoclosing)
- 括號自動包覆 (Bracket autosurrounding)
- 註解切換 (Comment toggling)
- 自動縮排 (Auto indentation)
- 程式碼摺疊 (Folding by markers)
我們提供了三份指南,用於撰寫支援「宣告式語言功能」的語言擴充功能。
- 語法突顯指南:VS Code 使用 TextMate 文法來進行語法突顯。本指南將引導您撰寫簡單的 TextMate 文法,並將其轉換為 VS Code 擴充功能。
- 程式碼片段補全指南:本指南說明如何將一組程式碼片段綑綁到擴充功能中。
- 語言設定指南:VS Code 允許擴充功能為任何程式語言定義**語言設定**。此檔案可控制基本的編輯功能,例如註解切換、括號配對/包覆以及區域摺疊(舊版)。
程式化語言功能 (Programmatic language features)
程式化語言功能包含自動完成、錯誤檢查以及跳轉至定義。這些功能通常由「語言伺服器」(Language Server)驅動,這是一種分析專案以提供動態功能的程式。其中一個例子是 VS Code 內建的 typescript-language-features 擴充功能。它利用 TypeScript 語言服務 來提供以下程式化語言功能:
- 懸浮提示資訊 (
vscode.languages.registerHoverProvider) - 自動完成 (
vscode.languages.registerCompletionItemProvider) - 跳轉至定義 (
vscode.languages.registerDefinitionProvider) - 錯誤檢查
- 格式化
- 重構
- 程式碼摺疊
以下是程式化語言功能的完整列表。

語言伺服器通訊協定 (Language Server Protocol)
透過標準化語言伺服器(一種靜態程式碼分析工具)與語言用戶端(通常是原始碼編輯器)之間的通訊,語言伺服器協定 (Language Server Protocol) 讓擴充功能開發者能夠編寫一次程式碼分析程式,並在多個編輯器中重複使用。
在程式化語言功能清單中,您可以找到所有 VS Code 語言功能的列表,以及它們如何對應到 語言伺服器協定規格。
我們提供了一份深入指南,說明如何在 VS Code 中實作語言伺服器擴充功能。

特殊情況
多根工作區支援 (Multi-root workspace support)
當使用者開啟多根工作區時,您可能需要相應地調整語言伺服器擴充功能。本主題討論支援多根工作區的多種方法。
嵌入式語言 (Embedded languages)
嵌入式語言在網頁開發中很常見。例如 HTML 中的 CSS/JavaScript,以及 JavaScript/TypeScript 中的 GraphQL。嵌入式語言主題討論了如何讓語言功能在嵌入式語言中也能使用。