設定同步
設定同步可讓您跨機器共用 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 狀態
- 顯示語言
- 活動列項目
- 面板項目
- 檢視版面配置和可見性
- 最近使用的命令
- 不再顯示通知
您隨時可以透過「設定同步:設定」命令,或開啟「管理」齒輪選單,選取「設定同步已開啟」,然後選取「設定同步:設定」,來變更同步的內容。
衝突
在多部機器之間同步設定時,偶爾可能會發生衝突。當第一次在機器之間設定同步,或在機器離線時設定變更時,可能會發生衝突。發生衝突時,您將會看到下列選項
- 接受本機:選取此選項會將雲端中的遠端設定覆寫為您的本機設定。
- 接受遠端:選取此選項會將本機設定覆寫為來自雲端的遠端設定。
- 顯示衝突:選取此選項會顯示類似於原始檔控制差異編輯器的差異編輯器,您可以在其中預覽本機和遠端設定,並選擇接受本機或遠端,或手動解決本機設定檔中的變更,然後接受本機檔案。
切換帳戶
如果您隨時想要將您的資料同步到不同的帳戶,您可以關閉並再次開啟「設定同步」,並使用不同的帳戶。
同步 Stable 與 Insiders 版本
預設情況下,VS Code Stable 和 Insiders 組建使用不同的設定同步服務,因此不會共用設定。您可以透過在開啟「設定同步」時選取 Stable 同步服務,將您的 Insiders 與 Stable 同步。此選項僅適用於 VS Code Insiders。
注意:由於 Insiders 組建比 Stable 組建新,因此同步它們有時可能會導致資料不相容。在這種情況下,設定同步將會在 stable 上自動停用,以防止資料不一致。一旦發佈較新版本的 Stable 組建,您可以升級您的 stable 用戶端並開啟同步以繼續同步。
還原資料
VS Code 在同步時始終儲存本機和遠端偏好設定備份,並提供檢視來存取這些備份。如果發生任何問題,您可以從這些檢視還原您的資料。
您可以使用命令面板中的「設定同步:顯示已同步資料」命令來開啟這些檢視。「本機同步」活動檢視預設為隱藏,您可以使用「檢視」子選單 (位於「設定同步」檢視溢位動作下) 來啟用它。
可以透過「設定同步:開啟本機備份資料夾」命令來存取磁碟中的本機備份資料夾。資料夾會依偏好設定類型組織,並包含 JSON 檔案的版本,並以備份發生的時間戳記命名。
注意:本機備份會在 30 天後自動刪除。對於遠端備份,每個個別資源 (設定、擴充功能等) 的最新 20 個版本會被保留。
已同步的機器
VS Code 會追蹤同步您的偏好設定的機器,並提供檢視來存取它們。每部機器都會根據 VS Code 的類型 (Insiders 或 Stable) 和其所在的平台,獲得預設名稱。您隨時可以使用檢視中機器項目上提供的編輯動作來更新機器名稱。您也可以使用檢視中機器項目上的「關閉設定同步」內容選單動作,在另一部機器上停用同步。
您可以使用命令面板中的「設定同步:顯示已同步資料」命令來開啟此檢視。
擴充功能作者
如果您是擴充功能作者,您應該確保您的擴充功能在使用者啟用「設定同步」時行為適當。例如,您可能不希望您的擴充功能在多部機器上顯示相同的已關閉通知或歡迎頁面。
在機器之間同步使用者全域狀態
如果您的擴充功能需要在不同機器之間保留某些使用者狀態,請使用 vscode.ExtensionContext.globalState.setKeysForSync
將狀態提供給「設定同步」。跨機器共用使用者介面關閉或檢視旗標等狀態,可以提供更好的使用者體驗。
在擴充功能功能主題中,有一個使用 setKeysforSync
的範例。
回報問題
可以在「記錄 (設定同步)」輸出檢視中監控「設定同步」活動。如果您遇到「設定同步」的問題,請在建立問題時包含此記錄。如果您的問題與驗證有關,也請包含來自「帳戶」輸出檢視的記錄。
如何刪除我的資料?
如果您想要從我們的伺服器移除所有資料,只需透過「管理」齒輪選單下可用的「設定同步已開啟」選單關閉同步,並選取核取方塊以清除所有雲端資料。如果您選擇重新啟用同步,就如同您第一次登入一樣。
後續步驟
- 使用者和工作區設定 - 瞭解如何透過使用者和工作區設定,將 VS Code 設定為您的偏好設定。
常見問題
VS Code 設定同步與「設定同步」擴充功能相同嗎?
不,由 Shan Khan 開發的 Settings Sync 擴充功能使用 GitHub 上的私人 Gist 來跨不同機器共用您的 VS Code 設定,並且與 VS Code 設定同步無關。
我可以使用哪些類型的帳戶進行設定同步登入?
VS Code 設定同步支援使用 Microsoft 帳戶 (例如 Outlook 或 Azure 帳戶) 或 GitHub 帳戶登入。不支援使用 GitHub Enterprise 帳戶登入。未來可能會支援其他驗證提供者,您可以檢閱 issue #88309 中建議的驗證提供者 API。
注意:VS Code 設定同步目前不支援使用您的 Microsoft Sovereign Cloud 帳戶。如果您想要使用此功能,請在此 GitHub issue 中告訴我們您想要使用哪種 Microsoft Sovereign Cloud。
我可以使用不同的後端或服務進行設定同步嗎?
設定同步使用專用服務來儲存設定並協調更新。未來可能會公開服務提供者 API,以允許自訂設定同步後端。
疑難排解金鑰鏈問題
注意:本節適用於 VS Code 版本 1.80 和更高版本。在 1.80 中,我們移除了 keytar (由於其已封存),改用 Electron 的 safeStorage API。
注意:金鑰鏈、keyring、錢包、認證儲存區在本文件中是同義詞。
設定同步會使用 OS 金鑰鏈進行加密,將驗證資訊持久儲存在桌面上。在某些情況下,如果金鑰鏈設定錯誤或環境無法辨識,則使用金鑰鏈可能會失敗。
為了協助診斷問題,您可以使用下列旗標重新啟動 VS Code 以產生詳細記錄
code --verbose --vmodule="*/components/os_crypt/*=1"
Windows 和 macOS
目前,Windows 或 macOS 上沒有已知的設定問題,但是,如果您懷疑有問題,您可以使用上述詳細記錄在 VS Code 上開啟 issue。這對於我們支援其他桌面設定非常重要。
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
金鑰鏈已鎖定。您應該啟動您 OS 的金鑰鏈 (Seahorse 是常用的 GUI,用於查看金鑰鏈),並確保預設金鑰鏈 (通常稱為 Login
金鑰鏈) 已解鎖。當您登入系統時,需要解鎖此金鑰鏈。
KDE
Visual Studio Code 尚未完全支援 KDE 6。作為一種因應措施:最新的 kwallet6 也可以作為 kwallet5 存取,因此您可以強制它使用 kwallet5,方法是在設定要與 VS Code 搭配使用的金鑰鏈中,如下所述將密碼儲存區設定為
kwallet5
。
您的錢包 (又稱金鑰鏈) 可能已關閉。如果您開啟 KWalletManager,您可以查看預設 kdewallet
是否已關閉,如果是,請確保您已開啟它。
如果您使用 KDE5 或更高版本,並且在連線到 kwallet5
時遇到問題 (例如非官方 VS Code Flatpak 的使用者在 issue #189672 中遇到的問題),您可以嘗試將金鑰鏈設定為 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 上開啟 issue。這對於我們支援其他桌面設定非常重要。
(建議) 設定要與 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-keyring
、kwallet5
、KeepassXC
)。- (不建議)
kwallet
:用於舊版kwallet
。 - (不建議)
basic
:如需更多詳細資訊,請參閱下方關於基本文字的章節。
如果您遇到任何問題,請隨時使用詳細記錄在 VS Code 上開啟 issue。
(不建議) 設定基本文字加密
我們仰賴 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 組建,您可以升級您的用戶端並開啟設定同步以繼續同步。