設定同步
“設定同步”可讓您在多臺計算機之間共享 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 擴充套件是同一個東西嗎?
不是。Shan Khan 開發的 Settings Sync 擴充套件使用 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 是同義詞,均指“金鑰鏈”。
設定同步在桌面上使用作業系統的金鑰鏈進行加密來持久化身份驗證資訊。如果金鑰鏈配置不當或環境無法識別,使用金鑰鏈可能會失敗。
為幫助診斷問題,您可以使用以下標誌重新啟動 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,方法是按照下面配置 VS Code 使用的金鑰環中的說明,將密碼儲存設定為
kwallet5
。
您的錢包(即金鑰環)可能已關閉。如果您開啟 KWalletManager,您可以看到預設的 kdewallet
是否已關閉,如果是,請確保將其開啟。
如果您正在使用 KDE5 或更高版本,並且在連線到 kwallet5
時遇到問題(例如問題 #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 上提交一個問題,並附上上述的詳細日誌。這對我們支援更多的桌面配置非常重要。
(推薦)配置 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 上提交問題並附上詳細日誌。
(不推薦)配置基本文字加密
我們依賴 Chromium 的 oscrypt 模組來發現並在金鑰環中儲存加密金鑰資訊。Chromium 提供了一種可選的回退加密策略,該策略使用基於 Chromium 原始碼中硬編碼字串的記憶體金鑰。因此,這種回退策略充其量只是一種混淆,只有在您接受系統上任何程序理論上都可能解密您儲存的機密資訊的風險時才應使用。
如果您接受此風險,可以透過開啟命令面板(⇧⌘P (Windows、Linux 為 Ctrl+Shift+P))並執行“首選項:配置執行時引數”命令,將 password-store
設定為 basic
。這將開啟 argv.json
檔案,您可以在其中新增設定 "password-store":"basic"
。
我可以在 VS Code 穩定版和 Insiders 版之間共享設定嗎?
可以。請參閱同步穩定版與 Insiders 版部分以獲取更多資訊。
請注意,由於 Insiders 版比穩定版更新,這有時可能會導致資料不相容。在這種情況下,穩定版上的設定同步將自動停用,以防止資料不一致。一旦釋出了新版本的穩定版,您可以升級您的客戶端並開啟設定同步以繼續同步。