參加你附近的 ,瞭解 VS Code 中的 AI 輔助開發。

常用功能

通用功能是您擴充套件的重要組成部分。幾乎所有擴充套件都使用其中的某些功能。以下是您可以利用它們的方法。

命令

命令是 VS Code 工作方式的核心。您可以透過命令面板執行命令,將自定義快捷鍵繫結到命令,以及右鍵單擊在上下文選單中呼叫命令。

擴充套件可以

擴充套件指南/命令主題中瞭解有關命令的更多資訊。

配置

擴充套件可以使用 contributes.configuration 貢獻點貢獻特定於擴充套件的設定,並使用 workspace.getConfiguration API 讀取它們。

快捷鍵

擴充套件可以新增自定義快捷鍵。在 contributes.keybindings快捷鍵繫結 主題中閱讀更多資訊。

上下文選單

擴充套件可以註冊自定義上下文選單項,這些選單項將在 VS Code UI 的不同部分中右鍵單擊時顯示。在 contributes.menus 貢獻點中閱讀更多資訊。

資料儲存

有五種資料儲存選項

  • ExtensionContext.workspaceState: 一個工作區儲存,您可以在其中寫入鍵/值對。VS Code 管理該儲存,並在再次開啟同一工作區時恢復它。
  • ExtensionContext.globalState: 一個全域性儲存,您可以在其中寫入鍵/值對。VS Code 管理該儲存,並在每次擴充套件啟用時恢復它。您可以透過在 globalState 上使用 setKeysForSync 方法設定同步鍵來選擇性地同步全域性儲存中的鍵/值對。
  • ExtensionContext.storageUri: 一個特定於工作區的儲存 URI,指向您的擴充套件具有讀/寫訪問許可權的本地目錄。如果您需要儲存僅從當前工作區可訪問的大檔案,這是一個不錯的選擇。
  • ExtensionContext.globalStorageUri: 一個全域性儲存 URI,指向您的擴充套件具有讀/寫訪問許可權的本地目錄。如果您需要儲存可從所有工作區訪問的大檔案,這是一個不錯的選擇。
  • ExtensionContext.secrets: 一個用於機密(或任何敏感資訊)的全域性儲存,該儲存將被加密。這些不會在機器之間同步。對於 VS Code 桌面,這利用了 Electron 的 safeStorage API。對於 Web 版 VS Code,這使用雙金鑰加密 (DKE) 實現。

擴充套件上下文在擴充套件入口檔案中的 activate 函式可用。

setKeysForSync 示例

如果您的擴充套件需要在不同機器之間保留一些使用者狀態,請使用 vscode.ExtensionContext.globalState.setKeysForSync 將狀態提供給設定同步

您可以使用以下模式

// on activate
const versionKey = 'shown.version';
context.globalState.setKeysForSync([versionKey]);

// later on show page
const currentVersion = context.extension.packageJSON.version;
const lastVersionShown = context.globalState.get(versionKey);
if (isHigher(currentVersion, lastVersionShown)) {
    context.globalState.update(versionKey, currentVersion);
}

跨機器共享狀態可以透過共享已關閉或已檢視的標誌,幫助避免使用者看到歡迎或更新頁面的多個例項的問題。

顯示通知

幾乎所有擴充套件都需要在某個時候向用戶顯示資訊。VS Code 提供了三個 API 用於顯示不同嚴重性的通知訊息

快速選擇

透過 vscode.QuickPick API,您可以輕鬆收集使用者輸入或讓使用者從多個選項中進行選擇。QuickInput 示例演示了該 API。

檔案選擇器

擴充套件可以使用 window.showOpenDialog API 開啟系統檔案選擇器並選擇檔案或資料夾。

輸出通道

輸出面板顯示一系列 OutputChannel,非常適合用於日誌記錄。您可以透過 window.createOutputChannel API 輕鬆利用它。

進度 API

您可以使用 vscode.Progress API 向用戶報告進度更新。

可以使用 ProgressLocation 選項在不同位置顯示進度

  • 在通知區域
  • 在原始碼管理檢視中
  • VS Code 視窗中的一般進度

進度示例演示了此 API。