設定同步

設定同步讓您能夠在您的機器間共用 Visual Studio Code 設定,例如設定、鍵盤快速鍵和已安裝的擴充功能,讓您始終使用您最愛的設定。

注意:當您連線到 SSH、開發容器 (devcontainer) 或 WSL 等遠端視窗時,VS Code 不會同步您的擴充功能。

開啟設定同步

您可以透過「管理」齒輪選單中的「備份並同步設定...」項目,或活動列底部的「帳戶」選單來開啟設定同步。

Screenshot of the Manage menu, highlighting the Backup and Sync Settings command.

若要使用同步設定,您需要登入並選擇您要同步的設定。目前,設定同步支援下列設定:

  • 設定
  • 鍵盤快速鍵
  • 使用者程式碼片段
  • 使用者工作
  • UI 狀態
  • 延伸模組
  • 設定檔

Screenshot of the Settings Sync configure Quick Pick to select the settings to synchronize.

當您選擇「登入」按鈕時,您可以選擇使用您的 Microsoft 或 GitHub 帳戶登入。

Screenshot of the Settings Sync Quick Pick to choose an account type.

做出此選擇後,瀏覽器會開啟,以便您登入您的 Microsoft 或 GitHub 帳戶。如果您選擇 Microsoft 帳戶,您可以使用個人帳戶 (例如 Outlook 帳戶) 或 Azure 帳戶,您也可以將 GitHub 帳戶連結到新的或現有的 Microsoft 帳戶。

登入後,設定同步將會開啟,並在背景自動同步您的偏好設定。

合併或取代

如果您已經從一台機器同步過,並正在從另一台機器開啟同步,您將會看到以下「合併或取代」對話方塊。

Settings Sync Merge or Replace dialog

  • 合併:選擇此選項會將本機設定與雲端中的遠端設定合併。
  • 取代本機:選擇此選項會使用雲端中的遠端設定覆寫本機設定。
  • 手動合併...:選擇此選項會開啟「合併」檢視,您可以在其中逐一合併偏好設定。

Settings Sync Merges

設定同步資料

機器設定 (具有 machinemachine-overridable 範圍) 預設不會同步,因為它們的值特定於給定機器。您也可以從設定編輯器或使用設定 settingsSync.ignoredSettings 在 VS Code 中開啟 在 VS Code Insiders 中開啟 ,將您想要的設定新增或移除到此清單中。

Settings Sync ignored settings

鍵盤快速鍵預設為依平台同步。如果您的鍵盤快速鍵與平台無關,您可以透過停用設定 settingsSync.keybindingsPerPlatform 在 VS Code 中開啟 在 VS Code Insiders 中開啟 ,將它們跨平台同步。

所有內建和已安裝的擴充功能都會連同其全域啟用狀態一起同步。您可以從「擴充功能」檢視 (⇧⌘X (Windows、Linux Ctrl+Shift+X)) 或使用設定 settingsSync.ignoredExtensions 在 VS Code 中開啟 在 VS Code Insiders 中開啟 ) 跳過同步某個擴充功能。

Settings Sync ignored settings

目前同步的 UI 狀態如下:

  • 顯示語言
  • 活動列項目
  • 面板項目
  • 檢視配置和可見性
  • 最近使用的指令
  • 不再顯示通知

您可以隨時透過「設定同步:設定」指令,或開啟「管理」齒輪選單,選取「設定同步已開啟」,然後再選取「設定同步:設定」來變更同步內容。

衝突

在多台機器之間同步設定時,偶爾可能會發生衝突。衝突可能在首次設定機器之間的同步時發生,或在機器離線時設定變更時發生。當發生衝突時,您將會看到以下選項:

  • 接受本機:選擇此選項會將雲端中的遠端設定覆寫為您的本機設定。
  • 接受遠端:選擇此選項會將本機設定覆寫為雲端中的遠端設定。
  • 顯示衝突:選擇此選項將會顯示一個類似原始碼控制差異編輯器的差異編輯器,您可以在其中預覽本機和遠端設定,並選擇接受本機或遠端,或手動解決本機設定檔中的變更,然後接受本機檔案。

切換帳戶

如果您隨時想要將資料同步到不同的帳戶,您可以先關閉設定同步,然後再使用不同的帳戶重新開啟。關閉同步的指令是「設定同步:關閉」。

Stable 版與 Insiders 版同步

預設情況下,VS Code Stable 版和 Insiders 版會使用不同的設定同步服務,因此不共用設定。您可以在開啟設定同步時,選擇 Stable 版同步服務來將您的 Insiders 版與 Stable 版同步。此選項僅在 VS Code Insiders 版中可用。

Settings Sync Switch Service

注意:由於 Insiders 版比 Stable 版新,同步它們有時可能會導致資料不相容。在這種情況下,設定同步會自動在 Stable 版上停用,以防止資料不一致。一旦 Stable 版的新版本發佈,您可以升級您的 Stable 版用戶端並開啟同步以繼續同步。

還原資料

VS Code 在同步時會始終儲存您的偏好設定的本機和遠端備份,並提供檢視來存取這些備份。如果發生問題,您可以從這些檢視中還原您的資料。

Settings Sync backup views

您可以從命令選擇區使用「設定同步:顯示同步資料」指令開啟這些檢視。「本機同步活動」檢視預設為隱藏,您可以透過「設定同步」檢視溢出動作下的「檢視」子選單來啟用它。

Settings Sync enable local backup views

磁碟上的本機備份資料夾可以透過「設定同步:開啟本機備份資料夾」指令存取。該資料夾按偏好設定類型組織,並包含您的 JSON 檔案版本,檔名以備份發生時的時間戳記命名。

注意:本機備份會在 30 天後自動刪除。對於遠端備份,會保留每個獨立資源 (設定、擴充功能等) 的最新 20 個版本。

已同步的機器

VS Code 會追蹤同步您偏好設定的機器,並提供一個檢視來存取它們。每台機器都會根據 VS Code 類型 (Insiders 或 Stable) 及其所在平台獲得一個預設名稱。您可以隨時使用檢視中機器項目上的編輯動作來更新機器名稱。您也可以使用檢視中機器項目上的「關閉設定同步」內容選單動作來停用另一台機器上的同步。

Settings Sync machines views

您可以從命令選擇區使用「設定同步:顯示同步資料」指令開啟此檢視。

擴充功能作者

如果您是擴充功能作者,您應該確保您的擴充功能在使用者啟用設定同步時表現正常。例如,您可能不希望您的擴充功能在多台機器上顯示相同的已關閉通知或歡迎頁面。

同步機器之間的使用者全域狀態

如果您的擴充功能需要在不同機器之間保留某些使用者狀態,請使用 vscode.ExtensionContext.globalState.setKeysForSync 將該狀態提供給設定同步。在機器之間共用 UI 關閉或已檢視的旗標等狀態,可以提供更好的使用者體驗。

擴充功能功能主題中有使用 setKeysforSync 的範例。

回報問題

設定同步活動可以在「輸出 (設定同步)」檢視中監控。如果您遇到設定同步的問題,請在建立問題時包含此記錄。如果您的問題與驗證相關,也請包含「輸出 (帳戶)」檢視中的記錄。

如何刪除我的資料?

如果您想要從我們的伺服器中移除所有資料,只需透過「管理」齒輪選單下的「設定同步已開啟」選單關閉同步,並勾選方塊以清除所有雲端資料。如果您選擇重新啟用同步,將會像是您第一次登入一樣。

後續步驟

常見問題

VS Code 設定同步與「Settings Sync」擴充功能是同一回事嗎?

不是,由 Shan Khan 開發的 Settings Sync 擴充功能使用 GitHub 上的私人 Gist 在不同機器之間共用您的 VS Code 設定,與 VS Code 的內建設定同步無關。

我可以使用哪種類型的帳戶來登入設定同步?

VS Code 設定同步支援使用 Microsoft 帳戶 (例如 Outlook 或 Azure 帳戶) 或 GitHub 帳戶登入。目前不支援使用 GitHub Enterprise 帳戶登入。未來可能會支援其他驗證提供者,您可以在 issue #88309 中查看提議的驗證提供者 API。

注意:目前 VS Code 設定同步不支援使用您的 Microsoft 主權雲端帳戶。如果您希望支援此功能,請在此 GitHub 問題中告訴我們您想使用哪種 Microsoft 主權雲端。

我可以使用不同的後端或服務進行設定同步嗎?

設定同步使用專屬服務來儲存設定並協調更新。未來可能會公開服務提供者 API,以允許自訂設定同步後端。

金鑰圈問題疑難排解

注意:本節適用於 VS Code 1.80 版及更高版本。在 1.80 版中,我們由於 keytar 已被封存,因此改為採用 Electron 的 safeStorage API

注意:在本文件中,金鑰圈、金鑰環、錢包、憑證儲存庫是同義詞。

設定同步使用作業系統金鑰圈在桌面上保存驗證資訊以進行加密。在某些情況下,如果金鑰圈設定錯誤或環境無法識別,使用金鑰圈可能會失敗。

為了協助診斷問題,您可以重新啟動 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` 模組來發現和儲存金鑰環中的加密金鑰資訊。Chromium 支援多種不同的桌面環境。以下概述了一些常見的桌面環境以及在金鑰環設定錯誤時可能會有幫助的疑難排解步驟。

GNOME 或 UNITY (或類似環境)

如果您看到的錯誤是「無法在鎖定的集合中建立項目」,則您的金鑰環的 Login 金鑰環很可能已鎖定。您應該啟動作業系統的金鑰環 (Seahorse 是用於檢視金鑰環的常用圖形介面),並確保預設金鑰環 (通常稱為 Login 金鑰環) 已解鎖。這個金鑰環在您登入系統時需要解鎖。

KDE

Visual Studio Code 尚未完全支援 KDE 6。作為權宜之計:最新的 kwallet6 也可以作為 kwallet5 存取,因此您可以透過將密碼儲存設定為 kwallet5 來強制其使用 kwallet5,具體說明請參閱下方設定用於 VS Code 的金鑰環一節。

您的錢包 (即金鑰環) 可能已關閉。如果您開啟 KWalletManager,您可以查看預設的 kdewallet 是否已關閉,如果是,請務必將其開啟。

如果您使用 KDE5 或更高版本,並且在連線到 kwallet5 時遇到問題 (例如 issue #189672 中的非官方 VS Code Flatpak 使用者),您可以嘗試將金鑰環設定gnome-libsecret,因為這會使用 Secret Service API 與任何有效的金鑰環通訊。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 上開啟一個問題。這對我們支援額外的桌面設定非常重要。

您可以透過傳遞 password-store 旗標來手動告知 VS Code 要使用哪個金鑰環。我們建議的設定是,如果您尚未安裝 gnome-keyring,請先安裝它,然後使用 code --password-store="gnome-libsecret" 啟動 VS Code。

如果此解決方案對您有效,您可以透過開啟命令選擇區 (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 並執行「偏好設定:設定執行階段引數」指令,來保留 password-store 的值。這將會開啟 argv.json 檔案,您可以在其中新增設定 "password-store":"gnome-libsecret"

如果您想嘗試使用不同於 gnome-keyring 的金鑰環,以下是 password-store 的所有可能值:

  • kwallet5:用於 kwalletmanager5
  • gnome-libsecret:用於任何實作 Secret Service API 的套件 (例如 gnome-keyringkwallet5KeepassXC)。
  • (不建議) kwallet:用於舊版 kwallet
  • (不建議) basic:有關基本文字的詳細資訊,請參閱下方關於基本文字的章節

如果您的密碼儲存未自動偵測到,請查看您的設定是否在 issue #187338 中提及。如果沒有,請隨時將您的設定包含在其中,或者如果您認為您的問題與自動密碼儲存偵測無關,請附上詳細記錄,在 VS Code 上開啟一個問題

我們依賴 Chromium 的 `oscrypt` 模組來發現和儲存金鑰環中的加密金鑰資訊。Chromium 提供一個可選擇加入的備用加密策略,該策略使用基於 Chromium 原始碼中硬編碼字串的記憶體中金鑰。因此,此備用策略充其量只是混淆,僅應在您接受系統上任何程序理論上都可以解密您儲存的密碼的風險時使用。

如果您接受此風險,您可以透過開啟命令選擇區 (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 並執行「偏好設定:設定執行階段引數」指令,將 password-store 設定為 basic。這將會開啟 argv.json 檔案,您可以在其中新增設定 "password-store":"basic"

我可以在 VS Code Stable 版和 Insiders 版之間共用設定嗎?

是的。請參閱Stable 版與 Insiders 版同步一節以取得更多資訊。

請注意,這有時可能會導致資料不相容,因為 Insiders 版比 Stable 版新。在這種情況下,設定同步將會自動在 Stable 版上停用,以防止資料不一致。一旦 Stable 版的新版本發佈,您可以升級您的用戶端並開啟設定同步以繼續同步。

© . This site is unofficial and not affiliated with Microsoft.