設定同步
設定同步功能可讓您跨機器共用 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 狀態
- 顯示語言
- 活動列項目
- 面板項目
- 檢視版面配置和可見性
- 最近使用的命令
- 不再顯示通知
您隨時可以透過 設定同步:設定 命令,或開啟管理齒輪選單,選取設定同步已開啟,然後選取設定同步:設定,來變更同步的內容。
衝突
在多部機器之間同步設定時,偶爾可能會發生衝突。衝突可能會在首次設定機器之間的同步時或在機器離線時設定變更時發生。發生衝突時,您會看到下列選項
- 接受本機:選取此選項會將雲端的遠端設定覆寫為您的本機設定。
- 接受遠端:選取此選項會將本機設定覆寫為雲端的遠端設定。
- 顯示衝突:選取此選項會顯示類似於原始檔控制差異編輯器的差異編輯器,您可以在其中預覽本機和遠端設定,並選擇接受本機或遠端設定,或手動解決本機設定檔中的變更,然後接受本機檔案。
切換帳戶
如果您隨時想要將您的資料同步到不同的帳戶,您可以關閉並再次開啟設定同步,並使用不同的帳戶。
同步穩定版與 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 設定同步與 Settings Sync 擴充功能相同嗎?
否,Settings Sync 擴充功能 (作者:Shan Khan) 使用 GitHub 上的私人 Gist 在不同機器之間共用您的 VS Code 設定,且與 VS Code 設定同步無關。
我可以將哪些類型的帳戶用於設定同步登入?
VS Code 設定同步支援使用 Microsoft 帳戶 (例如 Outlook 或 Azure 帳戶) 或 GitHub 帳戶登入。不支援使用 GitHub Enterprise 帳戶登入。未來可能會支援其他驗證提供者,您可以在 issue #88309 中檢閱建議的驗證提供者 API。
注意:VS Code 設定同步目前不支援使用您的 Microsoft Sovereign Cloud 帳戶。如果您希望支援此功能,請在 此 GitHub 問題中告知我們您希望使用的 Microsoft Sovereign Cloud 類型。
我可以將不同的後端或服務用於設定同步嗎?
設定同步使用專用服務來儲存設定和協調更新。未來可能會公開服務提供者 API,以允許自訂設定同步後端。
疑難排解金鑰鏈問題
注意:本節適用於 VS Code 版本 1.80 及更高版本。在 1.80 中,由於 keytar 已封存,我們改用 Electron 的 safeStorage API。
注意:金鑰鏈、金鑰環、錢包、憑證儲存區在本文件中是同義詞。
設定同步會在桌面上使用 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 模組來探索和儲存金鑰環中的加密金鑰資訊。Chromium 支援許多不同的桌面環境。以下概述了一些常見的桌面環境和疑難排解步驟,如果金鑰環設定錯誤,這些步驟可能會有所幫助。
GNOME 或 UNITY (或類似環境)
如果您看到的錯誤是「無法在鎖定的集合中建立項目」,則可能是您的金鑰環的 Login
金鑰環已鎖定。您應該啟動您的 OS 金鑰環 (Seahorse 是常用的 GUI,用於查看金鑰環),並確保預設金鑰環 (通常稱為 Login
金鑰環) 已解鎖。當您登入系統時,需要解鎖此金鑰環。
KDE
Visual Studio Code 尚不完全支援 KDE 6。作為一種變通方法:最新的 kwallet6 也可以作為 kwallet5 存取,因此您可以強制其使用 kwallet5,方法是將密碼儲存區設定為
kwallet5
,如下文 設定要與 VS Code 搭配使用的金鑰環 中所述。
您的錢包 (又名金鑰環) 可能已關閉。如果您開啟 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 上開啟問題,並附上上述詳細記錄。這對我們支援其他桌面設定非常重要。
(建議) 設定要與 VS Code 搭配使用的金鑰環
您可以手動告知 VS Code 要使用的金鑰環,方法是傳遞 password-store
旗標。我們建議的設定是先安裝 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 上開啟問題,並附上詳細記錄。
(不建議) 設定基本文字加密
我們仰賴 Chromium 的 oscrypt 模組來探索和儲存金鑰環中的加密金鑰資訊。Chromium 提供了一種選擇加入的回退加密策略,該策略使用基於字串的記憶體內金鑰,該字串在 Chromium 原始碼中是硬式編碼的。因此,這種回退策略充其量只是一種混淆,只有在您可以接受系統上的任何程序理論上都可以解密您儲存的機密的風險時,才應使用它。
如果您接受此風險,您可以透過開啟命令選擇區 (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 並執行 喜好設定:設定執行階段引數 命令,將 password-store
設定為 basic
。這將會開啟 argv.json
檔案,您可以在其中新增設定 "password-store":"basic"
。
我可以在 VS Code 穩定版和 Insiders 版之間共用設定嗎?
可以。如需更多資訊,請參閱 同步穩定版與 Insiders 版 章節。
請注意,這有時可能會導致資料不相容,因為 Insiders 組建比穩定版組建新。在這種情況下,設定同步將在穩定版上自動停用,以防止資料不一致。一旦發布較新版本的穩定版組建,您可以升級您的用戶端並開啟設定同步以繼續同步。