設定同步
設定同步可讓您跨計算機共享 Visual Studio Code 配置,例如設定、鍵盤快捷方式和已安裝的擴充套件,從而始終使用您喜歡的設定進行工作。
注意:VS Code 不會與遠端視窗同步您的擴充套件,例如當您連線到 SSH、開發容器 (devcontainer) 或 WSL 時。
開啟設定同步
您可以透過“活動欄”底部的“管理”齒輪選單或“賬戶”選單中的“備份和同步設定...”條目來開啟設定同步。

要使用同步設定,您需要登入並選擇要同步的設定。當前,設定同步支援以下設定
- 設定
- 鍵盤快捷鍵
- 使用者程式碼片段
- 使用者任務
- UI 狀態
- 擴充套件
- 配置檔案

當您選擇“登入”按鈕時,您可以選擇使用您的 Microsoft 或 GitHub 賬戶登入。

做出此選擇後,瀏覽器將開啟,以便您可以登入到您的 Microsoft 或 GitHub 賬戶。如果您選擇 Microsoft 賬戶,可以使用個人賬戶(如 Outlook 賬戶)或 Azure 賬戶,您還可以將 GitHub 賬戶關聯到新的或現有的 Microsoft 賬戶。
登入後,設定同步將開啟,並在後臺繼續自動同步您的偏好設定。
合併或替換
如果您已從一臺計算機同步,並且正在從另一臺計算機開啟同步,則會顯示以下“合併或替換”對話方塊。

- 合併:選擇此選項會將本地設定與雲中的遠端設定合併。
- 替換本地:選擇此選項會將雲中的遠端設定覆蓋本地設定。
- 手動合併...:選擇此選項將開啟“合併”檢視,您可以在其中逐個合併偏好設定。

配置同步資料
機器設定(具有 machine 或 machine-overridable 範圍)預設不同步,因為它們的值特定於給定機器。您也可以從“設定”編輯器或使用設定 settingsSync.ignoredSettings 新增或刪除您想要包含在此列表中的設定。

鍵盤快捷方式預設按平臺同步。如果您的鍵盤快捷方式與平臺無關,您可以透過停用設定 settingsSync.keybindingsPerPlatform 來跨平臺同步它們。
所有內建和已安裝的擴充套件都會與其全域性啟用狀態一起同步。您可以從“擴充套件”檢視(⇧⌘X (Windows, Linux Ctrl+Shift+X))或使用設定 settingsSync.ignoredExtensions 跳過同步某個擴充套件。

當前正在同步以下 UI 狀態
- 顯示語言
- 活動欄條目
- 面板條目
- 檢視佈局和可見性
- 最近使用的命令
- 不再顯示通知
您始終可以透過“設定同步:配置”命令,或透過開啟“管理”齒輪選單,選擇“設定同步已開啟”,然後選擇“設定同步:配置”來更改同步的內容。
衝突
在多臺計算機之間同步設定時,有時可能會發生衝突。當首次設定跨計算機同步或在計算機離線時設定發生更改時,可能會發生衝突。發生衝突時,您將看到以下選項
- 接受本地:選擇此選項將用您的本地設定覆蓋雲中的遠端設定。
- 接受遠端:選擇此選項將用雲中的遠端設定覆蓋本地設定。
- 顯示衝突:選擇此項將顯示一個類似於原始碼管理差異編輯器的 diff 編輯器,您可以在其中預覽本地和遠端設定,並選擇接受本地或遠端,或手動解決本地設定檔案中的更改,然後接受本地檔案。
切換賬戶
如果您想將資料同步到不同的賬戶,可以關閉設定同步,然後使用不同的賬戶重新開啟。關閉同步的命令是“設定同步:關閉”。
同步穩定版與 Insiders 版本
預設情況下,VS Code 穩定版和Insiders 構建使用不同的設定同步服務,因此不共享設定。您可以透過在開啟設定同步時選擇穩定版同步服務來與穩定版同步 Insiders 版本。此選項僅在 VS Code Insiders 中可用。

注意:由於 Insiders 構建比穩定版更新,同步它們有時會導致資料不相容。在這種情況下,設定同步將在穩定版上自動停用,以防止資料不一致。一旦釋出了新版本的穩定版,您就可以升級您的穩定版客戶端並開啟同步以繼續同步。
恢復資料
VS Code 在同步時始終會儲存您偏好設定的本地和遠端備份,並提供檢視供您訪問。萬一出現問題,您可以從這些檢視中恢復您的資料。

您可以使用命令面板中的“設定同步:顯示已同步資料”命令開啟這些檢視。本地同步活動檢視預設隱藏,您可以使用“設定同步”檢視溢位操作下的“檢視”子選單啟用它。

可以透過“設定同步:開啟本地備份資料夾”命令訪問磁碟上的本地備份資料夾。該資料夾按偏好設定型別組織,幷包含 JSON 檔案的版本,檔名包含備份發生的時間戳。
注意:本地備份將在 30 天后自動刪除。對於遠端備份,每個獨立資源(設定、擴充套件等)將保留最新的 20 個版本。
已同步的計算機
VS Code 會跟蹤同步您偏好設定的計算機,並提供一個檢視供您訪問它們。每臺計算機都將根據 VS Code 的型別(Insiders 或穩定版)及其所在平臺獲得一個預設名稱。您始終可以使用檢視中機器條目上的編輯操作來更新機器名稱。您還可以使用檢視中機器條目上的“關閉設定同步”上下文選單操作來停用另一臺計算機上的同步。

您可以使用命令面板中的“設定同步:顯示已同步資料”命令開啟此檢視。
擴充套件作者
如果您是擴充套件作者,則應確保您的擴充套件在使用者啟用設定同步時行為正常。例如,您可能不希望您的擴充套件在多臺計算機上顯示相同的已忽略通知或歡迎頁面。
在計算機之間同步使用者全域性狀態
如果您的擴充套件需要在不同計算機之間保留某些使用者狀態,請使用 vscode.ExtensionContext.globalState.setKeysForSync 將狀態提供給設定同步。跨計算機共享 UI 已忽略或已檢視標誌等狀態可以提供更好的使用者體驗。
在“擴充套件功能”主題的資料儲存部分有一個使用 setKeysforSync 的示例。
報告問題
可以在“日誌 (設定同步)”輸出檢視中監視設定同步活動。如果您遇到設定同步問題,請在建立問題時包含此日誌。如果問題與身份驗證有關,還請包含“賬戶”輸出檢視中的日誌。
如何刪除我的資料?
如果您想從我們的伺服器中刪除所有資料,只需透過“管理”齒輪選單下的“設定同步已開啟”選單關閉同步,然後勾選清除所有云資料的複選框。如果您選擇重新啟用同步,則就像首次登入一樣。
後續步驟
- 使用者和工作區設定 - 瞭解如何透過使用者和工作區設定將 VS Code 配置為符合您的偏好。
常見問題
VS Code 設定同步與設定同步擴充套件相同嗎?
否,Shan Khan 的設定同步擴充套件使用 GitHub 上的私有 Gist 在不同計算機之間共享您的 VS Code 設定,與 VS Code 設定同步無關。
我可以使用哪種型別的賬戶登入設定同步?
VS Code 設定同步支援使用 Microsoft 賬戶(例如 Outlook 或 Azure 賬戶)或 GitHub 賬戶登入。不支援使用 GitHub Enterprise 賬戶登入。將來可能會支援其他身份驗證提供商,您可以在問題 #88309 中檢視提議的身份驗證提供商 API。
注意:VS Code 設定同步目前不支援使用您的Microsoft 主權雲賬戶。如果您對此有需求,請在此 GitHub 問題中告知我們您希望使用哪種型別的 Microsoft 主權雲。
我可以使用不同的後端或服務進行設定同步嗎?
設定同步使用專用服務來儲存設定並協調更新。將來可能會公開服務提供商 API,以允許自定義設定同步後端。
故障排除金鑰鏈問題
注意:本節適用於 VS Code 版本1.80 及更高版本。在 1.80 版本中,由於 keytar 已存檔,我們改用了 Electron 的safeStorage API。
注意:在此文件中,keychain、keyring、wallet、credential store 是同義詞。
設定同步使用 OS 金鑰鏈進行加密來持久化身份驗證資訊。在某些情況下,如果金鑰鏈配置錯誤或環境未被識別,使用金鑰鏈可能會失敗。
為了幫助診斷問題,您可以使用以下標誌重新啟動 VS Code 來生成詳細日誌
code --verbose --vmodule="*/components/os_crypt/*=1"
Windows & macOS
目前,Windows 或 macOS 上沒有已知的配置問題,但是,如果您懷疑有問題,可以在 VS Code 上提交問題並附上上述詳細日誌。這對於我們支援其他桌面配置非常重要。
Linux
在上述命令生成的日誌頂部附近,您會看到類似以下內容的輸出
[9699:0626/093542.027629:VERBOSE1:key_storage_util_linux.cc(54)] Password storage detected desktop environment: GNOME
[9699:0626/093542.027660:VERBOSE1:key_storage_linux.cc(122)] Selected backend for OSCrypt: GNOME_LIBSECRET
我們依賴 Chromium 的 oscrypt 模組來發現和儲存加密金鑰資訊到 keyring 中。Chromium 支援多種不同的桌面環境。下面介紹了一些流行的桌面環境以及當 keyring 配置不當時可能有助於解決問題的故障排除步驟。
GNOME 或 UNITY (或類似)
如果您看到的錯誤是“Cannot create an item in a locked collection”(無法在鎖定的集合中建立專案),那麼很可能是您的 keyring 的Login keyring 已鎖定。您應該啟動您的作業系統的 keyring(Seahorse 是常用的 keyring GUI)並確保預設 keyring(通常稱為Login keyring)已解鎖。此 keyring 需要在您登入系統時解鎖。
KDE
KDE 6 尚未被 Visual Studio Code 完全支援。作為一種解決方法:最新的 kwallet6 也可以作為 kwallet5 訪問,因此您可以透過如下配置 keyring 以與 VS Code 配合使用中所述,將密碼儲存設定為
kwallet5來強制其使用 kwallet5。
您的錢包(又名 keyring)可能已關閉。如果您開啟KWalletManager,可以看到預設的kdewallet是否已關閉,如果已關閉,請確保將其開啟。
如果您使用的是 KDE5 或更高版本,並且在連線到kwallet5時遇到問題(例如,在問題 #189672 中提到的非官方 VS Code Flatpak 使用者),您可以嘗試配置 keyring使用gnome-libsecret,這將使用Secret Service API與任何有效的 keyring 進行通訊。kwallet5實現了 Secret Service API,可以透過此方法訪問。
如果您仍然遇到連線到kwallet5的問題,一些使用者報告說授予特定的 D-Bus 服務許可權是一種可行的解決方案。
flatpak override --user --talk-name=org.kde.kwalletd5 --talk-name=org.freedesktop.secrets com.visualstudio.code
其他 Linux 桌面環境
首先,如果您的桌面環境未被檢測到,您可以在 VS Code 上開啟一個問題並附上上述詳細日誌。這對於我們支援其他桌面配置非常重要。
(推薦) 配置 keyring 以與 VS Code 配合使用
您可以透過傳遞password-store標誌來手動告訴 VS Code 使用哪個 keyring。我們推薦的配置是首先安裝gnome-keyring(如果尚未安裝),然後使用code --password-store="gnome-libsecret"啟動 VS Code。
如果此解決方案對您有效,您可以透過開啟命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))並執行“首選項:配置執行時引數”命令來持久化password-store的值。這將開啟argv.json檔案,您可以在其中新增設定"password-store":"gnome-libsecret"。
如果您想嘗試使用不同的 keyring 而不是gnome-keyring,這裡是password-store的所有可能值
kwallet5:用於kwalletmanager5。gnome-libsecret:用於任何實現Secret Service API的軟體包(例如gnome-keyring、kwallet5、KeepassXC)。- (不推薦)
kwallet:用於舊版本的kwallet。 - (不推薦)
basic:有關更多詳細資訊,請參閱下面的基本文字加密部分。
如果您的密碼儲存未自動檢測到,請檢視問題#187338中是否提及了您的設定。如果未提及,請隨時在此處新增您的設定,或者如果您認為您的問題與自動密碼儲存檢測無關,請在 VS Code 上開啟一個問題並附上詳細日誌。
(不推薦) 配置基本文字加密
我們依賴 Chromium 的 oscrypt 模組來發現和儲存加密金鑰資訊到 keyring 中。Chromium 提供了一個選擇加入的回退加密策略,該策略使用基於 Chromium 原始碼中硬編碼字串的記憶體中金鑰。因此,這種回退策略充其量只是混淆,並且僅應在您接受任何系統程序理論上都可以解密您儲存的秘密的風險時使用。
如果您接受此風險,可以透過開啟命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))並執行“首選項:配置執行時引數”命令,將password-store設定為basic。這將開啟argv.json檔案,您可以在其中新增設定"password-store":"basic"。
我可以在 VS Code 穩定版和 Insiders 版本之間共享設定嗎?
是。有關更多資訊,請參閱同步穩定版與 Insiders 版本部分。
請注意,由於 Insiders 構建比穩定版更新,這有時可能導致資料不相容。在這種情況下,設定同步將在穩定版上自動停用,以防止資料不一致。一旦釋出了新版本的穩定版,您就可以升級您的客戶端並開啟設定同步以繼續同步。